Я пытаюсь решить следующий запрос в Power Query, но после 2-3 попыток он еще не решен. Надеюсь, кто-то сможет помочь мне в этом. В таблице ниже я пытаюсь получить ответ в формате “да/нет” для анализа последовательной выставки счетов клиенту по его единственному заказу.
Клиент Название клиента Номер счета Дата Номер заказа Количества продаж Номер коробок
8512673 ABC Co. 7330538466 03/07/2024 5226538466 10 1
8512673 ABC Co. 7330540349 06/07/2024 5226540349 30 3
8512673 ABC Co. 7330541074 08/07/2024 5226541074 8 1
8512673 ABC Co. 7330542083 09/07/2024 5226541074 20 2
8512673 ABC Co. 7330542981 10/07/2024 5226541074 30 3
8512673 ABC Co. 7330543221 10/07/2024 5226543221 110 11
8512673 ABC Co. 7330544139 11/07/2024 5226544139 20 2
8512673 ABC Co. 7330545028 12/07/2024 5226544139 8 2
8512673 ABC Co. 7330545054 12/07/2024 5226545054 60 5
8512673 ABC Co. 7330546880 15/07/2024 5226546880 641.8 38
8512682 XYZ Co. 7330539099 04/07/2024 5226539099 9.6 2
8512682 XYZ Co. 7330539105 04/07/2024 5226539099 60 5
8512682 XYZ Co. 7330544844 12/07/2024 5226544844 60 5
8512682 XYZ Co. 7330556070 25/07/2024 5226556070 66 10
Нужен ответ в новом столбце с данными “Да/Нет” с анализом запроса в таблице выше…
Вот ответ как пример.
Ответ
Для решения этой задачи в Power Query необходимо создать новый столбец, который проверит последовательность дат для каждого клиента и его заказов. Подход заключается в следующем:
-
Загрузите данные в Power Query: Сначала импортируйте вашу таблицу с данными в Power Query.
-
Сортировка данных: Сначала отсортируйте данные по клиенту и дате для того, чтобы упорядочить записи.
-
Группировка по клиентам: Создайте новую таблицу, сгруппировав данные по «Customer» и «Sales Order».
-
Добавление нового столбца: Теперь добавим новый столбец, который будет проверять последовательность дат для каждого клиента и его заказа. Для этого можно использовать несколько шагов:
a. Инициализация переменной: Создайте переменную для хранения предыдущей даты.
b. Проверка последовательности: Используйте оператор, который сравнивает текущую дату с предыдущей датой и проверяет, идет ли она в порядке возрастания.
Пример кода M для Power Query:
let
// Загрузка данных
Source = Excel.CurrentWorkbook(){[Name="YourTableName"]}[Content()],
// Преобразование типов
ChangedType = Table.TransformColumnTypes(Source,{{"Date", type date}}),
// Сортировка по Customer и Date
SortedTable = Table.Sort(ChangedType, {{"Customer", Order.Ascending}, {"Date", Order.Ascending}}),
// Добавление столбца с предыдущей датой
AddPreviousDate = Table.AddColumn(SortedTable, "Previous Date", each if [Customer] = Table.SelectColumns(Table.FirstN(SortedTable, [Index]), "Customer"){0} then null else Table.SelectColumns(Table.FirstN(SortedTable, [Index]), "Date"){0}),
// Проверка последовательности
AddSequentialColumn = Table.AddColumn(AddPreviousDate, "Is Sequential", each if [Previous Date] = null then "Yes" else if [Date] >= [Previous Date] then "Yes" else "No")
in
AddSequentialColumn
Объяснение шагов:
- Source: Загрузите данные из таблицы Excel.
- ChangedType: Преобразуйте тип столбца «Date» в тип даты.
- SortedTable: Отсортируйте таблицу по заказчику и дате.
- AddPreviousDate: Добавьте столбец, который будет хранить дату предыдущего заказа для данного клиента.
- AddSequentialColumn: Создайте новый столбец, который будет проверять, была ли текущая дата больше или равна предыдущей.
Результат:
Новый столбец «Is Sequential» будет содержать значение «Yes» или «No» для каждого заказа в зависимости от последовательности их выставления. Это позволит вам быстро проанализировать, были ли выставлены счета последовательно для каждого клиента.
Заключение:
После выполнения этих шагов вы получите требуемый результат. Не забудьте адаптировать код под ваши конкретные данные и имена столбцов.