Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
PowerQuery - подстановка значения по поиску в диапазоне дат - как оптимизировать
 
Добрый день!

Есть задача в таблицу с продажами подставить себестоимость.

Есть таблица с себестоимостью вида

ЦИФРОВОЙ АРТИКУЛ - СЕБЕСТОИМОСТЬ - ДАТА ДЕЙСТВИЯ С - ДАТА ДЕЙСТВИЯ ПО
(Внутренний артикул - Cебестоимость - ValidFrom - ValidTo)

В этой таблице около 5000 строк, она находится в отдельном файле.

Есть таблица с продажами в которой соответственно один из столбцов - ЦИФРОВОЙ АРТИКУЛ, а другой - ДАТА ЗАКАЗА.
(да, я знаю, что нужна дата закупки для подстановки, но таких данных нет). В этой таблице около 100 000 строк.

Соответственно нужно себестоимость из первого файла подставить к каждой строчке второго файла по условию вхождения даты продажи в диапазон дат действия.

Я нашел решение на форумах, которое в целом довольно успешно работает.
Код
    #"Add prices" = Table.AddColumn(#"Removed Columns", "Price", 
                    (S)=> Table.SelectRows(Costs, (P) => P[#"Внутренний артикул"]=S[#"Внутренний артикул"] 
                    and P[ValidFrom]<=S[Дата заказа] and P[ValidTo]>S[Дата заказа])),
Таблица Costs - это и есть себестоимость из другого файла и перед этой строчкой я ее буферизирую
Код
Costs = Table.Buffer(#"SKU Costs"),
#SKU Costs - это отдельный запрос, который открывает файл, достает оттуда таблицу и удаляет пустые строки.

Однако, выполнение этого скрипта ну ООООЧЕНЬ медленное, а в статусе я вижу такое (см скриншот):

хххх MB from <внешний файл>

и "прокачать" он так может ни один гигабайт.

Это какая-то особенность PQ: почему он игнорирует буферизацию и все равно обращается к внешнему файлу? И откуда вообще такие дикие объемы данных?

И есть ли способ как-то оптимизировать скрипт?
Изменено: PrALX - 13.05.2024 10:26:38
Страницы: 1
Наверх