Megosztás a következőn keresztül:


Kifejezések, értékek és let kifejezés

A Power Query M képletnyelvi lekérdezése képletkifejezési lépésekből áll, amelyek összefésítési lekérdezést hoznak létre. A képletkifejezések kiértékelhetők (kiszámíthatók), és értéket eredményeznek. A Let kifejezés összefogja a kiszámítandó értékek készletét, hozzárendelt neveket, majd egy későbbi kifejezésben, amely követi az in utasítást . Egy let kifejezés tartalmazhat például egy Forrás változót, amely megegyezik a Text.Proper értékével, és megfelelő esetben szöveges értéket ad meg.

Kifejezés hagyása

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

A fenti Text.Proper("hello world") példában a kiértékelés eredménye a következő lesz "Hello World": .

A következő szakaszok a nyelv értéktípusait ismertetik.

Primitív érték

A primitív érték egyrészes érték, például szám, logikai, szöveg vagy null. Az adatok hiányának jelzésére null érték használható.

Típus Példaérték
Bináris 00 00 00 02 pontszám (2)
Dátum 5/23/2015
Dátum/idő 2015.05.23. 12:00:00
DateTimeZone 2015.05.23. 12:00:00 -08:00
Időtartam 15:35:00
Logikai igaz és hamis
Null null
Szám 0, 1, -1, 1,5 és 2,3e-5
Szöveg "abc"
Idő 12:34:12

Függvény értéke

A függvény olyan érték, amely argumentumokkal meghívva új értéket hoz létre. A függvények a függvény paramétereinek zárójelben való felsorolásával, majd az =>ugrás szimbólummal, majd a függvényt meghatározó kifejezéssel íródnak. Például egy MyFunction nevű függvény létrehozásához, amely két paraméterrel rendelkezik, és számítást hajt végre az 1. és a 2. paraméteren:

let
    MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
    MyFunction

A MyFunction meghívása az eredményt adja vissza:

let
    Source = MyFunction(2, 4)
in
    Source

Ez a kód a 3 értéket állítja elő.

Strukturált adatértékek

Az M nyelv a következő strukturált adatértékeket támogatja:

Feljegyzés

A strukturált adatok bármilyen M értéket tartalmazhatnak. Néhány példa megtekintéséhez lépjen a további strukturált adatokra vonatkozó példákra.

Lista

A lista egy kapcsos zárójelkarakterekbe foglalt értékek nullaalapú rendezett sorozata { }. A kapcsos zárójelek { } karakterekkel is lekérhet egy elemet egy listából indexpozíció alapján. További információ: Listaértékek.

Feljegyzés

A Power Query M támogatja a végtelen listaméretet, de ha egy lista literálként van megírva, a lista rögzített hosszúságú. {1, 2, 3} például rögzített hossza 3.

Az alábbiakban felsorolunk néhány példát.

Érték Típus
{123, true, "A"} Számot, logikait és szöveget tartalmazó lista.
{1, 2, 3} Számok listája
{
    {1, 2, 3},
    {4, 5, 6}
}
Számok listája
{
    [CustomerID = 1, Name = "Bob", Phone = "123-4567"],
    [CustomerID = 2, Name = "Jim", Phone = "987-6543"]
}
Rekordok listája
{123, true, "A"}{0} Lekérheti a lista első elemének értékét. Ez a kifejezés a 123 értéket adja vissza.
{
    {1, 2, 3},
    {4, 5, 6}
}{0}{1}
Kérje le a második elem értékét az első Lista elemből. Ez a kifejezés a 2 értéket adja vissza.

Rögzítés

A rekord mezőkészlet. A mező egy név/érték pár, ahol a név egy olyan szöveges érték, amely egyedi a mező rekordjában. A rekordértékek szintaxisa lehetővé teszi a nevek idézőjelek nélküli írását, egy más néven azonosítóként is ismert űrlapot. Az azonosítók a következő két űrlapot használhatják:

  • identifier_name, például Az OrderID.

  • #"azonosító neve", például #"A mai adatok a következők: ".

Az alábbi rekord az "OrderID", "CustomerID", "Item" és "Price" nevű mezőket tartalmazza 1, 1, "Horgászbot" és 100.00 értékekkel. A szögletes zárójelek [] egy rekordkifejezés elejét és végét jelölik, és egy rekord mezőértékének lekérésére szolgálnak. Az alábbi példák egy rekordot és az Elem mező értékének lekérését mutatják be.

Íme egy példarekord:

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

Egy Elem értékének lekéréséhez szögletes zárójeleket Source[Item]használ:

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

Tábla

A táblázat nevesített oszlopokba és sorokba rendezett értékek halmaza. Az oszloptípus lehet implicit vagy explicit. A #table használatával létrehozhatja az oszlopnevek és a sorok listáját. Az értéktáblázatok listaként szerepelnek a listában. A kapcsos kapcsos zárójelek {} karakterekkel is lekérhetők egy sor egy táblázatból indexpozíció szerint (ugrás a 3. példára – Sor lekérése táblázatból indexpozíció alapján).

1. példa – Táblázat létrehozása implicit oszloptípusokkal

let
  Source = #table(
    {"OrderID", "CustomerID", "Item", "Price"},
      {
          {1, 1, "Fishing rod", 100.00},
          {2, 1, "1 lb. worms", 5.00}
      })
in
    Source

2. példa – Tábla létrehozása explicit oszloptípusokkal

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

Mindkét előző példa létrehoz egy táblázatot a következő alakzattal:

OrderID CustomerID (Ügyfél azonosítója) Elem Ár
0 0 Horgászbot 100,00
2 0 1 lb. férgek 5,00

3. példa – Sor lekérése táblázatból indexpozíció szerint

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}

Ez a kifejezés a következő rekordot adja vissza:

Mező Érték
OrderID 2
Ügyfélazonosító 0
Cikk 1 lb. férgek
Ár 5

További strukturált adat példák

A strukturált adatok bármilyen M értéket tartalmazhatnak. Íme néhány példa:

1. példa – Lista [Primitív](#_Primitive_value_1) értékekkel, [Függvény](#_Function_value) és [Rekord](#_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

A kifejezés kiértékelése a következőképpen jeleníthető meg:

A kifejezést primitív értékkel, függvénnyel és rekorddal ábrázoló táblázat diagramja.

2. példa – Primitív értékeket és beágyazott rekordokat tartalmazó rekord

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

A kifejezés kiértékelése a következőképpen jeleníthető meg:

A kifejezést több primitív értékkel és beágyazott rekordokkal ábrázoló táblázat diagramja.

Feljegyzés

Bár számos érték szó szerint is írható kifejezésként, az érték nem kifejezés. Az 1 kifejezés például az 1 értéket értékeli ki; az 1+1 kifejezés a 2 értéket értékeli ki. Ez a különbség finom, de fontos. A kifejezések kiértékelési receptek; értékek a kiértékelés eredményei.

Ha kifejezés

A ha kifejezés két kifejezés között választ egy logikai feltétel alapján. Példa:

if 2 > 1 then
    2 + 2
else
    1 + 1

Az első kifejezés (2 + 2) ki van jelölve, ha a logikai kifejezés (2 > 1) igaz, és a második kifejezés (1 + 1) van kiválasztva, ha hamis. A kiválasztott kifejezés (ebben az esetben a 2 + 2) kiértékelése és az if kifejezés (4) eredménye lesz.