Ich verwende derzeit den Abfrageeditor von Power BI, um einige Daten zu pivotieren, umzuwandeln, zu verknüpfen, neu zu pivotieren und erneut beizutreten. Veranschaulichen:Hinzufügen von Sonderfall zu Power BI-Abfrage (M)
REF_Capability:
ID#| Capability.1 | Capability.2 | Capability.3|
97 | Crawl | Walk | Run |
98 | Crawl | null | null |
99 | Crawl | Walk | null |
Table2:
Capability | Attribute| Value |
Crawl | Vehicle1 | 4 |
Walk | Vehicle1 | 3 |
Run | Vehicle1 | 2 |
Crawl | Vehicle2 | 0 |
Walk | Vehicle2 | 1 |
Run | Vehilce2 | 1 |
Crawl | Vehicle3 | 0 |
Walk | Vehicle3 | 5 |
Run | Vehicle3 | 5 |
eine Kombination aus unpivoting verwenden, Filterung, Abfragen Zusammenführung erweitert Spalten und Wieder Schwenken und Wiederzusammenführen ich diese ausgebbare erhalten:
ID#| Capability.1 | Capability.2 | Capability.3| Score.Vehicle1 | Score.Vehicle2 | Score.Vehicle3 |
97 | Crawl | Walk | Run | 9 [4+3+2] | 2 [0+1+1] | 10 [0+5+5] |
98 | Crawl | null | null | 4 [4+null+null] | 0 [0+null+null] | 0 [0+null+null] |
99 | Crawl | Walk | null | 7 [4+3+null] | 1 [0+1+null] | 5 [0+5+null] |
im Falle von ID # 97 unter Vehicle2CapaScore und Vechile3CapaScore anstelle von Scores von 2 bzw. 10 würde ich gerne 0 für beide Punkte haben. Erklären ... Wenn ein Fahrzeug für eine bestimmte Fähigkeit die Gesamtnote 0 hat, erhält es für alle Fähigkeiten eine 0. Oder einfacher, es spielt keine Rolle, wie gut Sie laufen oder laufen können, wenn Sie nicht kriechen können.
würde ich etwas Hilfe mag diese Logik in meiner Anfrage Arbeits:
let
Source = OData.Feed("SOURCE_vti_bin/listdata.svc"),
REF_Capability = Source{[ID#="REF_Capability",Signature="table"]}[Data],
#"Split Column by Delimiter" = Table.SplitColumn(Table1,"Capability",Splitter.SplitTextByDelimiter("; ", QuoteStyle.Csv),{"Capability.1", "Capability.2", "Capability.3"}),
#"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Capability.1", type text}, {"Capability.2", type text}, {"Capability.3", type text}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Change Type", {"ID#"}, "Attribute", "Value"),
#"Filtered Rows" = Table.SelectRows(#"Unpivoted Other Columns", each ([Attribute] = "Capability.1" or [Attribute] = "Capability.2" or [Attribute] = "Capability.3") and ([Value] <> "")),
#"Merged Queries" = Table.NestedJoin(#"Filtered Rows",{"Value"},Table2,{"Capability"},"NewColumn",JoinKind.LeftOuter),
#"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Attribute", "Value"}, {"VehicleScore.Attribute", "VehicleScore.Value"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded NewColumn",{"Attribute", "Value"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[VehicleScore.Attribute]), "VehicleScore.Attribute", "VehicleScore.Value", List.Sum)
in
#"Pivoted Column"
let
Source = OData.Feed("SOURCE/_vti_bin/ListData.svc"),
OutputTable = Source{[ID#="OutputTable",Signature="table"]}[Data],
#"Merged Queries" = Table.NestedJoin(#OutputTable,{"ID#"},REF_Capability,{"ID#"},"NewColumn",JoinKind.LeftOuter),
#"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Vehicle1", "Vehicle2", "Vehicle3"}, {"Score.Vehicle1","Score.Vehicle2", "Score.Vehicle3"})
in
#"Expanded NewColumn"
Ich sehe, was Sie hier haben ... und ja, es funktioniert. Ich bin aber neugierig ... haben Sie gesehen, dass MS "bedingte Spalten" in der letzten Aktualisierung von PowerBI hinzugefügt. Ergo, wäre es nicht effizienter, das zu verwenden, anstatt die Abfrage, die Sie zurücksenden, zu der Tabelle, die vor dem minvalue-Schritt existierte, wieder zusammenzuführen? (Ich kann nicht testen, weil ich darauf warte, dass unser IT-Shop die ausführbare Datei auf meinem Laptop ausführt) –
Die neue Funktion "bedingte Spalten" ist nur eine einfachere Benutzeroberfläche zum Generieren einer hinzugefügten Spalte mit demselben "if" -Code, Es gibt also keinen Effizienzgewinn zur Laufzeit. –
Sie können dies alles in einer Abfrage erreichen, wenn Sie eine aggregierte Spalte "Alle Zeilen" während der Gruppierung hinzufügen (wobei Sie [Minimaler Wert] berechnen). Sie können die Spalte "Alle Zeilen" sofort erweitern, um Ihre Details zurückzuerhalten. –