Jaa


Lausekkeet, arvot ja let-lauseke

Power Query M -kaavakielikysely koostuu kaavan lausekevaiheista , jotka luovat koostekyselyn. Kaavalauseke voidaan laskea niin, että tulokseksi saadaan arvo. Let-lauseke kiteyttää joukon arvoja laskettavaksi, määritettäväksi nimeksi ja käytettäväksi sitten lausekkeessa, joka seuraa in-lauseketta. Let-lauseke voi esimerkiksi sisältää Source -muuttujan, joka on yhtä suuri kuin Text.Proper arvo ja tuottaa kirjainkooltaan oikean tekstiarvon.

Let-lauseke

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

Yllä olevassa esimerkissä Text.Proper("hello world") arvoksi "Hello World"lasketaan .

Seuraavissa osissa kuvataan kielen arvotyypit.

Primitiiviarvo

Primitiiviarvo on yksiosainen arvo, kuten luku, looginen arvo, teksti tai tyhjäarvo. Tyhjäarvon avulla voidaan ilmaista kaikkien tietojen puuttumista.

Tyyppi Esimerkkiarvo
Binaarinen 00 00 00 02 // pisteiden määrä (2)
Päivämäärä 5/23/2015
DateTime 23.5.2015 klo 12.00.00
Päivämäärä, aika ja aikavyöhyke 23.5.2015 klo 12.00.00 -08.00
Kesto 15:35:00
Looginen tosi ja epätosi
Tyhjäarvo tyhjä
Määrä 0, 1, -1, 1.5, and 2.3e-5
Teksti "abc"
Aika KLO 12.34.12

Funktion arvo

Funktio on arvo, joka argumenteilla käynnistettynä tuottaa uuden arvon. Funktiot kirjoitetaan luettelemalla funktion parametrit sulkeissa, niiden jäljessä merkki =>, sen jäljessä funktion määrittävä lauseke. Esimerkiksi jos haluat luoda MyFunction-nimisen funktion, jossa on kaksi parametria ja joka suorittaa laskutoimituksen parametreille parameter1 ja parameter2:

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

MyFunction-funktion kutsuminen palauttaa tuloksen:

let
    Source = MyFunction(2, 4)
in
    Source

Tämä koodi tuottaa arvon 3.

Jäsennettyjä tietoarvoja

M-kieli tukee seuraavia jäsennettyjä tietoarvoja:

Muistiinpano

Jäsennetty tieto voi sisältää minkä tahansa M-arvon. Katso pari esimerkkiä artikkelista Muita esimerkkejä jäsennettyistä tiedoista.

List

Luettelo on nollapohjainen järjestetty arvojen sarja, joka on kirjoitettu aaltosulkeisiin { }. Aaltosulkeita { } käytetään myös tietoyksikön noutamiseen luettelosta hakemistosijainnin mukaan. Lisätietoja on kohdassa Luetteloarvot.

Muistiinpano

Power Query M tukee ääretöntä luettelokokoa, mutta jos luettelo on kirjoitettu literaalina, luettelolla on kiinteä pituus. Esimerkiksi {1, 2, 3} on kiinteä pituus 3.

Seuraavassa on joitakin esimerkkejä luetteloista.

Arvo Tyyppi
{123, true, "A"} Luettelo, joka sisältää luvun, loogisen luvun ja tekstin.
{1, 2, 3} Luettelo luvuista
{
    {1, 2, 3},
    {4, 5, 6}
}
Luettelo lukujen luetteloista
{
    [Asiakastunnus = 1, Nimi = "Bob", Puhelin = "123-4567"],
    [Asiakastunnus = 2, Nimi = "Jim", Puhelin = "987-6543"]
}
Tietueluettelo
{123, true, "A"}{0} Hae luettelon ensimmäisen tietoyksikön arvo. Tämä lauseke palauttaa arvon 123.
{
    {1, 2, 3},
    {4, 5, 6}
}{0}{1}
Hae toisen tietoyksikön arvo luettelon ensimmäisestä osasta. Tämä lauseke palauttaa arvon 2.

Nauhoita

Tietue on joukko kenttiä. Kenttä on nimi/arvo-pari, jossa nimi on kentän tietueen sisällä ainutlaatuinen tekstiarvo. Tietuearvojen syntaksi sallii nimien kirjoittamisen ilman lainausmerkkejä. Tässä muodossa niitä kutsutaan myös tunnisteiksi. Tunniste voi olla seuraavassa kahdessa muodossa:

  • identifier_name kuten OrderID.

  • #"tunnisteen nimi", kuten #"Päivän tiedot ovat: ".

Seuraavassa on tietue, joka sisältää kentät nimeltä "OrderID", "CustomerID", "Item" ja "Price", joiden arvot ovat 1, 1, "Onkivapa" ja 100,00. Hakasulkumerkit [ ] ilmaisevat tietuelausekkeen alkua ja loppua, ja niitä käytetään kenttäarvon hakemiseen tietueesta. Seuraavissa esimerkeissä näytetään tietue ja tietoyksikkökentän arvon hakeminen.

Tässä on esimerkkitietue:

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

Jos haluat tietoyksikköarvon, käytä hakasulkeita seuraavasti Source[Item]:

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

Table

Taulukko on joukko arvoja, jotka on järjestetty nimetyiksi sarakkeiksi ja riveiksi. Saraketyyppi voi olla implisiittinen tai eksplisiittinen. #table avulla voit luoda sarakenimien luettelon ja riviluettelon. Arvotaulukko on luettelo luettelossa. Aaltosulkeita { } käytetään myös rivin noutamiseen taulukosta hakemistosijainnin mukaan (siirry esimerkkiin 3 – Hae rivi taulukosta hakemistosijainnin mukaan).

Esimerkki 1 – Luo taulukko, joka sisältää implisiittisiä saraketyyppejä

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

Esimerkki 2 – Luo taulukko, joka sisältää eksplisiittisiä saraketyyppejä

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

Molemmat edelliset esimerkit luovat taulukon, jolla on seuraava muoto:

OrderID Asiakastunnus Nimike Hinta
1 1 Onki 100.00
2 1 1 kilo matoja 5.00

Esimerkki 3 – Hae rivi taulukosta hakemistosijainnin mukaan

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}

Tämä lauseke palauttaa seuraavan tietueen:

Kenttä Arvo
OrderID 2
Asiakastunnus 1
Kohde 1 kilo matoja
Price 5

Muita esimerkkejä jäsennettyistä tiedoista

Jäsennetty tieto voi sisältää minkä tahansa M-arvon. Seuraavassa on muutamia esimerkkejä:

Esimerkki 1 – Luettelo, jossa [Primitive](#_Primitive_value_1)-arvot, [Function](#_Function_value) ja [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

Tämän lausekkeen arviointi voidaan visualisoida seuraavasti:

Kaavio taulukosta, joka visualisoi lausekkeen primitiiviarvolla, funktiolla ja tietueella.

Esimerkki 2 – primitiiviarvoja ja sisäkkäisiä tietueita sisältävä tietue

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

Tämän lausekkeen arviointi voidaan visualisoida seuraavasti:

Kaavio taulukosta, joka visualisoi lausekkeen useilla primitiivisillä arvoilla ja sisäkkäisistä tietueista.

Muistiinpano

Vaikka monet arvot voidaan kirjoittaa kirjaimellisesti lausekkeena, arvo ei ole lauseke. Esimerkiksi lauseke 1 antaa tulokseksi arvon 1; lauseke 1 + 1 antaa tulokseksi arvon 2. Tämä ero on hienovarainen, mutta tärkeä. Lausekkeet ovat arvioimista varten reseptejä; -arvot ovat arvioinnin tuloksia.

If-lauseke

If-lauseke valitsee kahdesta lausekkeesta kahden loogisen ehdon perusteella. Esimerkkejä:

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

Ensimmäinen lauseke (2 + 2) valitaan, jos looginen lauseke (2 > 1) on tosi, ja toinen lauseke (1 + 1) valitaan, jos se on epätosi. Valittu lauseke (tässä tapauksessa 2 + 2) lasketaan ja siitä tulee if-lausekkeen tulos (4).