具有唯一 ID 和扩展列的 Power Query 转换数据集

时间:2021-01-13 13:21:23

标签: excel powerquery

直截了当:

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

来源: Here's a picture of the dataset

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语言不是很好。

Here's a picture of the count.

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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