Partager via


Gestion de chemin d’accès de source de données

Le moteur M identifie une source de données à l’aide d’une combinaison de son genre (Kind) et de son chemin (Path). Lorsqu’une source de données est rencontrée lors d’une évaluation de requête, le moteur M tente de trouver des informations d’identification correspondantes. Si des informations d’identification ne sont pas trouvées, le moteur retourne une erreur spéciale qui entraîne une demande d’informations d’identification dans Power Query.

La valeur Type provient de la définition du Type de source de données.

La valeur Chemin est dérivée des paramètres obligatoires de votre fonction de source de données. Les paramètres facultatifs ne sont pas factorisés dans l’identificateur du chemin de la source de données. Par conséquent, toutes les fonctions de source de données associées à un type de source de données doivent avoir les mêmes paramètres. Il existe une gestion spéciale pour les fonctions qui ont un seul paramètre de type Uri.Type. Accédez à Functions avec un paramètre URI pour plus d’informations.

Vous pouvez voir un exemple de stockage des informations d’identification dans la boîte de dialogue Paramètres de la source de données dans Power BI Desktop. Dans cette boîte de dialogue, le Type est représenté par une icône et la valeur de Chemin s’affiche sous forme de texte.

Capture d’écran illustrant les paramètres d’identifiants de la source de données.

Remarque

Si vous modifiez les paramètres requis de votre fonction de source de données pendant le développement, les informations d’identification précédemment stockées ne fonctionnent plus (car les valeurs du chemin d’accès ne correspondent plus). Vous devez supprimer toutes les informations d’identification stockées chaque fois que vous modifiez vos paramètres de fonction de source de données. Si des informations d’identification incompatibles sont trouvées, vous pouvez recevoir une erreur au moment de l’exécution.

Format des chemins de source de données

La valeur Chemin d’une source de données est dérivée des paramètres obligatoires de la fonction de source de données. Les paramètres requis peuvent être exclus du chemin d’accès en les ajoutant DataSource.Path = false aux métadonnées de la fonction. Pour plus d’informations, accédez à l’exclusion des paramètres requis de votre chemin d’accès à la source de données.

Par défaut, vous pouvez voir la valeur de chaîne réelle dans la boîte de dialogue Paramètres de la source de données dans Power BI Desktop et dans l’invite d’informations d’identification. Si la définition du Type de source de données a inclus une valeur Label, la valeur de l’étiquette s’affiche à la place.

Par exemple, la fonction de source de données dans l’exemple HelloWorldWithDocs a la signature suivante :

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

La fonction possède un seul paramètre requis (message) de type text, et est utilisée pour calculer le chemin d’accès de la source de données. Le paramètre facultatif (count) est ignoré. Le chemin s’affichera comme suit :

Demande d'informations d'identification

Capture d’écran de l’invite de demande d’informations d’identification avec le chemin d’accès.

Interface utilisateur des paramètres de la source de données

Capture d’écran de l’IU des paramètres de la source de données.

Lorsqu’une valeur d’étiquette est définie, la valeur du chemin d’accès de la source de données n’est pas affichée :

Capture d’écran des paramètres de la source de données avec une étiquette définie.

Remarque

Nous vous recommandons actuellement de ne pas inclure d’étiquette pour votre source de données si votre fonction a des paramètres requis, car les utilisateurs ne pourront pas faire la distinction entre les différentes informations d’identification qu’ils ont entrées. Nous espérons améliorer cela à l’avenir (c’est-à-dire permettre aux connecteurs de données d’afficher leurs propres chemins de source de données personnalisés).

Exclusion des paramètres requis de votre chemin de source de données

Si vous voulez qu’un paramètre de fonction soit obligatoire mais ne soit pas inclus dans votre chemin de source de données, vous pouvez ajouter DataSource.Path = false aux métadonnées de documentation de la fonction. Cette propriété peut être ajoutée à un ou plusieurs paramètres pour votre fonction. Ce champ supprime la valeur de votre chemin de source de données (ce qui signifie qu’il ne sera plus passé à votre TestConnection fonction), il doit donc être utilisé seulement pour les paramètres qui ne sont pas requis pour identifier votre source de données ou pour faire la distinction entre les informations d’identification de l’utilisateur.

Par exemple, le connecteur dans l’exemple HelloWorldWithDocs va nécessiter des informations d’identification différentes pour les différentes valeurs de message. L’ajout de DataSource.Path = false au paramètre message le supprime du calcul du chemin de la source de données, ce qui fait du connecteur un « singleton ». Tous les appels à HelloWorldWithDocs.Contents sont traités comme la même source de données et l’utilisateur ne fournit des informations d’identification qu’une seule fois.

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

Fonctions avec un paramètre d’URI

Parce que les sources de données avec un identificateur basé sur un URI sont très courants, il existe une gestion spéciale dans l’interface utilisateur de Power Query quand il s’agit de chemins de source de données basés sur un URI. Lorsqu’une source de données basée sur un URI est rencontrée, la boîte de dialogue des informations d’identification fournit une liste déroulante qui permet à l’utilisateur de sélectionner le chemin de base plutôt que le chemin d’accès complet (et tous les chemins intermédiaires).

Capture d’écran de la boîte de dialogue des identifiants illustrant le chemin d’accès de paramètre auquel les identifiants s’appliquent.

Comme Uri.Type est un type attribué au lieu d’un type primitif dans le langage M, vous devez utiliser la fonction Value.ReplaceType pour indiquer que votre paramètre de texte doit être traité comme URI.

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