按第 1 列的值对行进行分组,同时保留第 2 列的值

按第 1 列的值对行进行分组,同时保留第 2 列的值

举个例子,我想转换一个表:

Tenant  vrf
Ten1    vrf1
Ten1    vrf2
Ten2    vrf4
Ten2    vrf10

变成类似这样:

Ten1  ten2
Vrf1  vrf4
Vrf2  vrf10

我在 powerBi 中使用了这个表,我想转换它并将其作为 excel 中的源查询。提前谢谢您

答案1

为了创建所需的输出,您可以进行无聚合的 Pivot。

为了做到这一点而不导致错误,您可以添加一个索引列,该索引列根据租户从零增加到 n。

  • 按租户分组,保留“全部”行
  • 为每个子组添加索引列
  • 重新展开表格
  • 使用 Value=vrf 来转换租户
  • 删除索引列

M 代码

let
    //Source can be your PBI query
    Source = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],

    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Tenant", type text}, {"vrf", type text}}),
    
//Group Tenant and add Index column to each subtable
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Tenant"}, {
        {"x", each Table.AddIndexColumn(_,"Index"), type table[vrf=text, Index=Int64.Type]}        
        }),

//expand the table; then Pivot on Tenant and remove the Index column
    #"Expanded x" = Table.ExpandTableColumn(#"Grouped Rows", "x", {"vrf", "Index"}, {"vrf", "Index"}),
    #"Pivoted Column" = Table.Pivot(#"Expanded x", List.Distinct(#"Expanded x"[Tenant]), "Tenant", "vrf"),
    #"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"Index"})
in
    #"Removed Columns"

在此处输入图片描述

相关内容