Power Query Basiswissen

Power Query Basiswissen

Wer Power BI nutzt, kommt an Power Query nicht vorbei. Für mich war dies der erste ernsthafte Berührungspunkt mit Power Query, aber mich haben die unzähligen und unglaublichen Möglichkeiten von Power Query so in den Bann geschlagen, dass ich mich auch über den normalen ETL Prozess hinaus mit Power Query beschäftigt habe. 

Die Dokumentation von Microsoft ist, nun ja, recht trocken, und auch sonst habe ich mir etwas schwer mit dem Einstieg getan. Es scheint, dass Power Query allgemein ein Schatten- Dasein lebt – es ist halt nicht so bunt wie Power BI, hat keine eigene Oberfläche wie Excel, lässt sich nicht aufzeichnen wie VBA – kurz, der Einstieg fällt schwer. Daher habe ich mich entschlossen, auf meinem Blog nach und nach Wissen zusammenzutragen.

Dies ist der Anfang. Der Anfang zu etwas Großem. Ich spüre es.

ACHTUNG: POWER QUERY BEACHTET GROSS- UND klein- SCHREIBUNG

Variable

Variable werden am häufigsten genutzt, um die einzelnen Schritte der Query abzubilden.
Sie können auch Leerzeichen enthalten, müssen dann allerdings mit #“x x“ gekennzeichnet werden.

let 
  Name = expression,
  #"Name mit Leerzeichen" = expression2
in 
  #"Name mit Leerzeichen"

let ... in Statement

Nur im Erweiterten Editor zu sehen, aber essentliell wichtig: jede Query beginnt mit einem let und endet mit einem in „Variable“.
Wie im obigen Beispiel zu sehen, wird die Query mit dem typischerweise letzten Query Schritt geschlossen, es können aber auch die vorherigen Schritte angegeben werden z.B. 

let
  Name = expression, 
  #"Name mit Leerzeichen" = expression2 
in 
  Name

Values und Expressions

Ich nutze hier absichtlich die englischen Begriffe in der Überschrift, da die M- Sprache generell keine Übersetzung wie z.B. Excel- Formeln bietet. Daher sind häufig auch Fehlermeldungen in Englisch. Die Übersetzung wäre aber in etwa „Werte und Ausdrücke“ und beschreibt eine wichtige Unterscheidung in Power Query:
der Wert ist das Resultat eines Ausdrucks. Der Wert kann, muss aber nicht ein einzelner Wert sein sondern kann auch zum Beispiel eine Liste von Einzelwerten sein. 

primitive values / scalar values

So ist im folgenden Beispiel die 1 sowohl Ausdruck als auch Wert

1 = 1

hier wird der Unterschied deutlicher: 1+1 ist der Ausdruck, 2 ist der Wert

1 + 1 = 2
list values

Werte, oder values, können auch Listen sein. Diese werden durch { } dargestellt. Sie können Nummern, Texte, oder Logik- Werte enthalten, z.B. 

{123, true, "ABC"}

Listen können durch Power Query auch aufgebaut werden. So gibt folgendes Statement eine Liste von allen Zahlen 1 – 10 aus.

{1..10}
records

Records sind Datensätze, die aus mehreren Feldern bestehen. Ein einzelnes Feld ist ein Paar aus Name (=Text)  und Wert (value), wobei der Name eindeutig sein muss. Ein record wird mit [] definiert:

 [
  Apfel = 3,
  B = 2, 
Star Wars Filme = 11
]

Innerhalb von Records kann auch gerechnet werden, wobei die Rechenreihenfolge wie z.B. auch in Excel von den Abhängigkeiten bestimmt wird, also welche Berechnung stützt sich auf welche Zahl:

[ 
Summe = Spin_Offs + Episode_VII_bis_IX,
Spin_Offs = 2,
Episode_VII_bis_IX = Episode_I_bis_III + 3,
Episode_I_bis_III = Episode_IV_bis_VI + 3,
Episode_IV_bis_VI = 3
]

Außerdem können records geschachtelt sein, sodass darauf verwiesen werden kann, z.B. 

[ 
Episoden = [ I_bis_III = 3, IV_bis_VI = 3, VII_bis_IX = 3 ],
Spin_Offs = 2,
Summe = Episoden[I_bis_III] + Episoden[IV_bis_VI] + Episoden[VII_bis_IX] + Spin_Offs
]  
tables

Tabellen sind ein Satz aus Werten (values), die in Spalten und Zeilen organisiert sind. Die Spalten müssen Namen haben und die Tabelle wird durch #table () definiert

#table (
  {"Spalte 1", "Spalte 2"},    //definiert Spaltennamen
{ {"Apfel", 3} , {"B", 2}, {"Star Wars Filme", 11} } //definiert Tabelleninhalt
  )
functions

Funktionen sind Werte (values), die neue Werte (values) erzeugen. Die benötigten Parameter werden in einer Klammer (x, y) definiert, gefolgt von einem Pfeilsymbol =>, gefolgt von einem Ausdruck (expression) 

(x, y) => ( x + y ) * 2

in diesem Beispiel wird von Power Query zunächst die Eingabe der Parameter  x und y abgefragt und dann in die Formel eingefügt. Gibt man für Parameter x = 2 und Parameter y=3 ein, so rechnet Power Query 

( 2 + 3 ) * 2 = 10

und gibt 10 als primitiven Wert aus. 

Dabei werden zwei Queries erstellt, eine für die Abfrage der Parameter und eine für die aufgerufene Funktion. Jede neue Eingabe der Parameter ruft eine neue Query auf. 

Schreibe einen Kommentar