Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zapytanie języka formuł Power Query M składa się z kroków wyrażeń formuł, które tworzą zapytanie mashupu. Wyrażenie formuły można ocenić (obliczone), dając wartość. Wyrażenie let hermetyzuje zestaw wartości, które mają być obliczane, przypisane nazwy, a następnie używane w kolejnym wyrażeniu, które następuje po instrukcji in . Na przykład wyrażenie let może zawierać zmienną Source, która jest równa wartości Text.Proper i zwraca wartość tekstową w odpowiednim przypadku.
Wyrażenie Let
let
Source = Text.Proper("hello world")
in
Source
W tym przykładzie Text.Proper("hello world") jest obliczana wartość "Hello World".
W następnych sekcjach opisano typy wartości w języku.
Wartość pierwotna
Wartość pierwotna jest wartością jednoczęściową number, taką jak , logical, textlub null. Wartość null może służyć do wskazywania braku jakichkolwiek danych.
| Typ | Przykładowa wartość |
|---|---|
| Plik binarny | 00 00 00 02 // liczba punktów (2) |
| Data | 5/23/2015 |
| DateTime | 23.05.2015 12:00:00 |
| DateTimeZone | 5/23/2015 12:00:00 -08:00 |
| Czas trwania | 15:35:00 |
| Wartość logiczna | true i false |
| Null (zero) | null |
| Liczba | 0, 1, -1, 1.5 i 2.3e-5 |
| Tekst | "abc" |
| Czas | 12:34:12 |
Wartość funkcji
Funkcja jest wartością, która po wywołaniu z argumentami generuje nową wartość. Funkcje są zapisywane przez wyświetlenie listy parametrów funkcji w nawiasach, a następnie symbol przechodzi do =>, a następnie wyrażenie definiujące funkcję. Aby na przykład utworzyć funkcję o nazwie MyFunction , która ma dwa parametry i wykonuje obliczenia na parametrze parameter1 i parametr2:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
Wywołanie funkcji MyFunction zwraca wynik:
let
Source = MyFunction(2, 4)
in
Source
Ten kod generuje wartość 3.
Wartości danych ustrukturyzowanych
Język M obsługuje następujące wartości danych ustrukturyzowanych:
Uwaga
Dane ustrukturyzowane mogą zawierać dowolną wartość języka M. Aby wyświetlić kilka przykładów, przejdź do sekcji Dodatkowe przykłady danych strukturalnych.
List
Lista to uporządkowana od zera sekwencja wartości ujęta w nawiasy klamrowe { }. Znaki nawiasu klamrowego { } są również używane do pobierania elementu z listy według pozycji indeksu. Aby uzyskać więcej informacji, przejdź do pozycji Wartości listy.
Uwaga
Dodatek Power Query M obsługuje nieskończony rozmiar listy, ale jeśli lista jest zapisywana jako literał, lista ma stałą długość. Na przykład {1, 2, 3} ma stałą długość 3.
Poniżej przedstawiono kilka przykładów listy.
| Wartość | Typ |
|---|---|
| {123, true, "A"} | Lista zawierająca liczbę, logiczną i tekstową. |
| {1, 2, 3} | Lista liczb |
| { {1, 2, 3}, {4, 5, 6} } |
Lista liczb |
| { [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] } |
Lista rekordów |
| {123, true, "A"}{0} | Pobierz wartość pierwszego elementu na liście. To wyrażenie zwraca wartość 123. |
| { {1, 2, 3}, {4, 5, 6} }{0}{1} |
Pobierz wartość drugiego elementu z pierwszego elementu List. To wyrażenie zwraca wartość 2. |
Nagraj
Rekord jest zestawem pól. Pole jest parą nazwa/wartość, w której nazwa jest wartością tekstową unikatową w rekordzie pola. Składnia wartości rekordów umożliwia pisanie nazw bez cudzysłowów, formularz nazywany również identyfikatorami. Identyfikator może przyjmować następujące dwie formy:
identifier_name, takich jak OrderID.
#"nazwa identyfikatora", taka jak #"Dzisiejsze dane to: ".
Poniżej znajduje się rekord zawierający pola o nazwach "OrderID", "CustomerID", "Item" i "Price" z wartościami 1, 1, "Fishing rod" i 100.00. Znaki nawiasu klamrowego [ ] oznaczają początek i koniec wyrażenia rekordu i są używane do pobierania wartości pola z rekordu. W poniższych przykładach pokazano rekord i sposób uzyskiwania wartości pola Element.
Oto przykładowy rekord:
let
Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in
Source
Aby uzyskać wartość elementu, należy użyć nawiasów kwadratowych jako Source[Item]:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
],
GetItem = Source[Item] //equals "Fishing rod"
in
GetItem
Table
Tabela to zestaw wartości zorganizowanych w nazwane kolumny i wiersze. Typ kolumny może być niejawny lub jawny. Za pomocą #table można utworzyć listę nazw kolumn i listy wierszy. Tabela wartości jest listą na liście. Znaki nawiasu klamrowego { } są również używane do pobierania wiersza z tabeli według pozycji indeksu (przejdź do pozycji Przykład 3 — Pobierz wiersz z tabeli według pozycji indeksu).
Przykład 1 — tworzenie tabeli z niejawnymi typami kolumn
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
}
)
in
Source
Przykład 2 — tworzenie tabeli z jawnymi typami kolumn
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
Oba poprzednie przykłady tworzą tabelę o następującym kształcie:
| OrderID | CustomerID (Identyfikator klienta) | Towar | Cena |
|---|---|---|---|
| 1 | 1 | Wędka | 100.00 |
| 2 | 1 | 1lb. robaki | 5.00 |
Przykład 3 — pobieranie wiersza z tabeli według pozycji indeksu
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}
To wyrażenie zwraca następujący rekord:
| Pole | Wartość |
|---|---|
| Identyfikator zamówienia | 2 |
| Identyfikator klienta | 1 |
| Produkt | 1lb. robaki |
| Cena | 5 |
Dodatkowe przykłady danych ustrukturyzowanych
Dane ustrukturyzowane mogą zawierać dowolną wartość języka M. Oto kilka przykładów:
Przykład 1 — lista z wartościami [Primitive](#_Primitive_value_1), [Function](#_Function_value) i [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
Ocenianie tego wyrażenia można wizualizować jako:
Przykład 2 — rekord zawierający wartości pierwotne i zagnieżdżone rekordy
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
Ocenianie tego wyrażenia można wizualizować jako:
Uwaga
Chociaż wiele wartości można zapisywać dosłownie jako wyrażenie, wartość nie jest wyrażeniem. Na przykład wyrażenie 1 oblicza wartość 1; wyrażenie 1+1 oblicza wartość 2. To rozróżnienie jest subtelne, ale ważne. Wyrażenia to przepisy na ocenę; wartości to wyniki oceny.
Wyrażenie If
Wyrażenie if wybiera między dwoma wyrażeniami na podstawie warunku logicznego. Na przykład:
if 2 > 1 then
2 + 2
else
1 + 1
Pierwsze wyrażenie (2 + 2) jest zaznaczone, jeśli wyrażenie logiczne (2 > 1) ma wartość true, a drugie wyrażenie (1 + 1) jest zaznaczone, jeśli jest to fałsz. Wybrane wyrażenie (w tym przypadku 2 + 2) jest obliczane i staje się wynikiem wyrażenia if (4).