Всем привет! В процессе обработки запроса 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 кода) происходит лишь косметическое преобразование файла(удаление лишних строк, заголовки и тд)