#powerbi #powerquery
Вопрос:
У меня есть специальная таблица дат.
Мне требуется создать идентификатор периода для каждого периода.
Создание индекса не решает проблему, так как он не ранжирует числа по периоду.
Чтобы дать вам пример моих данных и каковы мои ожидаемые результаты, смотрите здесь
Ниже приведены примерные данные:
id MonthInYear
----------- -----------
1 20180100
2 20180100
3 20180100
4 20180100
5 20180100
6 20180200
7 20180200
8 20180200
9 20180200
10 20180200
11 20180200
12 20180200
13 20180200
14 20180300
15 20180300
16 20180300
17 20180300
18 20180300
19 20180300
20 20180300
21 20180300
22 20180300
23 20180300
Скриншот моих требуемых результатов:
Как мне создать идентификатор ранжированного периода в соответствии с ожидаемыми результатами, указанными выше в Power Query?
Ответ №1:
Пусть ваше имя таблицы-base_table, а теперь создайте новую таблицу base_table_date_id, используя приведенный ниже код-
let
Source = base_table,
#"Changed Type" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"MonthInYear", Int64.Type}}),
#"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"id"}),
#"Removed Duplicates" = Table.Distinct(#"Removed Columns"),
#"Sorted Rows" = Table.Sort(#"Removed Duplicates",{{"MonthInYear", Order.Ascending}}),
#"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "Index", 1, 1, Int64.Type)
in
#"Added Index"
Наконец, объедините обе таблицы base_table и base_table_date_id в новую таблицу, используя столбец MonthInYear. Новый код таблицы будет выглядеть следующим образом-
let
Source = Table.NestedJoin(base_table, {"MonthInYear"}, base_table_date_id, {"MonthInYear"}, "base_table_date_id", JoinKind.LeftOuter),
#"Expanded base_table_date_id" = Table.ExpandTableColumn(Source, "base_table_date_id", {"Index"}, {"base_table_date_id.Index"})
in
#"Expanded base_table_date_id"
Ее конечный результат-