Jaa kautta


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

Tässä esimerkissä Text.Proper("hello world") arvioidaan ."Hello World"

Seuraavissa osissa kuvataan kielen arvotyypit.

Primitiiviarvo

Alkeisarvo on yksiosainen arvo, kuten , numberlogical, tai textnull. Arvoa null voidaan käyttää osoittamaan, että tietoja ei ole.

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 ja 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 tekstiarvo, joka on yksilöllinen kentän tietueessa. 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
    ],
    GetItem = Source[Item] //equals "Fishing rod"
in
    GetItem

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