Zdieľať cez


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:

Diagram tabuľky, ktorá vizualizuje výraz s primitívnou hodnotou, funkciou a záznamom.

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:

Diagram tabuľky, ktorá vizualizuje výraz s niekoľkými primitívnymi hodnotami a vnorenými záznamami.

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).