Hallo Lars, ich bin rein zufällig auf deinen interessanten Artikel über den zweiten unbekannten Parameter der Funktion Table.Profile() gestoßen: Table.Profile and its unknown second parameter. Deine Ausführungen haben mich auf die Idee gebracht, wie man eine weitere Spalte mittels Table.Profile() erzeugt, die man für das Entfernen leerer Spalten nutzen kann. Hier ist mein Vorschlag. Ich beginne nach deinem Schritt:#"Geänderter Typ" Names = Table.ColumnNames (#"Geänderter Typ"), TableProfile = Table.Profile ( #"Geänderter Typ",{ {"ungleich null", (x)=> true, List.NonNullCount} } ), MyList = TableProfile[#"ungleich null"], SpaltenNr = List.PositionOf (MyList, 0, Occurrence.All), Spaltennamen = List.Transform (SpaltenNr, (x)=> Names{x} ), RemoveColumns = Table.RemoveColumns (#"Geänderter Typ", Spaltennamen) in RemoveColumns Hier stellt sich die berechtigte Frage, warum die neu erzeugte Spalte nicht auf den Wert 0 gefiltert wurde: = Table.SelectRows (TableProfile, each ([ungleich null] = 0) ) Dieser Schritt produziert leider einen Fehler, sodass ich oben zunächst ohne Filter ausgekommen bin. Den Fehler kann man korrigieren und dann filtern, wenn man das Ergebnis des Schrittes Table.Profile in die Funktion Table.StopFolding oder Table.Buffer einschließt: = Table.SelectRows (Table.Buffer (TableProfile), each ( [ungleich null] = 0 ) ) Mit dem zweiten - für mich nun bekannten - Parameter der Funktion Table.Profile() kann man weitere Auswertungen machen. Vielleicht habe ich dir eben eine Idee für ein weiteres Video geliefert.
Was meinst Du mit "ungenutzt"? Im Power BI-Kontext würde das bei mir bedeuten, Spalten, die in keiner Visualisierung und keine Berechnung genutzt wurden. Im reinen Power Query-Kontext verstünde ich die Frage jedoch nicht.
@@LarsSchreiber Genau das, ich meinte im PBI Kontext nicht rein im PowerQuery Kontext. Ich habe über eine SQL Server Architektur verschiedene Berichte mit jeweils einzelnen semantischen Modellen. Hier haben wir eine View pro Dimension/Fakten. Nun ist es in manchen Berichten notwendig alle Spalten einer Dimension zu verwenden und in anderen Reports aber bestimmte Spalten. Ich möchte aber um den SQL Server sauber zu halten nicht für jeden Report eine eigene View nachziehen müssen. Über externe Tools wie bspw. Measure Killer finde ich recht einfach die ungenutzten Spalten. Ich hatte mir überlegt, dass man das Datenmodell noch etwas verschlanken könnte wenn man diese ungenutzten Spalten berichtsabhängig rausbekommen würde.
Das halte ich automatisiert für schwierig. Ob eine Spalte im Bericht benötigt wird, sagt ja noch nichts darüber aus, ob es im ETL-Prozess in PQ vlt. für Berechnungen benötigt wird. Du müsstest also innerhalb des Datenmodells checken, ob Spalten für Visuals oder Measures benutzt werden UND in PQ prüfen, ob die Spalte benutzt wird, und dann automatisch die nicht benutzten Spalten beim Import eliminieren. Allein beim Drübernachdenken wird mir schwindelig. 😵💫
@Lars: Wieder ein dickes Dankeschön! Das hat mir sehr geholfen. So etwas lernt man in keinem Handbuch.
Klasse Video. Vielen Dank!
Sehr gerne! 😉
Super gelöst. Werde das direkt mal übernehmen
Hallo Lars, ich bin rein zufällig auf deinen interessanten Artikel über den zweiten unbekannten Parameter der Funktion Table.Profile() gestoßen: Table.Profile and its unknown second parameter. Deine Ausführungen haben mich auf die Idee gebracht, wie man eine weitere Spalte mittels Table.Profile() erzeugt, die man für das Entfernen leerer Spalten nutzen kann.
Hier ist mein Vorschlag. Ich beginne nach deinem Schritt:#"Geänderter Typ"
Names = Table.ColumnNames (#"Geänderter Typ"),
TableProfile = Table.Profile ( #"Geänderter Typ",{ {"ungleich null", (x)=> true, List.NonNullCount} } ),
MyList = TableProfile[#"ungleich null"],
SpaltenNr = List.PositionOf (MyList, 0, Occurrence.All),
Spaltennamen = List.Transform (SpaltenNr, (x)=> Names{x} ),
RemoveColumns = Table.RemoveColumns (#"Geänderter Typ", Spaltennamen)
in
RemoveColumns
Hier stellt sich die berechtigte Frage, warum die neu erzeugte Spalte nicht auf den Wert 0 gefiltert wurde:
= Table.SelectRows (TableProfile, each ([ungleich null] = 0) )
Dieser Schritt produziert leider einen Fehler, sodass ich oben zunächst ohne Filter ausgekommen bin. Den Fehler kann man korrigieren und dann filtern, wenn man das Ergebnis des Schrittes Table.Profile in die Funktion Table.StopFolding oder Table.Buffer einschließt:
= Table.SelectRows (Table.Buffer (TableProfile), each ( [ungleich null] = 0 ) )
Mit dem zweiten - für mich nun bekannten - Parameter der Funktion Table.Profile() kann man weitere Auswertungen machen.
Vielleicht habe ich dir eben eine Idee für ein weiteres Video geliefert.
Super Video. Gibt es auch eine Möglichkeit ungenutzte Spalten dynamisch zu entfernen?
Was meinst Du mit "ungenutzt"? Im Power BI-Kontext würde das bei mir bedeuten, Spalten, die in keiner Visualisierung und keine Berechnung genutzt wurden. Im reinen Power Query-Kontext verstünde ich die Frage jedoch nicht.
@@LarsSchreiber Genau das, ich meinte im PBI Kontext nicht rein im PowerQuery Kontext. Ich habe über eine SQL Server Architektur verschiedene Berichte mit jeweils einzelnen semantischen Modellen. Hier haben wir eine View pro Dimension/Fakten. Nun ist es in manchen Berichten notwendig alle Spalten einer Dimension zu verwenden und in anderen Reports aber bestimmte Spalten. Ich möchte aber um den SQL Server sauber zu halten nicht für jeden Report eine eigene View nachziehen müssen. Über externe Tools wie bspw. Measure Killer finde ich recht einfach die ungenutzten Spalten. Ich hatte mir überlegt, dass man das Datenmodell noch etwas verschlanken könnte wenn man diese ungenutzten Spalten berichtsabhängig rausbekommen würde.
Das halte ich automatisiert für schwierig. Ob eine Spalte im Bericht benötigt wird, sagt ja noch nichts darüber aus, ob es im ETL-Prozess in PQ vlt. für Berechnungen benötigt wird. Du müsstest also innerhalb des Datenmodells checken, ob Spalten für Visuals oder Measures benutzt werden UND in PQ prüfen, ob die Spalte benutzt wird, und dann automatisch die nicht benutzten Spalten beim Import eliminieren. Allein beim Drübernachdenken wird mir schwindelig. 😵💫
Mega geil
Super