Výrazy, hodnoty a výraz let
Dotaz jazyka vzorců Power Query M se skládá z kroků výrazů vzorců, které vytvoří mashupový dotaz. Výraz vzorce je možné vyhodnotit (vypočítat) a získat hodnotu. Výraz let zapouzdřuje sadu hodnot, které se mají vypočítat, přiřadit názvy a pak použít v následném výrazu, který následuje za příkazem. Výraz let může například obsahovat proměnnou Source, která se rovná hodnotě Text.Proper a vyvolá textovou hodnotu ve správném případě.
Výraz Let
let
Source = Text.Proper("hello world")
in
Source
V příkladu výše Text.Proper("hello world")
se vyhodnotí jako "Hello World"
.
Další části popisují typy hodnot v jazyce.
Primitivní hodnota
Primitivní hodnota je jedna část, například číslo, logické, text nebo hodnota null. Hodnotu null lze použít k označení nepřítomnosti jakýchkoli dat.
Typ | Příklad hodnoty |
---|---|
Binární | 00 00 00 02 // počet bodů (2) |
Datum | 5/23/2015 |
DateTime | 5.23.2015 12:00:00 |
DateTimeZone | 5.23.2015 12:00:00 -08:00 |
Doba trvání | 15:35:00 |
Logický | true a false |
Null | null |
Počet | 0, 1, -1, 1,5 a 2,3e-5 |
Text | "abc" |
Čas | 12:34:12 |
Hodnota funkce
Funkce je hodnota, která při vyvolání s argumenty vytvoří novou hodnotu. Funkce se zapisují výpisem parametrů funkce v závorkách a následným znakem goes-to =>, za kterým následuje výraz definující funkci. Chcete-li například vytvořit funkci s názvem MyFunction , která má dva parametry, a provede výpočet parametru1 a parametr2:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
Volání MyFunction vrátí výsledek:
let
Source = MyFunction(2, 4)
in
Source
Tento kód vytvoří hodnotu 3.
Hodnoty strukturovaných dat
Jazyk M podporuje následující hodnoty strukturovaných dat:
Poznámka:
Strukturovaná data můžou obsahovat libovolnou hodnotu M. Pokud chcete zobrazit několik příkladů, přejděte k dalším příkladům strukturovaných dat.
List
Seznam je seřazená sekvence hodnot založená na nule uzavřených ve složených závorce { }. Složené závorky { } slouží také k načtení položky ze seznamu podle pozice indexu. Další informace najdete v seznamu hodnot.
Poznámka:
Power Query M podporuje neomezenou velikost seznamu, ale pokud je seznam napsaný jako literál, má seznam pevnou délku. Například {1, 2, 3} má pevnou délku 3.
Následuje několik příkladů seznamu.
Hodnota | Typ |
---|---|
{123, true, "A"} | Seznam obsahující číslo, logickou hodnotu a text |
{1, 2, 3} | Seznam čísel |
{ {1, 2, 3}, {4, 5, 6} } |
Seznam čísel |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] } |
Seznam záznamů |
{123, true, "A"}{0} | Získá hodnotu první položky v seznamu. Tento výraz vrátí hodnotu 123. |
{ {1, 2, 3}, {4, 5, 6} }{0}{1} |
Získá hodnotu druhé položky z prvního prvku List. Tento výraz vrátí hodnotu 2. |
Zaznamenat
Záznam je sada polí. Pole je dvojice název/hodnota, kde název je textová hodnota, která je jedinečná v záznamu pole. Syntaxe hodnot záznamů umožňuje zápis názvů bez uvozovek, formulář označovaný také jako identifikátory. Identifikátor může mít následující dvě formy:
identifier_name, například ORDERID.
#"název identifikátoru", například #"Dnešní data jsou: ".
Následuje záznam obsahující pole s názvem OrderID, CustomerID, Item a Price s hodnotami 1, 1, "Fishing rod" a 100,00. Hranaté závorky [ ] označují začátek a konec výrazu záznamu a slouží k získání hodnoty pole ze záznamu. Následující příklady ukazují záznam a způsob získání hodnoty pole Item.
Tady je příklad záznamu:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source
Chcete-li získat hodnotu položky, použijte hranaté závorky jako Source[Item]
:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Table
Tabulka je sada hodnot uspořádaných do pojmenovaných sloupců a řádků. Typ sloupce může být implicitní nebo explicitní. Pomocí #table můžete vytvořit seznam názvů sloupců a seznamu řádků. Tabulka hodnot je seznam v seznamu. Složené závorky { } slouží také k načtení řádku z tabulky podle pozice indexu (přejděte na Příklad 3 – Získání řádku z tabulky podle pozice indexu).
Příklad 1 – Vytvoření tabulky s implicitními typy sloupců
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
})
in
Source
Příklad 2 – Vytvoření tabulky s explicitními typy sloupců
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 předchozí příklady vytvoří tabulku s následujícím obrazcem:
OrderID | CustomerID | Položka | Cena |
---|---|---|---|
1 | 1 | Rybářský prut | 100.00 |
2 | 1 | 1 lb. červi | 5.00 |
Příklad 3 – Získání řádku z tabulky podle pozice indexu
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}
Tento výraz vrátí následující záznam:
Pole | Hodnota |
---|---|
ORDERID | 2 |
CUSTOMERID | 1 |
Položka | 1 lb. červi |
Cena | 5 |
Další příklady strukturovaných dat
Strukturovaná data můžou obsahovat libovolnou hodnotu M. Několik příkladů:
Příklad 1 – Seznam s hodnotami [Primitive](#_Primitive_value_1), [Function](#_Function_value) a [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
Vyhodnocení tohoto výrazu lze vizualizovat takto:
Příklad 2 – záznam obsahující primitivní hodnoty a vnořené záznamy
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
Vyhodnocení tohoto výrazu lze vizualizovat takto:
Poznámka:
I když mnoho hodnot lze zapsat doslova jako výraz, hodnota není výraz. Například výraz 1 se vyhodnotí jako hodnota 1; výraz 1+1 se vyhodnotí jako hodnota 2. Toto rozlišení je jemné, ale důležité. Výrazy jsou recepty pro vyhodnocení; hodnoty jsou výsledky vyhodnocení.
Výraz If
Výraz if vybere mezi dvěma výrazy na základě logické podmínky. Příklad:
if 2 > 1 then
2 + 2
else
1 + 1
První výraz (2 + 2) je vybrán, pokud je logický výraz (2 > 1) pravdivý a druhý výraz (1 + 1) je vybrán, pokud je false. Vybraný výraz (v tomto případě 2 + 2) se vyhodnotí a stane se výsledkem výrazu if (4).