在電力BI,我有一個表,看起來像這樣:雙向電力 - 重複的行
ID
234
435
3435
58
48504
7820
我想將其轉換爲表看起來像這樣:
ID
234-101
234-102
435-101
435-102
3435-101
343-102
58-101
58-102
48504-101
48504-102
7820-101
7820-102
這是甚至可能在Power BI內?
在電力BI,我有一個表,看起來像這樣:雙向電力 - 重複的行
ID
234
435
3435
58
48504
7820
我想將其轉換爲表看起來像這樣:
ID
234-101
234-102
435-101
435-102
3435-101
343-102
58-101
58-102
48504-101
48504-102
7820-101
7820-102
這是甚至可能在Power BI內?
我想到了兩種方法來做到這一點,儘管可能有其他方法。
備註 - 我更喜歡第二種方法,因爲它可以讓數據驅動「101」和「102」,從而可以更容易地更改或添加它們。
A)通過查詢編輯器(需要硬編碼 「101」/ 「102」 的值)
步驟1:與在查詢編輯器
數據開始第2步:爲後綴添加兩個附加列。點擊「從示例中自定義列」按鈕,然後在第一個單元格中輸入「234-101」。在向下箭頭到下一個單元格之後,它應該自動填充剩下的單元格。再次執行「-102」。
第3步:重新旋轉兩個新列以將它們合併爲一個。選擇「ID」列後,點擊「Unpivot Columns」下拉列表並點擊「Unpivot Other Columns」。
第4步:刪除多餘的列。在結果數據中,您將獲得原始的「ID」列以及兩個新的數據; 「屬性」和「價值」。由於「值」列包含所需的值,因此選擇「ID」和「屬性」列,右鍵單擊其標題之一,然後選擇「刪除列」。
這是所有這些操作的結果M代碼。
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjI2UYrViVYyMTYF08YwhqkFRNzC1ACiwtzCyEApNhYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [ID = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}}),
#"Inserted Merged Column" = Table.AddColumn(#"Changed Type", "Merged", each Text.Combine({Text.From([ID], "en-US"), "-101"}), type text),
#"Inserted Merged Column1" = Table.AddColumn(#"Inserted Merged Column", "Merged.1", each Text.Combine({Text.From([ID], "en-US"), "-102"}), type text),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Inserted Merged Column1", {"ID"}, "Attribute", "Value"),
#"Removed Columns" = Table.RemoveColumns(#"Unpivoted Other Columns",{"ID", "Attribute"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Value", "ID"}})
in
#"Renamed Columns"
B)通過DAX
第2步:點擊「輸入數據」並添加後綴數據。 (跳過此,如果這些數字是來源於其他地方)
步驟3:單擊「新建表」並輸入以下公式。
NewData = CROSSJOIN(Data, Suffixes)
步驟4:單擊 「新建列並輸入以下公式
NewID = CONCATENATE(CONCATENATE(NewData[ID], "-"), NewData[Value])
如果你希望被命名的新列。」 ID「,你需要首先重命名舊的」ID「列,因爲你不能像在第四章那樣簡單地刪除它第一種方法。
如果你沒事用電源BI的查詢編輯器(功率查詢)這一點,你可以用這個查詢代碼做到這一點:(表1是你原來的ID列表)
let
Source = Table1,
#"Inserted Merged Column3" = Table.AddColumn(Source, "DelimitedListWithSuffixes", each Text.Combine({[ID], "-101,", [ID],"-102"}), type text),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Inserted Merged Column3", {{"DelimitedListWithSuffixes", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "DelimitedListWithSuffixes"),
#"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"DelimitedListWithSuffixes", type text}}),
#"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"DelimitedListWithSuffixes"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns",{{"DelimitedListWithSuffixes", "ID"}})
in
#"Renamed Columns"