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