Excel VBA Power Query - Как создать запрос, который динамически возвращает только строки продажи за последнюю минуту? - PullRequest
1 голос
/ 21 сентября 2019

У меня есть CSV-файл, разделенный запятыми, со следующей структурой:

Заголовки столбцов:

ProdDate,   ProdTime, OLEDATETIME, ProdBuyPrice, ProdSellPrice, ProdBoughtQTY, ProdSoldQTY, etc
09/21/2019, 13:54:22, 43729.5801,  12.45,        12.61,         8,          9, etc.

Этот файл CSV актуализируется много раз в минуту (от 5 до 70 раз в минуту)Это означает, что он может иметь от 5 до 70 строк в последнюю минуту продаж, поэтому я не могу зафиксировать произвольное фиксированное число в «mantain первых строках», чтобы вернуть только те строки, которые поступили в последнюю минуту, и я никогда не делал этого раньше сPower Query.Поэтому мне нужен готовый рецепт, чтобы сделать это, но мой поиск в Google ничего не дал до сих пор.

Есть предложения?

1 Ответ

0 голосов
/ 22 сентября 2019

Это пример того, как вы можете определить динамический номер строки.В этом примере у нас есть таблица, показывающая продажи фруктов по магазинам.Мы хотим создать запрос, который возвращает наибольшее количество проданных бананов.

Так выглядит наша таблица данных.

enter image description here

Шаг 1 - Добавить столбец индекса, начинающийся с 1. Это назначает номера строк. Добавить столбец> Столбец индекса> От 1

Шаг 2 - Фильтровать и сортировать данные.

Удалите все ненужные столбцы.

Отфильтруйте столбец Элемент для бананов.

Сортируйте столбец Значения в порядке убывания.

Вправощелкните по первому значению в столбце Index и выберите Drill-Down.

enter image description here

РЕЗУЛЬТАТ Теперь у вас есть динамическая строка #.Вместо этого вы можете выбрать само значение, чтобы вернуть продажи вместо индекса.Чтобы применить это к другим сценариям, просто продолжайте фильтровать и сортировать, пока не получите нужный результат.

enter image description here

Это способ фильтрации.столбец времени для записей, происходящих за последнюю минуту.

let
    Source = Excel.CurrentWorkbook(){[Name="t_DatesAndTimes"]}[Content],
    ChangedTypes_ColData = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Time", type time}}),
    AddCol_DateAndTime = Table.AddColumn(ChangedTypes_ColData, "Date and Time", each [Date] & [Time], type datetime),
    LatestTime_ofReport_MinusOneMinute = List.Max(AddCol_DateAndTime[Date and Time])-#duration(0,0,1,0),
    FilterRows_KeepTimesInLastMinute = Table.SelectRows(AddCol_DateAndTime, each [Date and Time] >= LatestTime_ofReport_MinusOneMinute)
in
    FilterRows_KeepTimesInLastMinute

Таблица данных, требующая фильтрации

Table to filter based on time

Таблица отфильтрована по времени в последнюю минуту, указанное в отчете.

Filtered Table

...