首页 > 解决方案 > 具有唯一 ID 和扩展列的 Power Query 转换数据集

问题描述

开门见山:

我需要使用电源查询编辑器(M 语言)将数据集(来自 CSV 文件的源)转换为 Excel 中的新表。下面示例中的产品代码应该是唯一的,并且对于每个 URL 都应该有一个新列,列的名称可以是“1-x”或“列 1-x”,没关系。只要“IsDefault”.value = 1,那么它应该去第一列,对于0值,没关系(也许从上到下会很完美)。

资源: 这是数据集的图片

ProductCode,URL,IsDefault
1,a,1
2,b,1
2,c,0
3,d,0
2,e,0
3,f,1

目标:

ProductCode,column1,column2,column3
1,a,null,null,null
2,b,c,e
3,f,d,null,null

我已经实现了对它们进行分组的计数,但是我不知道如何从最大值中添加列数,然后如何将其转换为新表。

let
    Quelle = Csv.Document(File.Contents("C:\Users\name\Desktop\cat-images-test.csv"),[Delimiter=",", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Höher gestufte Header" = Table.PromoteHeaders(Quelle, [PromoteAllScalars=true]),
    #"Gruppierte Zeilen" = Table.Group(#"Höher gestufte Header", {"ProductCode"}, {{"Anzahl", each Table.RowCount(Table.Distinct(_)), Int64.Type}})
in
    #"Gruppierte Zeilen"

此代码计算我需要插入多少列,它是“Anzahl”列的最大值。其他线程上没有这种情况,我的 M 语言不是很好。

这是计数的图片。

谢谢您的帮助。

标签: excelpowerquery

解决方案


对 ProductCode 上的列进行分组,为 URL 聚合选择 All Rows。这将为您提供一个新列,其中每行都有一个表格(我称之为 URL)。现在使用公式添加一个自定义列:

=Table.Column([URLs], "URL")

这将为每一行生成列表。单击新列表列右上角的小按钮并选择提取值,并指定逗号分隔符。然后,您可以在逗号上拆分此新列以创建新列以获得所需的结果。


推荐阅读