Del via


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:

Diagram over en tabell som visualiserer uttrykket med en primitiv verdi, en funksjon og en post.

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:

Diagram over en tabell som visualiserer uttrykket med flere primitive verdier og nestede poster.

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