Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dodatek Power Query automatycznie wygeneruje interfejs użytkownika wywołania na podstawie argumentów funkcji. Domyślnie ten interfejs użytkownika będzie zawierać nazwę funkcji i dane wejściowe dla każdego z parametrów.
Podobnie ocena nazwy funkcji bez określania parametrów spowoduje wyświetlenie informacji o niej.
Możesz zauważyć, że wbudowane funkcje zwykle zapewniają lepsze środowisko użytkownika, opisy, etykietki narzędzi, a nawet przykładowe wartości. Ten sam mechanizm można wykorzystać, definiując określone meta wartości w typie funkcji. W tym temacie opisano meta pola, które są używane przez dodatek Power Query i jak można ich używać w rozszerzeniach.
Typy funkcji
Możesz podać dokumentację funkcji, definiując niestandardowe wartości typów . Proces wygląda następująco:
- Zdefiniuj typ dla każdego parametru.
- Zdefiniuj typ funkcji.
- Dodaj różne
Documentation.*
pola do rekordu metadanych typów. - Wywołaj metodę Value.ReplaceType , aby przypisać typ funkcji udostępnionej.
Więcej informacji o typach i wartościach metadanych można znaleźć w specyfikacji języka M.
Dzięki temu podejściu można podać opisy i nazwy wyświetlane dla funkcji, a także poszczególne parametry. Możesz również podać przykładowe wartości parametrów, a także zdefiniować wstępnie ustawioną listę wartości (zamieniając domyślną kontrolkę pola tekstowego na listę rozwijaną).
Środowisko Dodatku Power Query pobiera dokumentację z wartości meta na typ funkcji przy użyciu kombinacji wywołań funkcji Value.Type, Type.FunctionParameters i Value.Metadata.
Dokumentacja funkcji
W poniższej tabeli wymieniono pola Dokumentacja, które można ustawić w metadanych funkcji. Wszystkie pola są opcjonalne.
Pole | Typ | Szczegóły |
---|---|---|
Documentation.Examples | lista | Lista obiektów rekordów z przykładowym użyciem funkcji. Wyświetlane tylko jako część informacji o funkcji. Każdy rekord powinien zawierać następujące opcjonalne pola tekstowe: Description , Code i Result . |
Documentation.LongDescription | text | Pełny opis funkcji wyświetlanej w informacjach o funkcji. |
Documentation.Name | text | Tekst wyświetlany w górnej części okna dialogowego wywołania funkcji. |
Dokumentacja parametrów
W poniższej tabeli wymieniono pola Dokumentacja, które można ustawić w metadanych parametrów funkcji. Wszystkie pola są opcjonalne.
Pole | Typ | Szczegóły |
---|---|---|
Documentation.AllowedValues | lista | Lista prawidłowych wartości dla tego parametru. Podanie tego pola spowoduje zmianę danych wejściowych z pola tekstowego na listę rozwijaną. Należy pamiętać, że nie uniemożliwia to użytkownikowi ręcznego edytowania zapytania w celu podania wartości alternatywnych. |
Documentation.FieldCaption | text | Przyjazna nazwa wyświetlana do użycia dla parametru . |
Documentation.FieldDescription | text | Opis wyświetlany obok nazwy wyświetlanej. |
Documentation.SampleValues | lista | Lista przykładowych wartości do wyświetlenia (jako wyblakłego tekstu) w polu tekstowym. |
Formatting.IsMultiLine | boolean | Umożliwia utworzenie danych wejściowych wielowierszowych, na przykład do wklejania w zapytaniach natywnych. |
Formatting.IsCode | boolean | Formatuje pole wejściowe dla kodu, często z danymi wejściowymi wielowierszowymi. Używa czcionki przypominającej kod, a nie standardowej czcionki. |
Przykład podstawowy
Poniższy fragment kodu (i wynikowe okna dialogowe) pochodzi z przykładu HelloWorldWithDocs .
[DataSource.Kind="HelloWorldWithDocs", Publish="HelloWorldWithDocs.Publish"]
shared HelloWorldWithDocs.Contents = Value.ReplaceType(HelloWorldImpl, HelloWorldType);
HelloWorldType = type function (
message as (type text meta [
Documentation.FieldCaption = "Message",
Documentation.FieldDescription = "Text to display",
Documentation.SampleValues = {"Hello world", "Hola mundo"}
]),
optional count as (type number meta [
Documentation.FieldCaption = "Count",
Documentation.FieldDescription = "Number of times to repeat the message",
Documentation.AllowedValues = { 1, 2, 3 }
]))
as table meta [
Documentation.Name = "Hello - Name",
Documentation.LongDescription = "Hello - Long Description",
Documentation.Examples = {[
Description = "Returns a table with 'Hello world' repeated 2 times",
Code = "HelloWorldWithDocs.Contents(""Hello world"", 2)",
Result = "#table({""Column1""}, {{""Hello world""}, {""Hello world""}})"
],[
Description = "Another example, new message, new count!",
Code = "HelloWorldWithDocs.Contents(""Goodbye"", 1)",
Result = "#table({""Column1""}, {{""Goodbye""}})"
]}
];
HelloWorldImpl = (message as text, optional count as number) as table =>
let
_count = if (count <> null) then count else 5,
listOfMessages = List.Repeat({message}, _count),
table = Table.FromList(listOfMessages, Splitter.SplitByNothing())
in
table;
Ten kod powoduje wyświetlenie następujących okien dialogowych w usłudze Power BI.
Wywołanie funkcji
Informacje o funkcji
Przykład wielowierszowy
[DataSource.Kind="HelloWorld", Publish="HelloWorld.Publish"]
shared HelloWorld.Contents =
let
HelloWorldType = type function (
message1 as (type text meta [
Documentation.FieldCaption = "Message 1",
Documentation.FieldDescription = "Text to display for message 1",
Documentation.SampleValues = {"Hello world"},
Formatting.IsMultiLine = true,
Formatting.IsCode = true
]),
message2 as (type text meta [
Documentation.FieldCaption = "Message 2",
Documentation.FieldDescription = "Text to display for message 2",
Documentation.SampleValues = {"Hola mundo"},
Formatting.IsMultiLine = true,
Formatting.IsCode = false
])) as text,
HelloWorldFunction = (message1 as text, message2 as text) as text => message1 & message2
in
Value.ReplaceType(HelloWorldFunction, HelloWorldType);
Ten kod (ze skojarzonymi informacjami o publikowaniu itd.) powoduje wyświetlenie następującego okna dialogowego w usłudze Power BI. Nowe wiersze będą reprezentowane w tekście przy użyciu znaku "#(lf)" lub "kanału informacyjnego wiersza".