Sdílet prostřednictvím


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 zdrojovou proměnnou, která se rovná hodnotě Text.Proper a poskytuje 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 0 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 0
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:

Diagram tabulky, která vizualizuje výraz s primitivní hodnotou, funkcí a záznamem

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:

Diagram tabulky, která vizualizuje výraz s několika primitivními hodnotami a vnořenými záznamy

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