Jaa kautta


Tietolähdepolun käsittely

M-moottori tunnistaa tietolähteen yhdistämällä sen Curin ja Pathin. Kun tietolähde kohdataan kyselyarvioinnin aikana, M-moottori yrittää löytää vastaavat tunnistetiedot. Jos tunnuksia ei löydy, moottori palauttaa erityisen virheen, joka johtaa Power Queryyn tunnistetiedotteeseen.

Laji-arvo tulee Data Source Kind -määritelmästä.

Path-arvo johdetaan tietolähdefunktionvaadituista parametreista. Valinnaisia parametreja ei oteta huomioon tietolähteen polun tunnisteessa. Tämän seurauksena kaikilla tietolähdetyyppiin liittyvillä tietolähdefunktioilla on oltava samat parametrit. On erityinen käsittely funktioille, joilla on yksi parametri tyyppi Uri.Type. Mene kohtaan Funktiot Uri-parametrilla saadaksesi lisätietoja.

Voit nähdä esimerkin siitä, miten tunnistetiedot tallennetaan, Power BI Desktopin Datasource settings -valikosta. Tässä dialogissa Laji esitetään kuvakkeella, ja Polun arvo näytetään tekstinä.

Kuvakaappaus tietolähteiden asetusten tunnisteista.

Note

Jos muutat datalähdefunktion vaadittuja parametreja kehityksen aikana, aiemmin tallennetut tunnistetiedot eivät enää toimi (koska polkuarvot eivät enää täsmää). Sinun tulisi poistaa kaikki tallennetut tunnistetiedot aina, kun muutat tietolähdefunktion parametreja. Jos yhteensopimattomia tunnistetietoja löytyy, saatat saada virheen ajonaikaisesti.

Tietolähdepolkumuoto

Tietolähteen Path-arvo johdetaan tietolähdefunktion vaadituista parametreista. Tarvittavat parametrit voidaan jättää pois polulta lisäämällä DataSource.Path = false funktion metatietoihin. Lisätietoja saat kohdasta Poissulkevat vaaditut parametrit tietolähdepolulta.

Oletuksena näet varsinaisen merkkijonon arvon Power BI Desktopin Datasource settings -valikossa ja credential-kehotteesta. Jos Data Source Kind -määritelmässä on arvo Label , näet sen sijaan tunnistearvon.

Esimerkiksi HelloWorldWithDocs-näytteen tietolähdefunktiolla on seuraava allekirjoitus:

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

Funktiolla on yksi vaadittu parametri (message) tyypissä text, ja sitä käytetään tietolähteen polun laskemiseen. Valinnainen parametri (count) jätetään huomiotta. Polku näytettäisiin seuraavasti:

Pätevyyskehote

Kuvakaappaus tunnistetiedotteesta polkuna.

Tietolähdeasetusten käyttöliittymä

Kuvakaappaus tietolähdeasetusten käyttöliittymästä.

Kun Label-arvo määritellään, tietolähdepolun arvoa ei näytetä:

Kuvakaappaus tietolähteen asetuksista, jossa on tunniste.

Note

Suosittelemme tällä hetkellä, ettet sisällytä Labelia tietolähteellesi, jos funktiollasi on vaaditut parametrit, sillä käyttäjät eivät pysty erottamaan eri syöttämiään tunnuksia. Toivomme parantavamme tätä tulevaisuudessa (eli sallimalla dataliittimien näyttää omat mukautetut tietolähdepolkunsa).

Välttämättömien parametrien poissulkeminen tietolähdepolulta

Jos haluat, että funktioparametri on pakollinen, mutta et sisälly osaksi tietolähdepolkua, voit lisätä DataSource.Path = false funktion dokumentaatioon metatietoja. Tämä ominaisuus voidaan lisätä yhteen tai useampaan parametriin funktiossasi. Tämä kenttä poistaa arvon tietolähdepolulta (eli sitä ei enää siirretä TestConnection funktiollesi), joten sitä tulisi käyttää vain parametreille, joita ei tarvita tietolähteen tunnistamiseen tai käyttäjätunnusten erottamiseen.

Esimerkiksi HelloWorldWithDocs-näytteen liitin vaatisi eri tunnistetiedot eri message arvoille. Parametrin lisääminen DataSource.Path = falsemessage poistaa sen tietolähteen polun laskennasta, jolloin liittimestä tulee käytännössä "singleton". Kaikki puhelut HelloWorldWithDocs.Contents käsitellään samana tietolähteenä, ja käyttäjä antaa tunnistetiedot vain kerran.

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""}})"
        ]}
    ];

Funktiot, joilla on Uri-parametri

Koska tietolähteet, joilla on Uri-pohjainen tunniste, ovat niin yleisiä, Power Query -käyttöliittymässä on erityistä käsittelyä Uri-pohjaisten tietolähdepolkujen käsittelyssä. Kun Uri-pohjainen tietolähde kohdataan, tunnistetietovalinta tarjoaa pudotusvalikon, jonka avulla käyttäjä voi valita peruspolun koko polun sijaan (ja kaikki niiden väliset reitit).

Kuvakaappaus tunnistevalikosta, jossa näkyy asetuspolku, johon tunnukset kuuluvat.

Koska Uri.Type M-kielessä on attribuoitu tyyppi eikä primitiivinen tyyppi, sinun täytyy käyttää Value.ReplaceType-funktiota osoittamaan, että tekstiparametrisi tulisi käsitellä Uri-tyyppinä.

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