Functiedocumentatie toevoegen
Power Query genereert automatisch een aanroepgebruikersinterface voor u op basis van de argumenten voor uw functie. Deze gebruikersinterface bevat standaard de naam van uw functie en een invoer voor elk van uw parameters.
Op dezelfde manier wordt bij het evalueren van de naam van uw functie, zonder parameters op te geven, informatie over deze functie weergegeven.
Mogelijk merkt u dat ingebouwde functies doorgaans een betere gebruikerservaring bieden, met beschrijvingen, knopinfo en zelfs voorbeeldwaarden. U kunt gebruikmaken van ditzelfde mechanisme door specifieke metawaarden voor uw functietype te definiëren. In dit onderwerp worden de metavelden beschreven die door Power Query worden gebruikt en hoe u deze in uw extensies kunt gebruiken.
Functietypen
U kunt documentatie voor uw functie opgeven door aangepaste typewaarden te definiëren. Het proces ziet er als volgt uit:
- Definieer een type voor elke parameter.
- Definieer een type voor uw functie.
- Voeg verschillende
Documentation.*
velden toe aan de metagegevensrecord van uw typen. - Roep Value.ReplaceType aan om het type toe te schrijven aan uw gedeelde functie.
Meer informatie over typen en metagegevenswaarden vindt u in de M-taalspecificatie.
Met deze methode kunt u beschrijvingen en weergavenamen opgeven voor uw functie, evenals afzonderlijke parameters. U kunt ook voorbeeldwaarden opgeven voor parameters en een vooraf ingestelde lijst met waarden definiëren (het standaardbesturingselement voor tekstvaken omzetten in een vervolgkeuzelijst).
De Power Query-ervaring haalt documentatie op uit metawaarden voor het type functie, met behulp van een combinatie van aanroepen naar Value.Type, Type.FunctionParameters en Value.Metadata.
Functiedocumentatie
De volgende tabel bevat de documentatievelden die kunnen worden ingesteld in de metagegevens voor uw functie. Alle velden zijn optioneel.
Veld | Type | DETAILS |
---|---|---|
Documentation.Examples | lijst | Lijst met recordobjecten met voorbeeldgebruik van de functie. Alleen weergegeven als onderdeel van de functie-informatie. Elke record moet de volgende optionele tekstvelden bevatten: Description , Code en Result . |
Documentation.LongDescription | sms verzenden | Volledige beschrijving van wat de functie doet, weergegeven in de functie-informatie. |
Documentation.Name | sms verzenden | Tekst die boven aan het aanroepdialoogvenster van de functie moet worden weergegeven. |
Parameterdocumentatie
De volgende tabel bevat de documentatievelden die kunnen worden ingesteld in de metagegevens voor uw functieparameters. Alle velden zijn optioneel.
Veld | Type | DETAILS |
---|---|---|
Documentation.AllowedValues | lijst | Lijst met geldige waarden voor deze parameter. Als u dit veld opneemt, wordt de invoer van een tekstvak gewijzigd in een vervolgkeuzelijst. Dit voorkomt niet dat een gebruiker de query handmatig bewerkt om alternatieve waarden op te geven. |
Documentation.FieldCaption | sms verzenden | Beschrijvende weergavenaam die moet worden gebruikt voor de parameter. |
Documentation.FieldDescription | sms verzenden | Beschrijving die naast de weergavenaam moet worden weergegeven. |
Documentation.SampleValues | lijst | Lijst met voorbeeldwaarden die moeten worden weergegeven (als vervaagde tekst) in het tekstvak. |
Format.IsMultiLine | boolean | Hiermee kunt u een invoer met meerdere regels maken, bijvoorbeeld voor het plakken in systeemeigen query's. |
Formatting.IsCode | boolean | Hiermee wordt het invoerveld voor code opgemaakt, meestal met invoer met meerdere regels. Maakt gebruik van een codeachtig lettertype in plaats van het standaardlettertype. |
Basisvoorbeeld
Het volgende codefragment (en de resulterende dialoogvensters) zijn afkomstig uit het HelloWorldWithDocs-voorbeeld .
[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;
Deze code resulteert in de volgende dialoogvensters in Power BI.
Functie aanroepen
Functiegegevens
Voorbeeld van meerdere regels
[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);
Deze code (met gekoppelde publicatiegegevens, enzovoort) resulteert in de volgende dialoog in Power BI. Nieuwe regels worden weergegeven in tekst met '#(lf)' of 'regelfeed'.