Compartir a través de


Control de ruta de acceso al origen de datos

El motor M identifica un origen de datos a través de una combinación del tipo y ruta de acceso. Si se detecta un origen de datos durante una evaluación de consultas, el motor M intentará buscar las credenciales correspondientes. Si no se encuentra ninguna credencial, el motor devolverá un error especial que generará una solicitud de credenciales en Power Query.

El valor Tipo procede de la definición de Tipo de origen de datos.

El valor de la ruta se obtiene a partir de los parámetros necesarios de la función origen de datos. Los parámetros opcionales no se tienen en cuenta en el identificador de ruta de origen de datos. Por lo tanto, todas las funciones de origen de datos que se asocien a un tipo de origen de datos deben tener los mismos parámetros. Hay un control especial para las funciones que tienen un único parámetro de tipo Uri.Type. Para obtener más información, consulte Funciones con un parámetro URI.

Encontrará un ejemplo de cómo se almacenan las credenciales en el cuadro de diálogo Configuración de origen de datos en Power BI Desktop. En el cuadro de diálogo, el tipo se representa mediante un icono y el valor ruta de acceso aparece como texto.

Captura de pantalla de las credenciales de configuración del origen de datos.

Nota:

Si se cambian los parámetros necesarios de la función origen de datos durante el desarrollo, las credenciales almacenadas anteriormente dejarán de funcionar (ya que los valores de ruta de acceso ya no coincidirán). Las credenciales que se hayan almacenado deberán eliminarse cada vez que se cambien los parámetros de la función origen de datos. Si se encuentran credenciales incompatibles, podría producirse un error en el tiempo de ejecución.

Formato de ruta de origen de datos

El valor de la ruta de acceso de un origen de datos se obtiene a partir de los parámetros necesarios de la función origen de datos. Los parámetros necesarios se pueden excluir de la ruta de acceso si se añade DataSource.Path = false a los metadatos de la función. Para obtener más información, consulte Exclusión de los parámetros necesarios de la ruta de origen de datos.

De forma predeterminada, se puede ver el valor de cadena real en el cuadro de diálogo Configuración de origen de datos en Power BI Desktop y en la petición de credenciales. Si la definición de Tipo de origen de datos incluye un valor Label se verá en su lugar el valor de la etiqueta.

Por ejemplo, la función origen de datos del ejemplo HelloWorldWithDocs tiene la siguiente firma:

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

La función tiene un único parámetro necesario (message) de tipo texty se utiliza para calcular la ruta de origen de datos. Se omite el parámetro opcional (count). La ruta de acceso se verá como se muestra a continuación:

Petición de credenciales

Captura de pantalla de la petición de credenciales con la ruta de acceso.

Interfaz de usuario de configuración de origen de datos

Captura de pantalla de la interfaz de usuario de configuración del origen de datos.

Cuando se define un valor de etiqueta, el valor de la ruta de origen de datos no aparece:

Captura de pantalla de la configuración del origen de datos con una etiqueta definida.

Nota:

En la actualidad se recomienda no incluir una etiqueta para el origen de datos si la función tiene parámetros necesarios, ya que los usuarios no podrán distinguir entre las distintas credenciales que hayan escrito. Nos proponemos mejorar esta situación en el futuro (lo que implicaría permitir que los conectores de datos muestren sus propias rutas de origen de datos personalizadas).

Exclusión de parámetros necesarios de la ruta de origen de datos

Si se quiere que un parámetro de función sea necesario, pero que no se incluya como parte de la ruta de origen de datos, se puede añadir DataSource.Path = false a los metadatos de la documentación de la función. Esta propiedad se puede añadir a uno o varios parámetros para la función. Este campo elimina el valor de la ruta de origen de datos (lo que implica que ya no se pasa a la función TestConnection), por lo que solo se debe usar para los parámetros que no sean necesarios para identificar el origen de datos o distinguir entre las credenciales de usuario.

Por ejemplo, el conector del ejemplo HelloWorldWithDocs requiere credenciales diferentes para valores diferentes message. Al añadir DataSource.Path = false al parámetro message se elimina del cálculo de la ruta de origen de datos, y se convierte al conector en un "singleton". Todas las llamadas a HelloWorldWithDocs.Contents se tratan como el mismo origen de datos y el usuario debe introducir las credenciales solo una vez.

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

Funciones con un parámetro URI

Dado que los orígenes de datos con un identificador basado en URI son habituales, hay un control especial en la interfaz de usuario de Power Query al trabajar con rutas de origen de datos basadas en URI. Cuando se detecta un origen de datos basado en URI, el cuadro de diálogo de credenciales proporciona una lista desplegable que permite al usuario seleccionar la ruta de acceso base, en lugar de la ruta de acceso completa (y todas las rutas de acceso intermedias).

Captura de pantalla del cuadro de diálogo de credenciales en la que se muestra la ruta de acceso de configuración a la que se aplican las credenciales.

Dado que Uri.Type es un tipo definido y no es un tipo primitivo en el lenguaje M, se deberá usar la función Value.ReplaceType para indicar que el parámetro de texto debe tratarse como un URI.

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