Всем привет! В процессе обработки запроса PQ происходит неоднократное обращение к источнику данных, а так как объем данных достаточно большой, то обработка запроса затягивается на десятки минут, а то и часы. Вопрос таков: как избежать повторного обращения к источнику данных, чтоб сократить время обработки запроса? Ниже привожу код конкретного запроса:
При обработке данного запроса обращение к источнику происходит 2 раза.
Образец файла источника данных также прикрепляю. При вызове настраиваемой функции (строка 4 кода) происходит лишь косметическое преобразование файла(удаление лишних строк, заголовки и тд)
Код |
---|
let Источник = Folder.Files("X:\Отдел аналитики\Внутренние данные\Выгрузки\Месяц_Счет_Бренд\Корма для животных"), #"Отфильтрованные скрытые файлы" = Table.SelectRows(Источник, each [Attributes]?[Hidden]? <> true), #"Вызвать настраиваемую функцию" = Table.AddColumn(#"Отфильтрованные скрытые файлы", "Преобразовать файл из 2018", each #"Преобразовать файл из 2018"([Content])), #"Переименованные столбцы" = Table.RenameColumns(#"Вызвать настраиваемую функцию", {"Name", "Source.Name"}), #"Другие удаленные столбцы" = Table.SelectColumns(#"Переименованные столбцы", {"Source.Name", "Преобразовать файл из 2018"}), #"Замененное значение" = Table.ReplaceValue(#"Другие удаленные столбцы",".xlsx","",Replacer.ReplaceText,{"Source.Name"}), #"Проанализированная дата" = Table.TransformColumns(#"Замененное значение",{{"Source.Name", each Date.From(DateTimeZone.From(_)), type date}}), #"Переименованные столбцы1" = Table.RenameColumns(#"Проанализированная дата",{{"Source.Name", "Дата"}}), #"Строки с примененным фильтром" = Table.SelectRows(#"Переименованные столбцы1", each [Дата] >= НовыйПериодС and [Дата] <= НовыйПериодПо), #"Развернутый элемент Преобразовать файл из 2018" = Table.ExpandTableColumn(#"Строки с примененным фильтром", "Преобразовать файл из 2018", {"Счет", "Категория", "Группа", "Подгруппа", "Бренд", "ТО"}, {"Счет", "Категория", "Группа", "Подгруппа", "Бренд", "ТО"}), #"Строки с примененным фильтром1" = Table.SelectRows(#"Развернутый элемент Преобразовать файл из 2018", each [ТО] <> null and [ТО] <> "" and [ТО] > 0), #"Сгруппированные строки" = Table.Group(#"Строки с примененным фильтром1", {"Счет", "Группа", "Подгруппа", "Бренд"}, {{"ТО", each List.Sum([ТО]), type number}}), #"Объединенные запросы" = Table.NestedJoin(#"Сгруппированные строки",{"Группа", "Подгруппа"},ОтборБренда,{"Группа", "Подгруппа"},"ОтборБренда",JoinKind.LeftOuter), #"Развернутый элемент ОтборБренда" = Table.ExpandTableColumn(#"Объединенные запросы", "ОтборБренда", {"Подгруппа"}, {"ОтборБренда.Подгруппа"}), #"Строки с примененным фильтром2" = Table.SelectRows(#"Развернутый элемент ОтборБренда", each [ОтборБренда.Подгруппа] <> null and [ОтборБренда.Подгруппа] <> ""), #"Объединенные запросы1" = Table.NestedJoin(#"Строки с примененным фильтром2",{"Группа", "Подгруппа", "Бренд"},ОтборБренда,{"Группа", "Подгруппа", "Бренд"},"ОтборБренда",JoinKind.LeftOuter), #"Развернутый элемент ОтборБренда1" = Table.ExpandTableColumn(#"Объединенные запросы1", "ОтборБренда", {"Бренд"}, {"Бренд отбора"}), #"Условный столбец добавлен" = Table.AddColumn(#"Развернутый элемент ОтборБренда1", "Пользовательская", each if [Бренд отбора] = null then "Прочие бренды" else "Бренд отбора"), #"Сгруппированные строки1" = Table.Group(#"Условный столбец добавлен", {"Счет", "Пользовательская"}, {{"ТО", each List.Sum([ТО]), type number}}), #"Сведенный столбец" = Table.Pivot(#"Сгруппированные строки1", List.Distinct(#"Сгруппированные строки1"[Пользовательская]), "Пользовательская", "ТО", List.Sum), #"Условный столбец добавлен1" = Table.AddColumn(#"Сведенный столбец", "Категория покупателя", each if [Бренд отбора] = null then "Не покупал бренд" else if [Прочие бренды] = null or [Бренд отбора]/([Бренд отбора]+[Прочие бренды]) >= ПроцентЛояльности then "Лояльный покупатель" else "Нелояльный покупатель"), #"Переименованные столбцы2" = Table.RenameColumns(#"Условный столбец добавлен1",{{"Прочие бренды", "Прочие бренды (новый)"}, {"Бренд отбора", "Бренд отбора (новый)"}, {"Категория покупателя", "Новый период"}}) in #"Переименованные столбцы2" |
Образец файла источника данных также прикрепляю. При вызове настраиваемой функции (строка 4 кода) происходит лишь косметическое преобразование файла(удаление лишних строк, заголовки и тд)