我是PowerBI部分的新手,我需要一些帮助。
我到目前为止所做的是从两张桌子中合并查询,现在我得到了一张带有新库存的表格" ROUTE DATA" (如下图所示)
并且在每一行中都有表格(我打开了其中一张表,如图所示)
所以我不知道如何为表格中的每一行的每个ID创建一个新的coulmns。就像你可以在图片中看到的那样(我添加的红细胞)。
谢谢Daniel。
编辑星期日6/10/18:@Marc Pincince 马克非常感谢你!所以问题现在是具有空值的单元格: 我对你的帖子的评论:(你好Marc。再次感谢你!所以我试着按照你的指示进行操作,最后一个工作效果不好。我会添加一张图片来告诉你它有什么问题但我不能把图片添加到这里所以我会将它们添加到主帖中抱歉打扰你。问题是所有" null"单元格。我可以删除它们并只获取数据吗?image.ibb.co/cHncHo/Capture.png和image.ibb.co/c4prco/Capture1.png)答案 0 :(得分:1)
---首先显示原始答案,然后是基于讨论的更新版本---
这是一种可行的方法......
执行@Alexis建议的操作:单击ROUTE DATA列右上角的展开图标,然后选择展开所有列(选择所有列)并单击OK:
是的,您会看到所有四行都展开了:
现在,选择ROUTE NAME,START TIME和COMPLETE TIME列,然后单击转换选项卡,然后单击 Unpivot Columns下拉箭头和仅取消透视选定的列:
你会看到这样的事情:
现在,通过单击添加列选项卡和索引列添加索引列。索引应该从零开始,看起来像这样。
现在添加一个模数。您可以通过选择索引列并单击添加列选项卡,然后单击标准,然后模块,然后键入3
来执行此操作。单击确定。
你应该看到这样的事情:
现在通过单击添加列选项卡然后自定义列添加自定义列;只需将列名保持为Custom
,在公式框中键入[Attribute] & " " & Text.From(([Index]-[Modulo])/3)
,然后单击“确定”。这会创建唯一的列名称,您需要立即使用新列:
删除属性,索引和模块列,方法是选择所有列,然后选择主页选项卡,然后删除列。
现在选择自定义列,然后单击转换选项卡,然后单击数据透视列:
然后为值列条目选择值,单击高级选项,然后单击下拉箭头以选择不要聚合,然后单击“确定”。你应该看到这样的东西:
以下是高级编辑的M代码:
let
Source = QuerySource,
#"Expanded Custom" = Table.ExpandTableColumn(Source, "ROUTE DATA", {"UTID", "ROUTE NAME", "START TIME", "COMPLETE TIME"}, {"UTID", "ROUTE NAME", "START TIME", "COMPLETE TIME"}),
#"Unpivoted Only Selected Columns" = Table.Unpivot(#"Expanded Custom", {"ROUTE NAME", "START TIME", "COMPLETE TIME"}, "Attribute", "Value"),
#"Added Index" = Table.AddIndexColumn(#"Unpivoted Only Selected Columns", "Index", 0, 1),
#"Inserted Modulo" = Table.AddColumn(#"Added Index", "Modulo", each Number.Mod([Index], 3), type number),
#"Added Custom1" = Table.AddColumn(#"Inserted Modulo", "Custom", each [Attribute] & " " & Text.From(([Index]-[Modulo])/3)),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Attribute", "Index", "Modulo"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Custom]), "Custom", "Value")
in
#"Pivoted Column"
---每次讨论更新---
开始并将其扩展为......
选择ROUTE NAME,START TIME和COMPLETE TIME列,然后单击转换选项卡,然后单击 Unpivot Columns 下拉箭头和 Unpivot Only选择的列与以前一样:
现在,选择UTID列,然后选择转换选项卡,然后选择 Group by ,并设置如下对话框,然后单击OK:
你会看到这样的事情:
单击添加列选项卡,然后单击自定义列并将其设置为:
然后展开新的自定义列以查看如下内容:
然后添加另一个自定义列(添加列标签> 自定义列),设置如下:
你应该看到这样的事情:
展开Custom.1列中的记录。看起来应该是这样的:
单击自定义列,然后单击添加列选项卡和标准按钮的下拉箭头,然后选择模块。键入3
,然后单击“确定”。你会看到这样的事情:
添加另一个自定义列,设置如下:
你应该看到这样的事情:
删除不再需要的列(即Count,AllData,Custom,UTID.1,Attribute和Modulo)以获得如下内容:
然后单击Custom2列,然后单击 Transform 选项卡和 Pivot Column ,然后为 Values Column 条目选择Value,单击高级选项,然后使用下拉箭头选择不聚合,然后单击“确定”。你应该看到这样的东西:
以下是代码:
let
Source = QuerySource,
#"Expanded Custom" = Table.ExpandTableColumn(Source, "ROUTE DATA", {"UTID", "ROUTE NAME", "START TIME", "COMPLETE TIME"}, {"UTID", "ROUTE NAME", "START TIME", "COMPLETE TIME"}),
#"Unpivoted Only Selected Columns" = Table.Unpivot(#"Expanded Custom", {"ROUTE NAME", "START TIME", "COMPLETE TIME"}, "Attribute", "Value"),
#"Grouped Rows" = Table.Group(#"Unpivoted Only Selected Columns", {"UTID"}, {{"Count", each Table.RowCount(_), type number}, {"AllData", each _, type table}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each {0..[Count]-1}),
#"Expanded Custom1" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Added Custom2" = Table.AddColumn(#"Expanded Custom1", "Custom.1", each [AllData]{[Custom]}),
#"Expanded Custom.1" = Table.ExpandRecordColumn(#"Added Custom2", "Custom.1", {"Column1", "UTID", "Attribute", "Value"}, {"Column1", "UTID.1", "Attribute", "Value"}),
#"Inserted Modulo1" = Table.AddColumn(#"Expanded Custom.1", "Modulo", each Number.Mod([Custom], 3), type number),
#"Added Custom1" = Table.AddColumn(#"Inserted Modulo1", "Custom2", each [Attribute] & " " & Text.From(([Custom]-[Modulo])/3)),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Count", "AllData", "Custom", "UTID.1", "Attribute", "Modulo"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Custom2]), "Custom2", "Value")
in
#"Pivoted Column"
答案 1 :(得分:0)
单击表格右上角的展开图标,然后选择所需的行。