Ausdrücke, Werte und der let-Ausdruck

Eine Power Query M-Formelsprachabfrage besteht aus den Schritten der Formel Ausdruck, die eine Mashupabfrage erstellen. Ein Formelausdruck kann ausgewertet (berechnet) werden, was zu einem Wert führt. Der let-Ausdruck kapselt Werte, die berechnet, benannt und dann in einem nachfolgenden Ausdruck verwendet werden sollen, der auf die in-Anweisung folgt. Ein let-Ausdruck könnte beispielsweise eine Variable Source enthalten, die dem Wert von Text.Proper() entspricht und im richtigen Fall einen Textwert liefert.

Let-Ausdruck

let
    Source = Text.Proper("hello world")
in
    Source

Im obigen Beispiel wird Text.Proper("hello world") zu "Hello World" ausgewertet.

Die nächsten Abschnitte beschreiben Werttypen in der Sprache.

Primitiver Wert

Ein primitiver Wert ist ein Einzelteilwert, wie beispielsweise eine Zahl, ein Wahrheitswert, Text oder NULL. Ein NULL-Wert kann verwendet werden, um das Fehlen von Daten anzuzeigen.

Typ Beispielwert
Binary 00 00 00 02 // Anzahl der Punkte (2)
Date 23.05.2015
Datetime 23.05.2015 00:00:00 Uhr
DatumZeitzone (DateTimeZone) 23.05.2015 00:00:00 Uhr bis 08:00 Uhr
Duration 15:35:00
Logisch „true” und „false”.
Null NULL
Zahl 0, 1, -1, 1.5, und 2,3e-5
Text "abc"
Time 12:34:12 Uhr

Function-Wert

Eine Funktion ist ein Wert, der einen neuen Wert erzeugt, wenn er mit Argumenten aufgerufen wird. Funktionen werden geschrieben, indem die Parameter der Funktion in Klammern aufgeführt werden, gefolgt vom Pfeilsymbol =>, gefolgt vom Ausdruck, der die Funktion definiert. Zum Beispiel, um eine Funktion namens „MyFunction“ zu erstellen, die zwei Parameter hat und eine Berechnung für parameter1 und parameter2 durchführt:

let
    MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
    MyFunction

Durch Aufrufen von MyFunction() wird folgendes Ergebnis zurückgegeben:

let
    Source = MyFunction(2, 4)
in
    Source

Dieser Code ergibt den Wert 3.

Strukturierte Datenwerte

Die M-Sprache unterstützt die folgenden strukturierten Datenwerte:

Hinweis

Strukturierte Daten können jeden beliebigen M-Wert enthalten. Weitere Informationen finden Sie im Abschnitt Zusätzliche Beispiele strukturierter Daten, um ein paar Beispiele zu sehen.

List

Eine Liste ist eine nullbasierte geordnete Folge von Werten, die in geschweiften Klammerzeichen { } eingeschlossen ist. Die geschweiften Klammerzeichen { } werden auch verwendet, um ein Element aus einer Liste nach Indexposition abzurufen. Weitere Informationen finden Sie unter [Listenwert](#_List_value).

Hinweis

Power Query M unterstützt eine unendliche Listengröße, aber wenn eine Liste als Literal geschrieben wird, hat die Liste eine feste Länge. {1, 2, 3} zum Beispiel hat eine feste Länge von 3.

Im Folgenden finden Sie einige Listenbeispiele.

Wert Typ
{123, true, "A"} Eine Liste, die eine Zahl, einen Wahrheitswert und Text enthält.
{1, 2, 3} Liste mit Zahlen
{
    {1, 2, 3},
    {4, 5, 6}
}
Liste der Liste mit Zahlen
{
    [CustomerID = 1, Name = "Bob", Phone = "123-4567"],
    [CustomerID = 2, Name = "Jim", Phone = "987-6543"]
}
Liste der Datensätze
{123, true, "A"}{0} Gibt den Wert des ersten Elements in einer Liste an. Dieser Ausdruck gibt den Wert 123 zurück.
{
    {1, 2, 3},
    {4, 5, 6}
}{0}{1}
Gibt den Wert des zweiten Elements aus dem ersten Listenelement an. Dieser Ausdruck gibt den Wert 2 zurück.

Datensatz

Ein Datensatz besteht aus mehreren Feldern. Ein Feld ist ein Name-/Wertpaar, wobei der Name ein Textwert ist, der innerhalb des Datensatzes des Feldes eindeutig ist. Die Syntax für Datensatzwerte ermöglicht es, die Namen ohne Anführungszeichen zu schreiben, eine Form, die auch als Bezeichner bezeichnet wird. Ein Bezeichner kann die folgenden zwei Formen annehmen:

  • identifier_name wie z. B. OrderID.

  • #"identifier name" wie z. B. #"Today's data is: ".

Im Folgenden finden Sie einen Datensatz mit den Feldern „OrderID“, „CustomerID“, „Item“ und „Price“ mit den Werten 1, 1, "Fishing rod" und 100.00. Eckige Klammerzeichen [ ] bezeichnen Anfang und Ende eines Datensatzes und werden verwendet, um einen Feldwert aus einem Datensatz zu erhalten. Die folgenden Beispiele zeigen einen Datensatz und wie man den Wert des Elementfelds erhält.

Im Folgenden finden Sie einen Beispieldatensatz:

let Source =
        [
              OrderID = 1,
              CustomerID = 1,
              Item = "Fishing rod",
              Price = 100.00
        ]
in Source

Verwenden Sie eckige Klammern als Source[Item], um den Wert eines Elements zu erhalten:

let Source =
    [
          OrderID = 1,
          CustomerID = 1,
          Item = "Fishing rod",
          Price = 100.00
    ]
in Source[Item] //equals "Fishing rod"

Tabelle

Eine Tabelle ist eine Reihe von Werten, die in benannten Spalten und Zeilen organisiert sind. Der Spaltentyp kann implizit oder explizit sein. Sie können #table verwenden, um eine Liste mit Spaltennamen und eine Liste mit Zeilen zu erstellen. Eine Tabelle mit Werten ist eine Liste in einer Liste. Die geschweiften Klammerzeichen { } werden auch verwendet, um eine Zeile aus einer Tabelle nach Indexposition abzurufen. Weitere Informationen finden Sie in Beispiel 3: Angeben einer Zeile aus einer Tabelle nach Indexposition.

Beispiel 1: Erstellen einer Tabelle mit impliziten Spaltentypen

let
  Source = #table(
    {"OrderID", "CustomerID", "Item", "Price"},
      {
          {1, 1, "Fishing rod", 100.00},
          {2, 1, "1 lb. worms", 5.00}
      })
in
    Source

Beispiel 2: Erstellen einer Tabelle mit expliziten Spaltentypen

let
    Source = #table(
    type table [OrderID = number, CustomerID = number, Item = text, Price = number],
        {
                {1, 1, "Fishing rod", 100.00},
             {2, 1, "1 lb. worms", 5.00}
        }
    )
in
    Source

Die beiden obigen Beispiele erstellen eine Tabelle mit der folgenden Form:

OrderID CustomerID Element Preis
1 1 Angelrute 100,00
2 1 1 Pfund Würmer 5.00

Beispiel 3: Angeben einer Zeile aus einer Tabelle nach Indexposition

let
    Source = #table(
    type table [OrderID = number, CustomerID = number, Item = text, Price = number],
        {
              {1, 1, "Fishing rod", 100.00},
              {2, 1, "1 lb. worms", 5.00}
         }
    )
in
    Source{1}

Dieser Ausdruck gibt den folgenden Datensatz zurück.

Feld Wert
OrderID 2
CustomerID 1
Element 1 Pfund Würmer
Preis 5

Zusätzliche Beispiele strukturierter Daten

Strukturierte Daten können jeden beliebigen M-Wert enthalten. Hier einige Beispiele:

Beispiel 1: Liste mit [Primitive](#_Primitive_value_1)-Werten, [Function](#_Function_value), und [Record](#_Record_value)

let
    Source =
{
   1,
   "Bob",
   DateTime.ToText(DateTime.LocalNow(), "yyyy-MM-dd"),
   [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]
}
in
    Source

Die Auswertung dieses Ausdrucks kann visualisiert werden als:

List Example 1

Beispiel 2: Datensatz mit primitiven Werten und geschachtelten Datensätzen

let
    Source = [CustomerID = 1, Name = "Bob", Phone = "123-4567", Orders =
        {
              [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
            [OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0]
        }]
in
    Source

Die Auswertung dieses Ausdrucks kann visualisiert werden als:

List Example 2

Hinweis

Obwohl viele Werte als Ausdruck geschrieben werden können, ist ein Wert kein Ausdruck. So wird beispielsweise der Ausdruck 1 auf den Wert 1 ausgewertet, der Ausdruck 1+1 auf den Wert 2. Dieser Unterschied ist fein, aber wichtig. Ausdrücke sind wichtig für die Auswertung; Werte sind die Ergebnisse der Auswertung.

if-Ausdruck

Der if-Ausdruck wählt basierend auf einer logischen Bedingung zwischen zwei Ausdrücken aus. Beispiel:

if 2 > 1 then
    2 + 2
else
    1 + 1

Der erste Ausdruck (2 + 2) wird ausgewählt, wenn der logische Ausdruck (2 > 1) TRUE ist, und der zweite Ausdruck (1 + 1) wird ausgewählt, wenn er FALSE ist. Der ausgewählte Ausdruck (in diesem Fall 2 + 2) wird ausgewertet und wird zum Ergebnis des if-Ausdrucks (4).