Functiedocumentatie toevoegen
Power Query genereert automatisch een gebruikersinterface voor aanroepen 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 geeft het evalueren van de naam van uw functie, zonder parameters op te geven, informatie over deze functie weer.

U ziet dat ingebouwde functies doorgaans een betere gebruikerservaring bieden, met beschrijvingen, knopinfo en zelfs voorbeeldwaarden. U kunt profiteren van hetzelfde mechanisme door specifieke metawaarden voor uw functietype te definiëren. In dit onderwerp worden de metavelden beschreven die door uw Power Query en hoe u deze kunt gebruiken in uw extensies.

Functietypen
U kunt documentatie voor uw functie bieden door aangepaste typewaarden te definiëren. Het proces ziet er als volgende 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 voor parameters opgeven en een vooraf ingestelde lijst met waarden definiëren (door het standaardbesturingselement voor het tekstvak in een vervolgkeuzelijst te zetten).
De Power Query-ervaring haalt documentatie op uit metawaarden voor het type van uw functie, met behulp van een combinatie van aanroepen naar Value.Type, Type.FunctionParametersen 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 | list | Lijst met recordobjecten met voorbeeldgebruik van de functie. Alleen weergegeven als onderdeel van de functiegegevens. Elke record moet de volgende optionele tekstvelden bevatten: Description Code , en Result . |
| Documentation.LongDescription | tekst | Volledige beschrijving van wat de functie doet, weergegeven in de functiegegevens. |
| Documentation.Name | tekst | Tekst die boven aan het dialoogvenster voor functie-aanroepen moet worden weergegeven. |
Documentatie over parameters
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 | list | Lijst met geldige waarden voor deze parameter. Als u dit veld oplevert, wordt de invoer van een tekstvak gewijzigd in een vervolgkeuzelijst. Let op: dit voorkomt niet dat een gebruiker de query handmatig kan bewerken om alternatieve waarden op te geven. |
| Documentation.FieldCaption | tekst | Gebruiksvriendelijke weergavenaam voor de parameter . |
| Documentation.FieldDescription | tekst | Beschrijving die naast de weergavenaam moet worden weergegeven. |
| Documentation.SampleValues | list | Lijst met voorbeeldwaarden die moeten worden weergegeven (als vervaagde tekst) in het tekstvak. |
| Formatting.IsMultiLine | booleaans | Hiermee kunt u een invoer van meerdere lijnen maken, bijvoorbeeld voor het in systeemeigen query's te past. |
| Formatting.IsCode | booleaans | Formatteert het invoerveld voor code, meestal met invoer van meerdere regels. Maakt gebruik van een code-y 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-aanroep

Functiegegevens

Voorbeeld van meerdere lijnen
[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 bijbehorende publicatiegegevens, enzovoort) resulteert in het volgende dialoogvenster in Power BI. Nieuwe regels worden weergegeven in tekst met '#(lf)' of 'line feed'.
