我有一個資料集,它通過一列標識單獨的表,Col1其中%T行值指示這是一個新表(名稱在 處提供Col2),并%R指示這是表中的一條記錄(值在 處提供Col2)。
包含兩個表的資料集如下所示:
| 第 1 列 | Col2 |
|---|---|
| %T | 表格1 |
| %R | 某物 |
| %R | 別的 |
| %R | 等等 |
| %T | 表2 |
| %R | 其他價值 |
| %R | 多一個 |
| %R | 等等 |
我希望能夠將這些表分開。我的計劃是計算一個新列,表名將出現在其中,然后我可以使用Group By此列并 get All,它應該回傳 2 個子集,然后我可以單獨使用它們。
我被困在這一步,我需要在所有行中傳播表名,其中Col1 = "%R". 理想情況下,我會添加一個Added Custom Column使用以下公式命名的步驟:
= Table.AddColumn(#"Added Index", "TableName", each if [Col1] = "%T" then [Col2] else #"Added Custom Column"[TableName]{[Index]-1})
但這不起作用,因為#"Added Custom Column"尚不存在,我理解這相當于生成某種回圈參考。
在常規 Excel 中,我會在 Col1 之前插入一列并執行=if(RC[1]="%T",RC[2],R[-1]C). 如何使用 Power Query 實作這一目標?
uj5u.com熱心網友回復:
根據我的評論,鑒于您的資料:
let
Source = Excel.CurrentWorkbook(){[Name="Table7"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Col1", type text}, {"Col2", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each if [Col1] = "%T" then [Col2] else null),
#"Filled Down" = Table.FillDown(#"Added Custom",{"Custom"}),
#"Grouped Rows" = Table.Group(#"Filled Down", {"Custom"}, {
{"all", each _, type table [Col1=nullable text, Col2=nullable text, Custom=text]}
})
in
#"Grouped Rows"
Will => 兩個分組表
如果您不希望第一行(具有表名的行)出現在子組表中,只需更改聚合以將其洗掉:
{"all", each Table.RemoveFirstN(_,1), type table [Col1=nullable text, Col2=nullable text, Custom=text]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/401396.html
