Share via


Udtryk, værdier og let-udtryk

En M-formelsprogforespørgsel i Power Query består af trin til formeludtryk, der opretter en miksforespørgsel. Et formeludtryk kan evalueres (beregnes) og give en værdi. Let-udtrykket indkapsler et sæt værdier, der skal beregnes, tildelte navne og bruges derefter i et efterfølgende udtryk, der følger efter in-sætningen. Et let-udtryk kan f.eks. indeholde en kildevariabel , der er lig med værdien af Text.Proper() og returnerer en tekstværdi med korrekt store og små bogstaver.

Let-udtryk

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

I eksemplet ovenfor evalueres Text.Proper("hello world") til "Hello World".

I de næste afsnit beskrives værdityper på sproget.

Primitiv værdi

En primitiv værdi er en enkeltdelt værdi, f.eks. et tal, en logisk værdi, en tekst eller en null-værdi. En null-værdi kan bruges til at angive fraværet af data.

Skriv Eksempelværdi
Binær 00 00 00 02 // antal punkter (2)
Date 5/23/2015
Datetime 23-05-2015 12:00:00
DateTimeZone 23-05-2015 12:00:00 -08:00
Varighed 15:35:00
Logisk true og false
Null null
nummer 0, 1, -1, 1.5 og 2.3e-5
Text "abc"
Tid 12:34:12 PM

Funktionsværdi

En funktion er en værdi, der, når den aktiveres med argumenter, opretter en ny værdi. Funktioner skrives ved at angive funktionens parametre i parentes efterfulgt af symbolet =>, efterfulgt af det udtryk, der definerer funktionen. Hvis du f.eks. vil oprette en funktion med navnet "MyFunction", der har to parametre og udfører en beregning på parameter1 og parameter2:

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

Hvis du kalder MyFunction(), returneres resultatet:

let
    Source = MyFunction(2, 4)
in
    Source

Denne kode giver værdien 3.

Strukturerede dataværdier

M-sproget understøtter følgende strukturerede dataværdier:

Bemærk

Strukturerede data kan indeholde en hvilken som helst M-værdi. Hvis du vil se et par eksempler, skal du se Yderligere strukturerede dataeksempler.

Liste

En liste er en nulbaseret sorteret sekvens af værdier omsluttet af krøllede klammeparenteser { }. Krøllede klammeparenteser { } bruges også til at hente et element fra en liste efter indeksplacering. Se [Listeværdi](#_List_value).

Bemærk

Power Query M understøtter en uendelig listestørrelse, men hvis en liste skrives som en konstant, har listen en fast længde. {1, 2, 3} har f.eks. en fast længde på 3.

Følgende er nogle listeeksempler .

Værdi Skriv
{123, sand, "A"} Liste, der indeholder et tal, en logisk værdi og tekst.
{1, 2, 3} Liste over tal
{
    {1, 2, 3},
    {4, 5, 6}
}
Liste over tal
{
    [CustomerID = 1, Name = "Bob", Telefon = "123-4567"],
    [CustomerID = 2, Name = "Jim", Telefon = "987-6543"]
}
Liste over poster
{123, sand, "A"}{0} Hent værdien af det første element på en liste. Dette udtryk returnerer værdien 123.
{
    {1, 2, 3},
    {4, 5, 6}
}{0}{1}
Hent værdien af det andet element fra det første listeelement. Dette udtryk returnerer værdien 2.

Post

En post er et sæt felter. Et felt er et navne-/værdipar, hvor navnet er en tekstværdi, der er entydig i feltets post. Syntaksen for postværdier gør det muligt at skrive navnene uden anførselstegn, en formular, der også kaldes identifikatorer. En identifikator kan have følgende to former:

  • identifier_name f.eks. OrderID.

  • #"id-navn", f.eks. #"Dagens data er: ".

Følgende er en post, der indeholder felter med navnet "OrderID", "CustomerID", "Item" og "Price" med værdierne 1, 1, "Fishing rod" og 100,00. Firkantede klammeparenteser [ ] angiver starten og slutningen af et postudtryk og bruges til at hente en feltværdi fra en post. Følgende eksempler viser en post, og hvordan du henter feltværdien Element.

Her er et eksempel på en post:

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

Hvis du vil hente værdien af et element, skal du bruge kantede parenteser som Kilde[Element]:

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

Tabel

En tabel er et sæt værdier, der er organiseret i navngivne kolonner og rækker. Kolonnetypen kan være implicit eller eksplicit. Du kan bruge #table til at oprette en liste over kolonnenavne og en liste over rækker. En tabel med værdier er en liste på en liste. Krøllede klammeparenteser { } bruges også til at hente en række fra en tabel efter indeksplacering (gå til Eksempel 3 – Hent en række fra en tabel efter indeksplacering).

Eksempel 1 – Opret en tabel med implicitte 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 – opret en tabel med eksplicitte 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 eksempler ovenfor opretter en tabel med følgende figur:

OrderID CustomerID Punkt Pris
0 1 Fiskestang 100.00
2 1 1 lb. orme 5.00

Eksempel 3 – hent en række fra en tabel efter indeksplacering

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 udtryk returnerer følgende post:

Felt Værdi
Ordre-id 2
Kunde 1
Punkt 1 lb. orme
Price 5

Yderligere eksempler på strukturerede data

Strukturerede data kan indeholde en hvilken som helst M-værdi. Her er nogle eksempler:

Eksempel 1 - Liste med [Primitive](#_Primitive_value_1)-værdier, [Function](#_Function_value) og [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

Evaluering af dette udtryk kan visualiseres som:

List Example 1

Eksempel 2 – Post, der indeholder primitive værdier og indlejrede 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 af dette udtryk kan visualiseres som:

List Example 2

Bemærk

Selvom mange værdier kan skrives bogstaveligt som et udtryk, er en værdi ikke et udtryk. Udtrykket 1 evalueres f.eks. til værdien 1. udtrykket 1+1 evalueres til værdien 2. Denne skelnen er diskret, men vigtig. Udtryk er opskrifter til evaluering. værdier er resultaterne af evalueringen.

If-udtryk

If-udtrykket vælger mellem to udtryk baseret på en logisk betingelse. Eksempler:

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

Det første udtryk (2 + 2) vælges, hvis det logiske udtryk (2 > 1) er true, og det andet udtryk (1 + 1) vælges, hvis det er falsk. Det valgte udtryk (i dette tilfælde 2 + 2) evalueres og bliver resultatet af if-udtrykket (4).