Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El motor M identifica un origen de datos mediante una combinación de su Kind y Path. Cuando se encuentra un origen de datos durante una evaluación de consultas, el motor de M intenta buscar credenciales coincidentes. Si no se encuentra ninguna credencial, el motor devuelve un error especial que produce un mensaje de credenciales en Power Query.
El valor Kind proviene de la definición de Tipo de origen de datos.
El valor path se deriva de los parámetros necesarios de la función de origen de datos. Los parámetros opcionales no se tienen en cuenta en el identificador de ruta de acceso del origen de datos. Como resultado, todas las funciones de origen de datos asociadas 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. Vaya a Funciones con un parámetro URI para obtener más información.
Puede ver un ejemplo de cómo se almacenan las credenciales en el cuadro de diálogo Configuración del origen de datos en Power BI Desktop. En este cuadro de diálogo, el tipo se representa mediante un icono y el valor de la ruta de acceso se muestra como texto.
Nota:
Si cambia los parámetros necesarios de la función de origen de datos durante el desarrollo, las credenciales almacenadas previamente ya no funcionan (ya que los valores de ruta de acceso ya no coinciden). Debe eliminar las credenciales almacenadas cada vez que cambie los parámetros de la función del origen de datos. Si se encuentran credenciales incompatibles, es posible que reciba un error en tiempo de ejecución.
Formato de ruta de acceso del origen de datos
El valor path de un origen de datos se deriva de los parámetros necesarios de la función de origen de datos. Los parámetros necesarios se pueden excluir de la ruta de acceso agregando DataSource.Path = false a los metadatos de la función. Para obtener más información, vaya a Exclusión de los parámetros necesarios de la ruta de acceso del origen de datos.
De forma predeterminada, puede ver el valor de cadena real en el cuadro de diálogo de Configuración del origen de datos en Power BI Desktop y en el aviso de credenciales. Si la definición del tipo de origen de datos ha incluido un valor de Label, verá el valor de la etiqueta en su lugar.
Por ejemplo, la función de 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 usa para calcular la ruta de acceso del origen de datos. Se omite el parámetro opcional (count). La ruta de acceso se mostrará de la siguiente manera:
Solicitud de credenciales
Interfaz de usuario de configuración del origen de datos
Cuando se define un valor label, no se muestra el valor de ruta de acceso del origen de datos:
Nota:
Actualmente, 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 han escrito. Esperamos mejorar esto en el futuro (es decir, permitir que los conectores de datos muestren sus propias rutas de origen de datos personalizadas).
Exclusión de los parámetros necesarios de la ruta de acceso del origen de datos
Si desea que se requiera un parámetro de función, pero no se incluya como parte de la ruta de acceso del origen de datos, puede agregar DataSource.Path = false a los metadatos de la documentación de la función. Esta propiedad se puede agregar a uno o varios parámetros para la función. Este campo quita el valor de la ruta de acceso del origen de datos (lo que significa que ya no se pasa a la TestConnection función), por lo que solo se debe usar para los parámetros que no son necesarios para identificar el origen de datos o distinguir entre las credenciales de usuario.
Por ejemplo, el conector del ejemplo HelloWorldWithDocs requeriría credenciales diferentes para valores diferentes message .
Al agregar DataSource.Path = false al parámetro message, se elimina del cálculo de la ruta de acceso del origen de datos, lo que transforma al conector en un "singleton". Todas las llamadas a HelloWorldWithDocs.Contents se tratan como el mismo origen de datos y el usuario solo proporciona credenciales 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 tan comunes, 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 encuentra 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 entre sí).
Como Uri.Type es un tipo descrito en lugar de un tipo primitivo en el lenguaje M, 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);