Uttrykk, verdier og la uttrykk
En power query M-formelspråkspørring består av formeluttrykkstrinn som oppretter en mashup-spørring. Et formeluttrykk kan evalueres (beregnes), noe som gir en verdi. La uttrykket omslutte et sett med verdier som skal beregnes, tilordnes navn og deretter brukes i et etterfølgende uttrykk som følger i setningen. Et la-uttrykk kan for eksempel inneholde en Kilde- variabel som er lik verdien for Text.Proper og gir en tekstverdi i riktig tilfelle.
La uttrykk
let
Source = Text.Proper("hello world")
in
Source
I eksemplet ovenfor Text.Proper("hello world")
evalueres det til "Hello World"
.
De neste inndelingene beskriver verdityper på språket.
Primitiv verdi
En primitiv verdi er en endelt verdi, for eksempel tall, logisk, tekst eller null. En nullverdi kan brukes til å angi fraværet av data.
Type | Eksempelverdi |
---|---|
Binær | 00 00 00 02 // antall poeng (2) |
Dato | 5/23/2015 |
DateTime | 23.05.2015 kl. 12:00:00 |
DateTimeZone | 23.05.2015 kl. 12:00:00 -08:00 |
Varighet | 15:35:00 |
Logisk | sann og usann |
Null | null |
Antall | 0, 1, -1, 1,5 og 2,3e-5 |
Tekstmelding | "abc" |
Tid | 12:34:12 |
Funksjonsverdi
En funksjon er en verdi som, når den aktiveres med argumenter, produserer en ny verdi. Funksjoner skrives ved å vise funksjonens parametere i parenteser, etterfulgt av goes-to-symbolet =>, etterfulgt av uttrykket som definerer funksjonen. Hvis du for eksempel vil opprette en funksjon kalt MyFunction som har to parametere og utfører en beregning på parameter1 og parameter2:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
Kall til MyFunction returnerer resultatet:
let
Source = MyFunction(2, 4)
in
Source
Denne koden produserer verdien 3.
Strukturerte dataverdier
M-språket støtter følgende strukturerte dataverdier:
Merk
Strukturerte data kan inneholde en hvilken som helst M-verdi. Hvis du vil se et par eksempler, kan du gå til Flere strukturerte dataeksempler.
List
En liste er en nullbasert ordnet sekvens med verdier omsluttet av klammeparentestegn { }. Klammeparentestegnene { } brukes også til å hente et element fra en liste etter indeksplassering. Hvis du vil ha mer informasjon, kan du gå til listeverdier.
Merk
Power Query M støtter en uendelig listestørrelse, men hvis en liste er skrevet som en litteral, har listen en fast lengde. {1, 2, 3} har for eksempel en fast lengde på 3.
Nedenfor finner du noen listeeksempler.
Verdi | Type |
---|---|
{123, true, "A"} | Liste som inneholder et tall, en logisk og tekst. |
{1, 2, 3} | Liste over tall |
{ {1, 2, 3}, {4, 5, 6} } |
Liste over tallliste |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] } |
Liste over poster |
{123, true, "A"}{0} | Hent verdien for det første elementet i en liste. Dette uttrykket returnerer verdien 123. |
{ {1, 2, 3}, {4, 5, 6} }{0}{1} |
Hent verdien for det andre elementet fra det første listeelementet. Dette uttrykket returnerer verdien 2. |
Spill inn
En post er et sett med felt. Et felt er et navn/verdipar der navnet er en tekstverdi som er unik i feltets post. Syntaksen for postverdier gjør at navnene kan skrives uten anførselstegn, et skjema som også kalles identifikatorer. En identifikator kan ta følgende to skjemaer:
identifier_name for eksempel OrderID.
#"identifikatornavn", for eksempel #"Dagens data er: ".
Følgende er en post som inneholder felt med navnet «OrdreID», «KundeID», «Element» og «Pris» med verdiene 1, 1, «Fiskestang» og 100,00. Firkantede klammeparentestegn [ ] angir begynnelsen og slutten av et postuttrykk, og brukes til å hente en feltverdi fra en post. Eksemplene nedenfor viser en post og hvordan du henter elementfeltverdien.
Her er en eksempelpost:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source
Hvis du vil hente verdien for et element, bruker du hakeparenteser som Source[Item]
:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Table
En tabell er et sett med verdier organisert i navngitte kolonner og rader. Kolonnetypen kan være implisitt eller eksplisitt. Du kan bruke #table til å opprette en liste over kolonnenavn og en liste over rader. En tabell med verdier er en liste i en liste. Klammeparentestegnene { } brukes også til å hente en rad fra en tabell etter indeksplassering (gå til eksempel 3 – Få en rad fra en tabell etter indeksplassering).
Eksempel 1 – Opprette en tabell med implisitte kolonnetyper
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
})
in
Source
Eksempel 2 – Opprette en tabell med eksplisitte kolonnetyper
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
Begge de forrige eksemplene oppretter en tabell med følgende figur:
OrderID | CustomerID | Vare | Pris |
---|---|---|---|
1 | 1 | Fiskestang | 100.00 |
2 | 1 | 1 lb. ormer | 5,00 |
Eksempel 3 – Få en rad fra en tabell etter indeksplassering
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}
Dette uttrykket returnerer følgende post:
Felt | Verdi |
---|---|
Ordre-ID | 2 |
Kunde-ID | 1 |
Vare | 1 lb. ormer |
Pris | 5 |
Flere strukturerte dataeksempler
Strukturerte data kan inneholde en hvilken som helst M-verdi. Her er noen eksempler:
Eksempel 1 – Liste med [Primitive](#_Primitive_value_1)-verdier, [Funksjon](#_Function_value) og [Post](#_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
Evaluering av dette uttrykket kan visualiseres som:
Eksempel 2 – post som inneholder primitive verdier og nestede poster
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
Evaluering av dette uttrykket kan visualiseres som:
Merk
Selv om mange verdier kan skrives bokstavelig som et uttrykk, er ikke en verdi et uttrykk. Uttrykket 1 evalueres for eksempel til verdien 1. uttrykket 1+1 evalueres til verdien 2. Dette skillet er subtilt, men viktig. Uttrykk er oppskrifter for evaluering; verdiene er resultatene av evalueringen.
Hvis uttrykk
Hvis-uttrykket velges mellom to uttrykk basert på en logisk betingelse. Eksempel:
if 2 > 1 then
2 + 2
else
1 + 1
Det første uttrykket (2 + 2) velges hvis det logiske uttrykket (2 > 1) er sant, og det andre uttrykket (1 + 1) er valgt hvis det er usant. Det valgte uttrykket (i dette tilfellet 2 + 2) evalueres og blir resultatet av hvis-uttrykket (4).