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”