Výrazy, hodnoty a výraz let
Dotaz jazyka vzorcov Power Query M pozostáva z krokov výrazu vzorca, ktoré vytvárajú dotaz mashup. Výraz vzorca možno vyhodnotiť (vypočítať) a získať výsledok v zadaní hodnoty. Výraz let obsahuje množinu vypočítavaných hodnôt, ktorým sa priradia názvy a ktoré sa potom použijú v následnom výraze, ktorý nasleduje po výraze in . Výraz let môže napríklad obsahovať premennú Source , ktorá sa rovná hodnote Text.Proper a vráti textovú hodnotu s veľkými a veľkými písmenami.
Výraz Let
let
Source = Text.Proper("hello world")
in
Source
V príklade uvedenom vyššie Text.Proper("hello world")
sa vyhodnotí ako "Hello World"
.
Nasledujúce časti popisujú typy hodnôt v jazyku.
Primitívna hodnota
Primitívna hodnota je jednodielna hodnota, ako je napríklad číslo, logická hodnota, text alebo hodnota null. Hodnotu null možno použiť na označenie absencie akýchkoľvek údajov.
Typ | Ukážková hodnota |
---|---|
Binárne | 00 00 00 02 // počet bodov (2) |
Date (Dátum) | 5/23/2015 |
Dátum a čas | 23. 5. 2015 12:00:00 |
DateTimeZone (Dátum a časové pásmo) | 23. 5. 2015 12:00:00 -08:00 |
Trvanie | 15:35:00 |
Logický | true a false |
Nula | null |
Číslo | 0, 1, -1, 1.5 a 2.3e-5 |
Text | "abc" |
Čas | 12:34:12 PM (popoludní) |
Hodnota funkcie
Funkcia je hodnota, ktorá pri vyvolaní s argumentmi vyprodukuje novú hodnotu. Funkcie sa píšu uvedením parametrov funkcie v zátvorkách, potom symbolu ide-to =>, za ktorým nasleduje výraz definujúci funkciu. Ak napríklad chcete vytvoriť funkciu s názvom MyFunction , ktorá má dva parametre a vykoná výpočet s parametrom1 a parametrom2:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
Volanie funkcie MyFunction vráti výsledok:
let
Source = MyFunction(2, 4)
in
Source
Tento kód vyprodukuje hodnotu 3.
Hodnoty štruktúrovaných údajov
Jazyk M podporuje nasledujúce hodnoty štruktúrovaných údajov:
Poznámka
Štruktúrované údaje môžu obsahovať ľubovoľnú hodnotu jazyka M. Niekoľko príkladov si môžete pozrieť v ďalších príkladoch štruktúrovaných údajov.
List
Zoznam je zoradená postupnosť hodnôt založená na nule, ktorá je uzavretá v znakoch zložených zátvoriek { }. Znaky zložených zátvoriek { } sa tiež používajú na načítanie položky zo zoznamu podľa indexovej pozície. Ďalšie informácie nájdete v časti Hodnoty zoznamu.
Poznámka
Power Query M podporuje nekonečnú veľkosť zoznamu, ale ak je zoznam zapísaný ako literál, zoznam má pevnú dĺžku. Napríklad zoznam {1, 2, 3} má pevnú dĺžku 3.
Nižšie je uvedených niekoľko príkladov zoznamu.
Hodnota | Typ |
---|---|
{123, true, "A"} | Zoznam obsahujúci číslo, logickú hodnotu a text. |
{1, 2, 3} | Zoznam čísel |
{ {1, 2, 3}, {4, 5, 6} } |
Zoznam zoznamov čísel |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] } |
Zoznam záznamov |
{123, true, "A"}{0} | Načítanie hodnoty prvej položky v zozname. Tento výraz vráti hodnotu 123. |
{ {1, 2, 3}, {4, 5, 6} }{0}{1} |
Načítanie hodnoty druhej položky z prvého prvku Zoznam. Tento výraz vráti hodnotu 2. |
Record
Záznam je množina polí. Pole je dvojica názov-hodnota, kde názov je textová hodnota, ktorá je v rámci záznamu danej poľa jedinečná. Syntax pre hodnoty záznamov umožňuje zápis názvov bez úvodzoviek. Ide o formu, ktorá sa označuje aj ako identifikátory. Identifikátor môže mať tieto dve formy:
identifier_name napríklad ORDERID.
#"názov identifikátora", napríklad #"Dnešné údaje: ".
V nasledujúcom texte je záznam obsahujúci polia s názvami OrderID, CustomerID, Item a Price s hodnotami 1, 1, "Fishing rod" a 100.00. Znaky hranatých zátvoriek [ ] označujú začiatok a koniec výrazu záznamu a používajú sa na načítanie hodnoty poľa zo záznamu. Nasledujúce príklady zobrazujú záznam a postup na načítanie hodnoty poľa Item.
Tu je príklad záznamu:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source
Na načítanie hodnoty poľa Item sa použijú hranaté zátvorky ako Source[Item]
:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Tabuľka
Tabuľka je množina hodnôt usporiadaných do pomenovaných stĺpcov a riadkov. Typ stĺpca môže byť implicitný alebo explicitný. Pomocou #table môžete vytvoriť zoznam názvov stĺpcov a zoznam riadkov. Tabuľka hodnôt je zoznam v zozname. Znaky zložených zátvoriek { } sa tiež používajú na načítanie riadka z tabuľky podľa indexovej pozície (prejdite na Príklad 3 – načítanie riadka z tabuľky podľa indexovej pozície).
Príklad 1 – vytvorenie tabuľky s implicitnými typmi stĺpcov
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
})
in
Source
Príklad 2 – vytvorenie tabuľky s explicitnými typmi stĺpcov
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 predchádzajúce príklady vytvoria tabuľku s nasledujúcim tvarom:
OrderID | CustomerID | Položka | Cena |
---|---|---|---|
1 | 1 | Rybársky prút | 100.00 |
2 | 1 | 1 lb. worms | 5.00 |
Príklad 3 – načítanie riadka z tabuľky podľa indexovej pozície
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áti nasledujúci záznam:
Pole | Hodnota |
---|---|
OrderID | 2 |
ID zákazníka | 1 |
Položka | 1 lb. worms |
Cena | 5 |
Ďalšie príklady štruktúrovaných údajov
Štruktúrované údaje môžu obsahovať ľubovoľnú hodnotu jazyka M. Tu sú niektoré príklady:
Príklad 1 – zoznam 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
Vyhodnotenie tohto výrazu možno vizualizovať ako:
Príklad 2 – záznam obsahujúci primitívne hodnoty a vnorené 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
Vyhodnotenie tohto výrazu možno vizualizovať ako:
Poznámka
Hoci mnohé hodnoty možno zapísať presne ako výraz, hodnota nie je výrazom. Napríklad výraz 1 sa vyhodnotí na hodnotu 1. Výraz 1 +1 sa vyhodnotí na hodnotu 2. Tento rozdiel je malý, ale dôležitý. Výrazy sú recepty na vyhodnotenie; hodnoty sú výsledky vyhodnotenia.
Výraz If
Výraz if vyberie medzi dvomi výrazmi na základe logickej podmienky. Napríklad:
if 2 > 1 then
2 + 2
else
1 + 1
Prvý výraz (2 + 2) sa vyberie, ak je logický výraz (2 > 1) pravdivý, a druhý výraz (1 + 1) sa vyberie, ak je nepravdivý. Vybratý výraz (v tomto prípade 2 + 2) sa vyhodnotí a bude výsledkom výrazu if (4).