2017-08-02 77 views
0

在電力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內?

回答

0

我想到了兩種方法來做到這一點,儘管可能有其他方法。

備註 - 我更喜歡第二種方法,因爲它可以讓數據驅動「101」和「102」,從而可以更容易地更改或添加它們。

A)通過查詢編輯器(需要硬編碼 「101」/ 「102」 的值)

步驟1:與在查詢編輯器

數據開始第2步:爲後綴添加兩個附加列。點擊「從示例中自定義列」按鈕,然後在第一個單元格中輸入「234-101」。在向下箭頭到下一個單元格之後,它應該自動填充剩下的單元格。再次執行「-102」。 Step A2 - Custom Columns

第3步:重新旋轉兩個新列以將它們合併爲一個。選擇「ID」列後,點擊「Unpivot Columns」下拉列表並點擊「Unpivot Other Columns」。 Step A3 - Unpivot Columns

第4步:刪除多餘的列。在結果數據中,您將獲得原始的「ID」列以及兩個新的數據; 「屬性」和「價值」。由於「值」列包含所需的值,因此選擇「ID」和「屬性」列,右鍵單擊其標題之一,然後選擇「刪除列」。 Step A4 - Remove Columns

第5步:重命名 「值」 列於 「ID」 就完成了。 Step A5 - Rename Column

這是所有這些操作的結果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

步驟1:與數據視圖數據開始。 Step B1 - Start

第2步:點擊「輸入數據」並添加後綴數據。 (跳過此,如果這些數字是來源於其他地方) Step B2 - Add Suffix Data

步驟3:單擊「新建表」並輸入以下公式。

NewData = CROSSJOIN(Data, Suffixes) 

Step B3 - New Table

步驟4:單擊 「新建列並輸入以下公式

NewID = CONCATENATE(CONCATENATE(NewData[ID], "-"), NewData[Value]) 

Step B4 - New Column

如果你希望被命名的新列。」 ID「,你需要首先重命名舊的」ID「列,因爲你不能像在第四章那樣簡單地刪除它第一種方法。

0

如果你沒事用電源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"