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. Gehen Sie zum Abschnitt Zusätzliche Beispiele strukturierter Daten, um ein paar Beispiele zu sehen.
Liste
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 hierzu können Sie in Listenwerte aufrufen.
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-Wert-Paar, 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 vorherigen 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:
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:
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).