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 ve správném případě vrátí textovou hodnotu.

Výraz Let

let
    Source = Text.Proper("hello world")
in
    Source

V předchozím příkladu se text.Proper("hello world") 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)
Date 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í funkce 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ů, podívejte se na další příklady strukturovaných dat.

Seznam

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. Viz [Hodnota seznamu](#_List_value).

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", Telefon = "123-4567"],
    [CustomerID = 2, Name = "Jim", Telefon = "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 Položka.

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 Zdroj[Položka]:

let Source =
    [
          OrderID = 1,
          CustomerID = 1,
          Item = "Fishing rod",
          Price = 100.00
    ]
in Source[Item] //equals "Fishing rod"

Tabulka

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řejít 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 výše uvedené 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
Kódobjednávky 2
Kódzákazníka 1
Položka 1 lb. červi
Cena 5

Další příklady strukturovaných dat

Strukturovaná data můžou obsahovat libovolnou hodnotu M. Zde je uvedeno 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:

List Example 1

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:

List Example 2

Poznámka

Ačkoli 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).