Zápis vlastních funkcí v jazyce M (Power Query)
S tímto tématem se setkáte na našich kurzech ExcelTown.
Aktuálně: kurzy můžete absolvovat jak online, tak prezenčně.
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"
S tímto tématem se setkáte na našich kurzech ExcelTown.
Aktuálně: kurzy můžete absolvovat jak online, tak prezenčně.