Delen via


Pad naar gegevensbron verwerken

De M-engine identificeert een gegevensbron met behulp van een combinatie van het type en het pad. Wanneer tijdens een queryevaluatie een gegevensbron wordt aangetroffen, probeert de M-engine overeenkomende referenties te vinden. Als er geen referenties worden gevonden, retourneert de engine een speciale fout die resulteert in een referentieprompt in Power Query.

De waarde Kind is afkomstig van de definitie Gegevensbrontype .

De padwaarde wordt afgeleid van de vereiste parameters van uw gegevensbronfunctie. Optionele parameters worden niet meegenomen in de id van het gegevensbronpad. Als gevolg hiervan moeten alle gegevensbronfuncties die zijn gekoppeld aan een gegevensbrontype dezelfde parameters hebben. Er is speciale verwerking voor functies met één parameter van het type Uri.Type. Ga naar Functions met een URI-parameter voor meer informatie.

U ziet een voorbeeld van hoe referenties worden opgeslagen in het dialoogvenster Gegevensbroninstellingen in Power BI Desktop. In dit dialoogvenster wordt het type vertegenwoordigd door een pictogram en wordt de padwaarde weergegeven als tekst.

Schermopname van de referenties voor de gegevensbroninstellingen.

Notitie

Als u de vereiste parameters van de gegevensbronfunctie tijdens de ontwikkeling wijzigt, werken eerder opgeslagen referenties niet meer (omdat de padwaarden niet meer overeenkomen). U moet alle opgeslagen referenties verwijderen wanneer u de parameters van de gegevensbronfunctie wijzigt. Als er incompatibele referenties worden gevonden, treedt er mogelijk een fout op tijdens runtime.

Indeling van gegevensbronpad

De padwaarde voor een gegevensbron is afgeleid van de vereiste parameters van de gegevensbronfunctie. Vereiste parameters kunnen worden uitgesloten van het pad door toe te voegen aan DataSource.Path = false de metagegevens van de functie. Ga voor meer informatie naar De vereiste parameters uitsluiten van uw gegevensbronpad.

Standaard ziet u de werkelijke tekenreekswaarde in het dialoogvenster Gegevensbroninstellingen in Power BI Desktop en in de referentieprompt. Als de definitie Gegevensbrontype een Label waarde heeft opgenomen, ziet u in plaats daarvan de labelwaarde.

De gegevensbronfunctie in het Voorbeeld HelloWorldWithDocs heeft bijvoorbeeld de volgende handtekening:

HelloWorldWithDocs.Contents = (message as text, optional count as number) as table => ...

De functie heeft één vereiste parameter (message) van het type texten wordt gebruikt om het pad naar de gegevensbron te berekenen. De optionele parameter (count) wordt genegeerd. Het pad wordt als volgt weergegeven:

Referentieprompt

Schermopname van de referentieprompt met pad.

Gebruikersinterface voor gegevensbroninstellingen

Schermopname van de gebruikersinterface voor gegevensbroninstellingen.

Wanneer een labelwaarde is gedefinieerd, wordt de waarde van het gegevensbronpad niet weergegeven:

Schermopname van de instellingen voor de gegevensbron met een gedefinieerd label.

Notitie

We raden u momenteel aan geen label voor uw gegevensbron op te nemen als uw functie vereiste parameters heeft, omdat gebruikers geen onderscheid kunnen maken tussen de verschillende referenties die ze hebben ingevoerd. We hopen dit in de toekomst te verbeteren (dat wil zeggen dat gegevensconnectors hun eigen aangepaste gegevensbronpaden kunnen weergeven).

Vereiste parameters uitsluiten van uw gegevensbronpad

Als u wilt dat een functieparameter vereist is, maar niet als onderdeel van uw gegevensbronpad moet worden opgenomen, kunt u toevoegen DataSource.Path = false aan de metagegevens van de functiedocumentatie. Deze eigenschap kan worden toegevoegd aan een of meer parameters voor uw functie. Met dit veld wordt de waarde verwijderd uit uw gegevensbronpad (wat betekent dat deze niet meer wordt doorgegeven aan uw TestConnection functie), dus deze moet alleen worden gebruikt voor parameters die niet nodig zijn om uw gegevensbron te identificeren of onderscheid te maken tussen gebruikersreferenties.

De connector in het HelloWorldWithDocs-voorbeeld vereist bijvoorbeeld verschillende referenties voor verschillende message waarden. Als u aan de message parameter toevoegtDataSource.Path = false, wordt deze verwijderd uit de berekening van het gegevensbronpad, waardoor de connector in feite een 'singleton' wordt. Alle aanroepen HelloWorldWithDocs.Contents worden behandeld als dezelfde gegevensbron en de gebruiker verstrekt slechts eenmaal referenties.

HelloWorldType = type function (
    message as (type text meta [
        DataSource.Path = false,
        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""}})"
        ]}
    ];

Functies met een URI-parameter

Omdat gegevensbronnen met een op URI gebaseerde id zo gebruikelijk zijn, is er speciale verwerking in de Gebruikersinterface van Power Query bij het verwerken van op URI gebaseerde gegevensbronpaden. Wanneer er een gegevensbron op basis van een URI wordt aangetroffen, bevat het referentiedialoogvenster een vervolgkeuzelijst waarmee de gebruiker het basispad kan selecteren in plaats van het volledige pad (en alle paden ertussenin).

Schermopname van het referentiedialoogvenster met het instellingspad waarop referenties van toepassing zijn.

Net als Uri.Type een getscribeerd type in plaats van een primitief type in de M-taal, moet u de functie Value.ReplaceType gebruiken om aan te geven dat de tekstparameter moet worden behandeld als een URI.

shared GithubSample.Contents = Value.ReplaceType(Github.Contents, type function (url as Uri.type) as any);