Power Query “Daten eingeben” erklärt

Orginal Beitrag “Power Query Enter Data Explained” von Nolock

Es gibt viele Dinge, die Sie oft tun, ohne zu wissen, wie sie funktionieren. Sie funktionieren einfach und das ist genug. Aber nicht heute. In diesem Beitrag möchte wir auf eine Power Query-Abfrage eingehen, die beim Erstellen einer neuen Tabelle über die Schaltfläche Daten eingeben automatisch generiert wird.

Power Query Daten eingeben Tabelle erstellen

Der Code in Power Query sieht wie folgt aus.

Powre Query Daten eingeben Erweiterter Editor

Die Schönheit des Codes kommt zum Vorschein, wenn man ihn richtig formatiert.

let
   Quelle =
     Table.FromRows(
       Json.Document(
         Binary.Decompress(
           Binary.FromText(
             “i45WikrNyUnVNdQ1VNKBs42Q2MZKsTowVUZIqoyQVBmBVMUCAA==”,
             BinaryEncoding.Base64
           ),
           Compression.Deflate
         )
       ),
       let
         _t = ((type text) meta [Serialized.Text = true])
       in
         type table [Spalte1 = _t, Spate2 = _t, Spalte3 = _t]
     ),
   #”Geänderter Typ” = Table.TransformColumnTypes(Quelle,
     {{“Spalte1”, type text},
      {“Spate2”, type text},
      {“Spalte3”, type text}})
in
   #”Geänderter Typ”

Lassen Sie uns den Code so umschreiben, dass er nur einen Ausdruck pro Schritt enthält.

let
   Base64EncodedBinary = “i45WikrNyUnVNdQ1VNKBs42Q2MZKsTowVUZIqoyQVBmBVMUCAA==”,
   BinaryFromText = Binary.FromText (Base64EncodedBinary, BinaryEncoding.Base64),
   DecompressBinary = Binary.Decompress (BinaryFromText, Compression.Deflate),
   JsonDocument = Json.Document (DecompressBinary),
   TableFromRows =
     Table.FromRows (
       JsonDocument,
       let
         _t = ((type text) meta [Serialized.Text = true])
       in
         type table [Spalte1 = _t, Spate2 = _t, Spalte3 = _t]
     ),
   #”Geänderter Typ” = Table.TransformColumnTypes(TableFromRows,
     {{“Spalte1”, type text},
      {“Spate2”, type text},
      {“Spalte3”, type text}})
in
   #”Geänderter Typ”

Im ersten Schritt haben wir einen Base64-codierten String. Ist er in eine für den Menschen lesbare Zeichenfolge umwandelbar? Nicht wirklich – wie Sie im folgenden Screenshot sehen können. Es sind Binärdaten, die Base64-codiert sind.

Decode Base64

Im nächsten Schritt wird aus dieser codierten Zeichenfolge eine Binärdatei erstellt. Die dann mit der Funktion Binary.Decompress dekomprimiert wird. Die Funktion benötigt einen Binärwert und einen Komprimierungstyp. In diesem Fall wird der Komprimierungstyp Deflate verwendet.
Bevor wir fortfahren, möchten wir die dekomprimierten Daten betrachten. Mit der Funktion Text.FromBinary können wir die Daten in einen Text konvertieren.

Power Query Text.FromBinary

Das Ergebnis ist eine Liste von Listen, wobei die innere Liste eine Zeile der zukünftigen Tabelle ist. Sie können sie mit dem ersten Screenshot vergleichen. Wichtig ist, dass keine Spaltennamen enthalten sind. Die folgen in einem späteren Schritt.

Der nächste Schritt ist die Funktion Json.Document. Sie konvertiert die dekomprimierten Binärdaten in eine Liste von Listen. Das gleiche, was wir bereits mit Text.FromBinary gesehen haben, aber dieses Mal ist es eine reguläre Liste, nicht nur Text.

Power Query Json.Document

Wir sind fast fertig. Der letzte Schritt ist die Funktion Table.FromRows. In der Definition heißt es: “Erstellt eine Tabelle aus der Liste Zeilen, wobei jedes Element der Liste eine innere Liste ist, die die Spaltenwerte für eine einzelne Zeile enthält.” Die Funktion hat einen optionalen Parameter, mit dem eine Liste von Spaltennamen angegeben werden kann.
Dies erfolgt im generierten Code, über diese 4 Zeilen.

let
   _t = ((type text) meta [Serialized.Text = true])
in
   type table [Spalte1 = _t, Spate2 = _t, Spalte3 = _t]

In der vierten Zeile haben wir eine Tabelle mit 3 Spalten mit den Namen Spalte1, Spalte2 und Spalte3. Alle Spalten haben den gleichen Datentyp _t. _t ist vom Datentyp Text und hat auch den Wert Serialized.Text = true zugeordnet. Leider ist die Verwendung dieser Metadaten nicht dokumentiert.

Power Query Daten eingeben Ergebnis

Quelle: https://community.powerbi.com/t5/Community-Blog/Power-Query-Enter-Data-Explained/ba-p/796102

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.