Power Query: после объединения двух таблиц получилось что-то странное

У меня есть столбец, в котором каждое значение повторяется дважды. И у каждого значения есть своя доля (входные данные). Мне нужно вычислить среднюю долю среди первого вхождения значений в первом столбце и среднюю для второго вхождения для каждой подгруппы (подгруппы различаются по первой части имени: например, входной автомобиль 1, автомобиль 1, автомобиль 2, машина 2, велосипед 1, велосипед 1, велосипед 2, велосипед 2 и т. д. (слово + число показано на рисунке. Для этого я создал индекс вхождения. Однако при объединении). данные из новой таблицы с индексами и старой таблицы с неделями и долями, получаю что-то странное: каждое значение из первого столбца теперь повторяется не два, а четыре раза. Как это исправить? Также стоит отметить, что мне нужно среднее значение не по всему столбцу, а по каждой подгруппе столбца.

Я создал индекс вхождений, как предложено здесь: ссылка Щелкните правой кнопкой мыши, сгруппируйте по, сохраните имя, используйте операцию «Все строки». Измените код в окне с

= Table.Group(#"Измененный тип", {"Идентификатор группы"}, {{"Count",each , type table ....

к = Table.Group(#"Измененный тип", {"Идентификатор группы"}, {{"Count", каждый Table.AddIndexColumn(_, "Index", 0, 1, Int64.Type), таблица типов}})


51
2

Ответы:

Решено

вы можете попробовать это в PQ, чтобы создать столбец индекса и столбец нового имени.

let
    Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Share", type number}}),
    Custom1 = Table.Group(#"Changed Type", {"Name"}, {{"Count", each Table.AddIndexColumn(_, "Index", 1, 1, Int64.Type), type table}}),
    #"Expanded Count" = Table.ExpandTableColumn(Custom1, "Count", {"Share", "Index"}, {"Share", "Index"}),
    #"Added Custom" = Table.AddColumn(#"Expanded Count", "Name2", each Text.Remove([Name],{"0".."9"}))
in
    #"Added Custom"

тогда вы можете создать вычисляемый столбец в PP

=CALCULATE(AVERAGE([Share]),ALLEXCEPT(Table1_1,Table1_1[Name2],Table1_1[Index]))


Я попытался добавить столбец в образец данных

let
    Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"share", type number}}),
    Custom1 = Table.Group(#"Changed Type", {"Name"}, {{"Count", each Table.AddIndexColumn(_, "Index", 1, 1, Int64.Type), type table}}),
    #"Expanded Count" = Table.ExpandTableColumn(Custom1, "Count", {"column", "share", "Index"}, {"column", "share", "Index"})
in
    #"Expanded Count"


Вы можете сделать все это сразу в powerquery, сохранив любые дополнительные столбцы.

let Source = Excel.CurrentWorkbook(){[Name = "Table4"]}[Content],
#"Added Index" = Table.AddIndexColumn(Source, "Index2", 0, 1, Int64.Type), //for resorting at end can be removed
#"Inserted Modulo" = Table.AddColumn(#"Added Index", "Index", each Number.Mod([Index2], 2), type number),
#"Added Custom" = Table.AddColumn(#"Inserted Modulo", "Prefix", each Text.BeforeDelimiter([Name], " ")),
#"Grouped Rows" = Table.Group(#"Added Custom", {"Index", "Prefix"}, {{"Average Share", each List.Average([Share]), type nullable number}, {"data", each _, type table}}),
ColumnsToExpand  =List.RemoveItems(List.Distinct(List.Combine(List.Transform(Table.Column(#"Grouped Rows", "data"), each if _ is table then Table.ColumnNames(_) else {}))),Table.ColumnNames(#"Grouped Rows")),
#"Expanded data" = Table.ExpandTableColumn(   #"Grouped Rows", "data",ColumnsToExpand,ColumnsToExpand),
#"Sorted Rows" = Table.Buffer(Table.Sort(#"Expanded data",{{"Index2", Order.Ascending}})), //resorts, can be removed
#"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Index2", "Prefix"})
in #"Removed Columns"