Запрос мощности как суммировать ячейку значений, разделенных запятой

#powerquery

Вопрос:

Как я могу повернуть это

Персонал Часов
Эми 5,10,20
Ben 6
Чарльз 10,1

в это с помощью POWER QUERY?

Персонал Часов
Эми 35
Ben 6
Чарльз 11

Ответ №1:

Шаги:

  1. Преобразуйте исходную таблицу в таблицу Excel
  2. Получите данные из этой таблицы
  3. Разделите столбец разделителем (запятой) на строки
  4. Измените тип столбца на число
  5. Группируйте строки и суммируйте столбец «Часы»

Код M:

 let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    DivideByDelimiter = Table.ExpandListColumn(Table.TransformColumns(Table.TransformColumnTypes(Source, {{"Hours", type text}}, "es-CO"), {{"Hours", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Hours"),
    ChangeType = Table.TransformColumnTypes(DivideByDelimiter,{{"Hours", type number}}),
    GroupRows = Table.Group(ChangeType, {"Staff"}, {{"Sum", each List.Sum([Hours]), type nullable number}})
in
    GroupRows
 

Дайте мне знать, если это сработает

Ответ №2:

Другой способ сделать это

  1. щелкните правой кнопкой мыши столбец «Часы» и замените значения, заменив запятую на
  2. щелкните правой кнопкой мыши столбец «Часы» и преобразуйте нижний регистр
  3. В строке формул замените полученную формулу так, чтобы она заканчивалась на

    , каждое Выражение.Оценить(_), номер типа}})

    вместо

    , Текст.Ниже, введите текст}})

Полный пример кода

 let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Staff", type text}, {"Hours", type text}}),
#"Replaced Value" = Table.ReplaceValue(#"Changed Type",","," ",Replacer.ReplaceText,{"Hours"}),
#"Lowercased Text" = Table.TransformColumns(#"Replaced Value",{{"Hours", each Expression.Evaluate(_), type number}})
in #"Lowercased Text"