Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
M-motoren identificerer en datakilde ved hjælp af en kombination af dens Type og Path. Når en datakilde støder på under en forespørgselsevaluering, forsøger M-motoren at finde matchende legitimationsoplysninger. Hvis der ikke findes nogen legitimationsoplysninger, returnerer motoren en særlig fejl, der resulterer i en legitimationsprompt i Power Query.
Kind-værdien kommer fra definitionen Data Source Kind.
Path-værdien udledes fra de nødvendige parametre for din datakildefunktion. Valgfrie parametre indgår ikke i datakildesti-identifikatoren. Som følge heraf skal alle datakildefunktioner, der er tilknyttet en datakildetype, have de samme parametre. Der findes særlig håndtering for funktioner, der har en enkelt parameter af typen Uri.Type. Gå til Funktioner med en URI-parameter for detaljer.
Du kan se et eksempel på, hvordan legitimationsoplysninger gemmes, i dialogen Data source settings i Power BI Desktop. I denne dialog repræsenteres Kind af et ikon, og Path-værdien vises som tekst.
Notat
Hvis du ændrer de nødvendige parametre for din datakildefunktion under udviklingen, virker tidligere lagrede legitimationsoplysninger ikke længere (fordi stiværdierne ikke længere matcher). Du bør slette alle lagrede legitimationsoplysninger hver gang du ændrer dine datakildefunktionsparametre. Hvis der findes inkompatible legitimationsoplysninger, kan du få en fejl under kørsel.
Datakildestiformat
Sti-værdien for en datakilde udledes fra datakildefunktionens krævede parametre. Nødvendige parametre kan udelukkes fra stien ved at tilføje DataSource.Path = false til funktionens metadata. For mere information, gå til Udelukkelse af nødvendige parametre fra din datakildesti.
Som standard kan du se den faktiske strengværdi i dialogen Data source settings i Power BI Desktop og i legitimationsprompten. Hvis definitionen Data Source Kind har inkluderet en Label værdi, vil du se label-værdien i stedet.
For eksempel har datakildefunktionen i HelloWorldWithDocs-eksemplet følgende signatur:
HelloWorldWithDocs.Contents = (message as text, optional count as number) as table => ...
Funktionen har en enkelt krævet parameter (message) af typen text, og bruges til at beregne datakildestien. Den valgfrie parameter (count) ignoreres. Stien ville blive vist som følger:
Legitimationsprompt
Datakildeindstillinger UI
Når en Label-værdi defineres, vises datakildesti-værdien ikke:
Notat
Vi anbefaler i øjeblikket, at du ikke inkluderer en Label til din datakilde, hvis din funktion har de nødvendige parametre, da brugerne ikke vil kunne skelne mellem de forskellige legitimationsoplysninger, de har indtastet. Vi håber at forbedre dette i fremtiden (det vil sige at lade dataforbindelser vise deres egne brugerdefinerede datakildestier).
Udelukkelse af nødvendige parametre fra din datakildesti
Hvis du vil have en funktionsparameter som påkrævet, men ikke inkluderet som en del af din datakildesti, kan du tilføje DataSource.Path = false metadata til funktionsdokumentationen. Denne egenskab kan tilføjes til en eller flere parametre for din funktion. Dette felt fjerner værdien fra din datakildesti (hvilket betyder, at den ikke længere sendes til din TestConnection funktion), så den bør kun bruges til parametre, der ikke er nødvendige for at identificere din datakilde eller skelne mellem brugerlegitimationsoplysninger.
For eksempel vil connectoren i HelloWorldWithDocs-eksemplet kræve forskellige legitimationsoplysninger for forskellige message værdier.
Tilføjelse DataSource.Path = false til parameteren message fjerner den fra datakildestiens beregning, hvilket effektivt gør stikket til en "singleton". Alle kald behandles HelloWorldWithDocs.Contents som den samme datakilde, og brugeren giver kun legitimationsoplysninger én gang.
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""}})"
]}
];
Funktioner med en Uri-parameter
Fordi datakilder med en URI-baseret identifikator er så almindelige, er der særlig håndtering i Power Query-brugerfladen, når man håndterer Uri-baserede datakildestier. Når en Uri-baseret datakilde støder på, giver legitimationsdialogen en dropdown, som tillader brugeren at vælge basisstien i stedet for hele stien (og alle stier imellem).
Da Uri.Type det er en tilskrevet type i M-sproget i stedet for en primitiv type , skal du bruge funktionen Value.ReplaceType til at angive, at din tekstparameter skal behandles som en Uri.
shared GithubSample.Contents = Value.ReplaceType(Github.Contents, type function (url as Uri.type) as any);