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 Source- variabel, 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 Text.Proper("hello world")
evalueres 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) |
Dato | 5/23/2015 |
Dato/klokkeslæt | 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 |
SMS-besked | "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 gå til Yderligere strukturerede dataeksempler.
List
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. Du kan få flere oplysninger ved at gå til Listeværdier.
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", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "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 Source[Item]
:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Table
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 de forrige eksempler opretter en tabel med følgende figur:
OrderID | CustomerID | Artikel | Pris |
---|---|---|---|
1 | 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-id | 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:
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:
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).