V tomto článku je ukázaná nejjednodušší syntaxe vlastní funkce v jazyce M.

To, co tady s vlastní funkcí uděláme, by šlo udělat i jednoduššími způsoby, nám ale jde právě o vlastní funkce.

Naše funkce vytvoří sloupec, který vezme jeden ze sloupců původní tabulky (jmenuje se Price) a vytvoří z něj nový sloupec (New Price), který bude o jedničku větší.

Funkce napsaná přímo v dotazu

Funkce může být napsaná přímo v dotazu. V této ukázce je na začátku, ale není to nutné – může být kdekoliv před jejím voláním.

  • let
       MyFunction = (OldPrice as number) =>
          OldPrice + 1,
       Source = Excel.Workbook(File.Contents(„C:\Users\cars.xlsx“), null, true),
       Sheet = Source{[Item=“Sheet1″,Kind=“Sheet“]}[Data],
       Headers = Table.PromoteHeaders(Sheet, [PromoteAllScalars=true]),
       Types = Table.TransformColumnTypes(Headers,{{„Price“, type number}}),
       Call_Function = Table.AddColumn(Types, „New price“, each MyFunction([Price]), type number)
    in
       Call_Function

Funkce, která je zvlášť a z dotazu ji voláme

Potřebujeme funkci:

  • let
       MyFunction = (OldPrice as number) =>
       OldPrice + 1
    in
       MyFunction

a dotaz, ze kterého ji zavoláme:

  • let
       Source = Excel.Workbook(File.Contents(„C:\cars.xlsx“), null, true),
       Sheet1_Sheet = Source{[Item=“Sheet1″,Kind=“Sheet“]}[Data],
       Headers = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
       Types = Table.TransformColumnTypes(Headers,{{„Brand“, type text}, {„Model“, type any}, {„Price“, Int64.Type}, {„Color“, type text}, {„On Stock from:“, type date}}),
       #“Invoked Custom Function“ = Table.AddColumn(Types, „New price“, each function([Price]))
    in
       #“Invoked Custom Function“