2017-08-02 5 views
0

Im Power-BI habe ich eine Tabelle, die wie folgt aussieht:Strom BI - Doppelte Zeilen

ID 
234 
435 
3435 
58 
48504 
7820 

ich es in eine Tabelle konvertieren möchten, die wie folgt aussieht:

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 

Ist das auch in Power BI möglich?

Antwort

0

Ich dachte an zwei Möglichkeiten, dies zu tun, obwohl es wahrscheinlich andere gibt.

HINWEIS - Ich bevorzuge die zweite Methode, da sie die "101" und "102" datengesteuert macht, so dass sie in Zukunft leichter geändert oder hinzugefügt werden können.

A) Durch die Abfrage-Editor (erfordert harte Codierung der "101"/"102" Werte)

Schritt 1: in der Abfrage-Editor mit Ihren Daten starten

Schritt 2: Fügen Sie zwei zusätzliche Spalten für Ihre Suffixe hinzu. Klicken Sie auf die Schaltfläche "Benutzerdefinierte Spalte von Beispielen" und geben Sie dann "234-101" in die erste Zelle ein. Nach dem Abpfeilen zur nächsten Zelle sollte der Rest automatisch gefüllt werden. Wiederholen Sie dies für "-102". Step A2 - Custom Columns

Schritt 3: Unpivot die beiden neuen Spalten, um sie in eine zu bekommen. Klicken Sie bei ausgewählter Spalte "ID" auf das Dropdown-Menü für "Spalten aufheben" und klicken Sie auf "Andere Spalten aufheben".

Schritt 4: Entfernen Sie zusätzliche Spalten. In den resultierenden Daten haben Sie die originale Spalte "ID", zusammen mit zwei neuen; "Attribut" und "Wert". Da die Spalte "Wert" die gewünschten Werte enthält, wählen Sie die Spalten "ID" und "Attribut", klicken Sie mit der rechten Maustaste auf einen ihrer Überschriften und wählen Sie "Spalten entfernen". Step A4 - Remove Columns

Schritt 5: Benennen Sie die Spalte "Wert" auf "ID" und fertig. Step A5 - Rename Column

Hier ist der resultierende M-Code für alle diese Aktionen.

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) Durch DAX

Schritt 1: mit Ihren Daten in der Datenansicht starten. Step B1 - Start

Schritt 2: Klicken Sie auf "Enter Data" und die Daten für die Suffixe hinzufügen. (Überspringen Sie diese Option, wenn diese Zahlen woanders bezogen werden) Step B2 - Add Suffix Data

Schritt 3: Klicken Sie auf „New Table“ und geben Sie die folgende Formel.

NewData = CROSSJOIN(Data, Suffixes) 

Step B3 - New Table

Schritt 4: Klicken Sie auf "Neue Spalte und geben Sie die folgende Formel

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

Step B4 - New Column

Wenn Sie die neue Spalte namentlich genannt werden will." ID ", müssen Sie zuerst die alte" ID "-Spalte umbenennen, da Sie sie nicht einfach entfernen können, wie es in th getan wurde Die erste Methode.

0

Wenn Sie mit der Verwendung von Power-BI Abfrage-Editor (Power Query) für das in Ordnung sind, dann können Sie es mit dieser Abfrage Code tun: (. Tabelle 1 ist Ihre ursprüngliche ID-Spalte Tabelle)

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"