Udostępnij za pośrednictwem


Obsługa ścieżki źródła danych

Aparat języka M identyfikuje źródło danych przy użyciu kombinacji typu i ścieżki. Gdy podczas oceny zapytania napotkano źródło danych, aparat języka M próbuje znaleźć pasujące poświadczenia. Jeśli nie znaleziono poświadczeń, aparat zwraca specjalny błąd, który powoduje wyświetlenie monitu o podanie poświadczeń w dodatku Power Query.

Wartość Kind pochodzi z definicji Rodzaj źródła danych.

Wartość Path pochodzi z wymaganych parametrów funkcji źródła danych. Parametry opcjonalne nie są uwzględniane w identyfikatorze ścieżki źródła danych. W związku z tym wszystkie funkcje źródła danych skojarzone z rodzajem źródła danych muszą mieć te same parametry. Istnieje specjalna obsługa funkcji, które mają jeden parametr typu Uri.Type. Aby uzyskać szczegółowe informacje, przejdź do pozycji Funkcje z parametrem URI.

Przykład przechowywania poświadczeń można znaleźć w oknie dialogowym Ustawienia źródła danych w programie Power BI Desktop. W tym oknie dialogowym rodzaj jest reprezentowany przez ikonę, a wartość Ścieżka jest wyświetlana jako tekst.

Zrzut ekranu przedstawiający poświadczenia ustawień źródła danych.

Uwaga

Jeśli podczas programowania zmienisz wymagane parametry funkcji źródła danych, wcześniej przechowywane poświadczenia nie będą już działać (ponieważ wartości ścieżek nie są już zgodne). Wszelkie przechowywane poświadczenia należy usunąć za każdym razem, gdy zmienisz parametry funkcji źródła danych. W przypadku znalezienia niezgodnych poświadczeń może wystąpić błąd w czasie wykonywania.

Format ścieżki źródła danych

Wartość Ścieżka dla źródła danych pochodzi z wymaganych parametrów funkcji źródła danych. Wymagane parametry można wykluczyć ze ścieżki, dodając DataSource.Path = false do metadanych funkcji. Aby uzyskać więcej informacji, zobacz Wykluczanie wymaganych parametrów ze ścieżki źródła danych.

Domyślnie rzeczywista wartość ciągu jest widoczna w oknie dialogowym Ustawienia źródła danych w programie Power BI Desktop i w wierszu polecenia poświadczeń. Jeśli definicja rodzaju źródła danych zawiera Label wartość, zostanie wyświetlona wartość etykiety.

Na przykład funkcja źródła danych w przykładzie HelloWorldWithDocs ma następujący podpis:

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

Funkcja ma jeden wymagany parametr (message) typu texti służy do obliczania ścieżki źródła danych. Opcjonalny parametr (count) jest ignorowany. Ścieżka będzie wyświetlana w następujący sposób:

Monit o poświadczenia

Zrzut ekranu przedstawiający monit o podanie poświadczeń ze ścieżką.

Interfejs użytkownika ustawień źródła danych

Zrzut ekranu przedstawiający interfejs użytkownika ustawień źródła danych.

Po zdefiniowaniu wartości Etykieta wartość ścieżki źródła danych nie jest wyświetlana:

Zrzut ekranu przedstawiający ustawienia źródła danych ze zdefiniowaną etykietą.

Uwaga

Obecnie zalecamy, aby nie dołączać etykiety dla źródła danych, jeśli funkcja ma wymagane parametry, ponieważ użytkownicy nie będą mogli odróżnić wprowadzonych poświadczeń. Mamy nadzieję, że poprawimy to w przyszłości (czyli umożliwimy łącznikom danych wyświetlanie własnych niestandardowych ścieżek źródła danych).

Wykluczanie wymaganych parametrów ze ścieżki źródła danych

Jeśli chcesz, aby parametr funkcji był wymagany, ale nie należy go dołączać w ramach ścieżki źródła danych, możesz dodać DataSource.Path = false do metadanych dokumentacji funkcji. Tę właściwość można dodać do co najmniej jednego parametru funkcji. To pole usuwa wartość ze ścieżki źródła danych (co oznacza, że nie jest już przekazywane do TestConnection funkcji), dlatego powinno być używane tylko dla parametrów, które nie są wymagane do identyfikowania źródła danych lub rozróżniania poświadczeń użytkownika.

Na przykład łącznik w przykładzie HelloWorldWithDocs wymaga różnych poświadczeń dla różnych message wartości. Dodanie DataSource.Path = false do parametru message powoduje usunięcie go z obliczeń ścieżki źródła danych, co skutecznie czyni łącznik "singleton". Wszystkie wywołania do HelloWorldWithDocs.Contents programu są traktowane jako to samo źródło danych, a użytkownik udostępnia poświadczenia tylko raz.

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

Funkcje z parametrem identyfikatora URI

Ponieważ źródła danych z identyfikatorem opartym na identyfikatorze URI są tak powszechne, w interfejsie użytkownika dodatku Power Query istnieje specjalna obsługa podczas pracy ze ścieżkami źródła danych opartymi na identyfikatorze URI. Po napotkaniu źródła danych opartego na identyfikatorze URI okno dialogowe poświadczeń zawiera listę rozwijaną, która umożliwia użytkownikowi wybranie ścieżki podstawowej zamiast pełnej ścieżki (i wszystkich ścieżek między).

Zrzut ekranu przedstawiający okno dialogowe poświadczeń z ścieżką ustawienia, do którego mają zastosowanie poświadczenia.

Podobnie jak Uri.Type typ przypisany, a nie typ pierwotny w języku M, należy użyć funkcji Value.ReplaceType, aby wskazać, że parametr tekstowy powinien być traktowany jako identyfikator URI.

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