Control de compatibilidad con puerta de enlace

Probar la conexión

La compatibilidad con conectores personalizados está disponible en los modos personal y estándar de la puerta de enlace de datos local. Ambos modos de puerta de enlace son compatibles con la Importación. Direct Query solo es compatible en modo estándar. En la actualidad, OAuth para conectores personalizados a través de puertas de enlace solo es compatible para administradores de puerta de enlace, pero no para otros usuarios de orígenes de datos.

Es probable que el método para implementar la funcionalidad TestConnection cambie y la funcionalidad del conector de datos personalizados de Power BI esté en versión preliminar.

A fin de ser compatible con la actualización programada a través de la puerta de enlace de datos local, el conector debe implementar un controlador de TestConnection. Se llama a la función cuando el usuario configura las credenciales para el origen y se utiliza para garantizar su validez. El controlador de TestConnection se configura en el registro Tipo de origen de datos y tiene la firma siguiente:

(dataSourcePath) as list => ...

Donde dataSourcePath es el valor de la ruta de origen de datos para la función y el valor que devuelve es una lista compuesta por:

  • El nombre de la función a llamar (esta función debe tener una marca #sharedy por lo general es la función de origen de datos principal).
  • Uno o varios argumentos que pasarán a la función.

Si la invocación de la función produce un error, se considera que TestConnection ha sufrido un error y no se conservará la credencial.

Nota:

Como se indicó antes, el nombre de la función que brinde TestConnection debe ser miembro de shared.

Ejemplo: conector sin argumentos necesarios

El fragmento de código que se ve a continuación implementa TestConnection para un origen de datos sin parámetros necesarios (como el que se encuentra en el tutorial de TripPin). Los conectores sin parámetros necesarios (que se conocen como "Singletons") no necesitan ninguna entrada por parte del usuario para probar una conexión (excepto las credenciales). En este caso, el valor dataSourcePath sería igual al nombre del tipo de origen de datos y se puede omitir. La función TripPin.Contents se invoca sin parámetros adicionales.

TripPin = [
    TestConnection = (dataSourcePath) => { "TripPin.Contents" },
    Authentication = [
        Anonymous = []
    ],
    Label = "TripPin"
];

Ejemplo: conector con un parámetro de dirección URL

Si la función origen de datos tiene un único parámetro necesario del tipo Uri.Type, el dataSourcePath será igual a la dirección URL que brinde el usuario. En el fragmento de código a continuación se muestra la implementación TestConnection del ejemplo de Github.

GithubSample = [
    TestConnection = (dataSourcePath) => {"GithubSample.Contents", dataSourcePath},
    Authentication = [
        OAuth = [
            StartLogin = StartLogin,
            FinishLogin = FinishLogin,
            Label = Extension.LoadString("AuthenticationLabel")
        ]
    ]
];

Ejemplo: conector con parámetros necesarios

Si la función origen de datos tiene varios parámetros o un único parámetro que no es una dirección URL, el valor dataSourcePath será una cadena JSON que contenga los parámetros. El fragmento de código a continuación procede del ejemplo DirectQueryForSQL.

DirectSQL = [
    TestConnection = (dataSourcePath) =>
        let
            json = Json.Document(dataSourcePath),
            server = json[server],
            database = json[database]
        in
            { "DirectSQL.Database", server, database },
    Authentication = [
        Windows = [],
        UsernamePassword = []
    ],
    Label = "Direct Query for SQL"
];