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

Страницы: 1
PowerQuery - подстановка значения по поиску в диапазоне дат - как оптимизировать
 
AlienSx, Да, верно. Поправил.

Перенес все в полноценный файл. Работает отлично!
Спасибо огромное!

Замер скоростей теперь уперся в скорость выгрузки нескольких десятков запросов из API и в одновременной обработке нескольких запросов PowerQuery.
Но однозначно стало быстрее и теперь вместо 3 гигабайт всего 10 мегабайт из внешнего файла подгружается.
Изменено: PrALX - 13.05.2024 15:20:57
PowerQuery - подстановка значения по поиску в диапазоне дат - как оптимизировать
 
AlienSx,

Я как раз думал, что Чисто теоретически я могу формировать список артикулов, которые есть в выгрузке. Смотреть те, по которым нет себестоимости. И добавлять в таблицу себестоимости со значением null и датой 2000 года.
Значит пойду по этому пути
PowerQuery - подстановка значения по поиску в диапазоне дат - как оптимизировать
 
AlienSx, Да, поле продавец есть всегда где есть какие либо данные по заказам.

Я больше думаю вот об этом комментарии "Только надо убедиться, что для каждого артикула в таблице продаж найдется себестоимость в таблице с себестоимостями и с датой <= дате продажи"

Проблема может быть именно тут ибо тут чистый человеческий фактор.
Причем она 100% будет - может не быть артикула в таблице. Если артикул будет - то первая строчка всегда заполняется как 2010 год - то есть даже есть себестоимость будет null или 0 - это не страшно. Хотя конечно тоже возможна ситуация, в которой будет только строчка с датой позже даты продаж.

Можно ли сделать Fill.down, но ограничить его только рамками номера артикула? Если артикул меняется, а данных нет - то null.
Изменено: PrALX - 13.05.2024 14:09:49
PowerQuery - подстановка значения по поиску в диапазоне дат - как оптимизировать
 
AlienSx,

Разобрался. Собственно оно как раз и закрывает вообще в принципе потребность в каких либо расчетах в таблице себестоимости.
Очень элегантно. Спасибо!

Смутил только фильтр на последнем шаге. Такой синтаксис дает какие-то преимущества против стандартного SelectRows(down, each ([Продавец] <> null))?

Осталось продумать и прописать возможные ошибки, хотя вроде тут или значение или null будет если я правильно вижу.
PowerQuery - подстановка значения по поиску в диапазоне дат - как оптимизировать
 
AlienSx, Спасибо. Очень частно не хватает именно правильного названия того, что ты ищешь, чтобы найти решение )) Как я только не формулировал.

А проблема судя по всему реально в другом месте - в запросе SKU Costs.
Очень долго считаются даты окончания действия цены.
Буду переписывать сначала его.

или вопрос:

Если в списке себестоимости есть только дата начала действия, но нет даты конца (по умолчанию считаем что концом действия цены является новая дата начала) - возможно ли просто организовать подстановку?
Изменено: PrALX - 13.05.2024 12:56:25
PowerQuery - подстановка значения по поиску в диапазоне дат - как оптимизировать
 
surkenny, Файлы анонимизировал. Оставил только часть таблицы с продажами, чтобы влезть в лимит.

[USER]voler83[/USER], Да, вытаскивается запись, потом раскрывается.

Попробовал сразу вытаскивать нужный столбец в нулевой строке через {0}[Себестоимость] в конце - вообще не ускоряет.

Кстати, есть ощущение, что проблема на самом деле кроется в запросе SKU Costs, который разбивает себестоимость по периодам. попробовал его просто выгрузить в таблицу на лист - выгружался несколько минут.  
Изменено: PrALX - 13.05.2024 12:41:38
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
Проблема запуска макросов из-под Office365 в книге расположенной в папке с общим доступом OneDrive
 
Можете вообще убрать красное уведомление, если контролируете, какие файлы открываете через создание ключа реестра.
Вот команда для CMD:
Код
REG ADD HKCU\SOFTWARE\Microsoft\Office\16.0\Excel\Security /v BlockContentExecutionFromInternet /t REG_DWORD /d 0
Страницы: 1
Наверх