Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En Power Query M-formelspråkfråga består av formeluttryckssteg som skapar en kombinationsfråga. Ett formeluttryck kan utvärderas (beräknas), vilket ger ett värde. Let-uttrycket kapslar in en uppsättning värden som ska beräknas, tilldelade namn och används sedan i ett efterföljande uttryck som följer i -instruktionen. Ett let-uttryck kan till exempel innehålla en source variabel som är lika med värdet för Text.Proper och ger ett textvärde i rätt fall.
Let-uttryck
let
    Source = Text.Proper("hello world")
in
    Source
I det här exemplet Text.Proper("hello world") utvärderas till "Hello World".
I nästa avsnitt beskrivs värdetyper på språket.
Primitivt värde
Ett primitivt värde är endelsvärde, till exempel ett number, logical, texteller null. Ett null värde kan användas för att indikera avsaknaden av data.
| Typ | Exempelvärde | 
|---|---|
| Binära | 00 00 00 02 // antal punkter (2) | 
| Datum | 5/23/2015 | 
| Datum/tid | 2015-05-23 12:00:00 | 
| DateTimeZone | 2015-05-23 12:00:00-08:00 | 
| Varaktighet | 15:35:00 | 
| Logiskt | sant och falskt | 
| Null | null | 
| Antal | 0, 1, -1, 1,5 och 2,3e-5 | 
| Text | "abc" | 
| Tid | 12:34:12 | 
Funktionsvärde
En funktion är ett värde som, när den anropas med argument, genererar ett nytt värde. Funktioner skrivs genom att ange funktionens parametrar inom parenteser, följt av symbolen goes-to =>, följt av uttrycket som definierar funktionen. Om du till exempel vill skapa en funktion med namnet MyFunction som har två parametrar och utför en beräkning på parameter1 och parameter2:
let
    MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
    MyFunction
Anropa MyFunction returnerar resultatet:
let
    Source = MyFunction(2, 4)
in
    Source
Den här koden genererar värdet 3.
Strukturerade datavärden
M-språket stöder följande strukturerade datavärden:
Kommentar
Strukturerade data kan innehålla valfritt M-värde. Om du vill se några exempel går du till Ytterligare strukturerade dataexempel.
List
En lista är en nollbaserad ordnad sekvens med värden som omges av klammerparentestecken { }. Klammerparentestecken { } används också för att hämta ett objekt från en lista efter indexposition. Mer information finns i Listvärden.
Kommentar
Power Query M stöder en oändlig liststorlek, men om en lista skrivs som en literal har listan en fast längd. Till exempel har {1, 2, 3} en fast längd på 3.
Följande är några listexempel.
| Värde | Typ | 
|---|---|
| {123, sant, "A"} | Lista som innehåller ett tal, en logisk och text. | 
| {1, 2, 3} | Lista över tal | 
| { {1, 2, 3}, {4, 5, 6} }  | 
Lista över lista med tal | 
| { [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] }  | 
Lista över poster | 
| {123, sant, "A"}{0} | Hämta värdet för det första objektet i en lista. Det här uttrycket returnerar värdet 123. | 
| { {1, 2, 3}, {4, 5, 6} }{0}{1}  | 
Hämta värdet för det andra objektet från det första listelementet. Det här uttrycket returnerar värdet 2. | 
Post
En post är en uppsättning fält. Ett fält är ett namn/värde-par där namnet är ett textvärde som är unikt i fältets post. Syntaxen för postvärden tillåter att namnen skrivs utan citattecken, ett formulär som även kallas identifierare. En identifierare kan ha följande två formulär:
identifier_name till exempel OrderID.
#"identifierarnamn" som #"Dagens data är: ".
Följande är en post som innehåller fälten "OrderID", "CustomerID", "Item" och "Price" med värdena 1, 1, "Fiskespö" och 100.00. Klammerparentestecken [ ] anger början och slutet av ett postuttryck och används för att hämta ett fältvärde från en post. I följande exempel visas en post och hur du hämtar fältvärdet Objekt.
Här är en exempelpost:
let
    Source =
    [
          OrderID = 1,
          CustomerID = 1,
          Item = "Fishing rod",
          Price = 100.00
    ]
in
    Source
Om du vill hämta värdet för ett objekt använder du hakparenteser som Source[Item]:
let Source =
    [
          OrderID = 1,
          CustomerID = 1,
          Item = "Fishing rod",
          Price = 100.00
    ],
    GetItem = Source[Item] //equals "Fishing rod"
in
    GetItem
Register
En tabell är en uppsättning värden ordnade i namngivna kolumner och rader. Kolumntypen kan vara implicit eller explicit. Du kan använda #table för att skapa en lista med kolumnnamn och en lista över rader. En tabell med värden är en lista i en lista. Klammerparentestecken { } används också för att hämta en rad från en tabell efter indexposition (gå till Exempel 3 – Hämta en rad från en tabell efter indexposition).
Exempel 1 – Skapa en tabell med implicita kolumntyper
let
    Source = #table(
        {"OrderID", "CustomerID", "Item", "Price"},
        {
            {1, 1, "Fishing rod", 100.00},
            {2, 1, "1 lb. worms", 5.00}
        }
    )
in
    Source
Exempel 2 – Skapa en tabell med explicita kolumntyper
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
Båda föregående exempel skapar en tabell med följande form:
| OrderID | CustomerID | Artikel | Pris | 
|---|---|---|---|
| 1 | 1 | Metspö | 100.00 | 
| 2 | 1 | 1 lb. maskar | 5.00 | 
Exempel 3 – Hämta en rad från en tabell efter indexposition
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}
Det här uttrycket returnerar följande post:
| Fält | Värde | 
|---|---|
| OrderID | 2 | 
| CustomerID | 1 | 
| Artikel | 1 lb. maskar | 
| Pris | 5 | 
Ytterligare strukturerade dataexempel
Strukturerade data kan innehålla valfritt M-värde. Nedan följer några exempel:
Exempel 1 – Lista med [Primitive](#_Primitive_value_1) värden, [Function](#_Function_value) och [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
Utvärdering av det här uttrycket kan visualiseras som:
              
              
              
              
            
Exempel 2 – Post som innehåller primitiva värden och kapslade 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
Utvärdering av det här uttrycket kan visualiseras som:
              
              
              
              
            
Kommentar
Även om många värden kan skrivas bokstavligen som ett uttryck är ett värde inte ett uttryck. Till exempel utvärderas uttrycket 1 till värdet 1; uttrycket 1+1 utvärderas till värdet 2. Denna distinktion är subtil, men viktig. Uttryck är recept för utvärdering. värdena är resultatet av utvärderingen.
If-uttryck
If-uttrycket väljer mellan två uttryck baserat på ett logiskt villkor. Till exempel:
if 2 > 1 then
    2 + 2
else
    1 + 1
Det första uttrycket (2 + 2) väljs om det logiska uttrycket (2 > 1) är sant och det andra uttrycket (1 + 1) väljs om det är falskt. Det valda uttrycket (i det här fallet 2 + 2) utvärderas och blir resultatet av if-uttrycket (4).