Преобразование столбца в строку ячеек Power Query

Мне нужно уместить все значения столбца в Power Query в строку из 1 ячейки, разделенную запятыми, как в примере ниже:

введите здесь описание изображения

Для этого у меня есть следующий фрагмент кода:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Transposed Table" = Table.Transpose(Source),
    #"Merged Columns" = Table.CombineColumns(#"Transposed Table",{"Column1", "Column2", "Column3"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged"),
    #"KeepString" = #"Merged Columns"[Merged]{0}
in
    #"KeepString"

Проблема с этим кодом в том, что он предполагает, что всегда будет 3 столбца, что не всегда так. Как я могу объединить все столбцы (независимо от того, сколько их) в один?


person Victor    schedule 13.10.2015    source источник


Ответы (2)


Вы можете сделать это с помощью List.Accumulate:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    KeepString = List.Accumulate(Source[User], "", (state, current) => if state = "" then current else state & "," & current)
in
    KeepString

Вы также можете использовать Table.ColumnNames, чтобы получить список всех имен столбцов. Вы можете передать это в Table.CombineColumns, так что ваше модифицированное решение будет:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Transposed Table" = Table.Transpose(Source),
    #"Merged Columns" = Table.CombineColumns(#"Transposed Table", Table.ColumnNames(#"Transposed Table"),Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged"),
    #"KeepString" = #"Merged Columns"[Merged]{0}
in
    #"KeepString"
person Alejandro Lopez-Lago - MSFT    schedule 13.10.2015
comment
Спасибо за это, это именно то, что я искал! :) - person Victor; 13.10.2015

Вы также можете использовать более короткий код, например:

let
    Source=Excel.CurrentWorkbook( {[Name="Table1"]}[Content],
    Result = Text.Combine(Source[User], ",")
in
    Result
person Gil Raviv    schedule 20.10.2015