Tratar suporte de gateway

Teste a conexão

O suporte ao conector personalizado está disponível nos modos Pessoal e Standard do gateway de dados local. Ambos os modos de gateway suportam Importação. A Consulta direta tem suporte apenas no modo Standard. Atualmente, o OAuth para conectores personalizados via gateways é suportado apenas para administradores de gateway, mas não para outros usuários de fonte de dados.

O método para implementar a funcionalidade TestConnection provavelmente será alterado enquanto a funcionalidade Conector de dados personalizados do Power BI se encontrar na versão prévia.

Para suportar a atualização agendada por meio do gateway de dados local, seu conector deve implementar um manipulador TestConnection. A função é chamada quando o usuário está configurando as credenciais para a fonte de dados e é usada para garantir que elas sejam válidas. O manipulador TestConnection é definido no registro Tipo de fonte de dados e tem a seguinte assinatura:

(dataSourcePath) as list => ...

Em que dataSourcePath é o valor do Caminho da fonte de dados da sua função, e o valor retornado é uma lista composta de:

  • Nome da função a ser chamada (essa função deve ser marcada como #shared, e geralmente é a função principal da fonte de dados).
  • Um ou mais argumentos a serem passados na função.

Se a invocação da função resultar em um erro, o TestConnection será considerado como fracassado e a credencial não será gravada.

Observação

Conforme indicado acima, o nome da função fornecido pelo TestConnection deve ser um membro shared.

Exemplo: conector sem argumentos obrigatórios

O snippet de código abaixo implementa o TestConnection para uma fonte de dados sem parâmetros obrigatórios (como o encontrado no tutorial do TripPin). Os conectores sem parâmetros obrigatórios (conhecidos como "Singletons") não precisam de nenhuma entrada fornecida pelo usuário para testar uma conexão (além das credenciais). Nesse caso, o valor de dataSourcePath seria igual ao nome do Tipo de fonte de dados e pode ser ignorado. A função TripPin.Contents é invocada sem parâmetros adicionais.

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

Exemplo: conector com um parâmetro de URL

Se a sua função de fonte de dados tiver um único parâmetro obrigatório do tipo Uri.Type, seu dataSourcePath será igual à URL fornecida pelo usuário. O snippet abaixo mostra a implementação do TestConnection do Exemplo do Github.

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

Exemplo: conector com parâmetros obrigatórios

Se a função de fonte de dados tiver vários parâmetros ou um único parâmetro não URL, o valor de dataSourcePath será uma cadeia de caracteres JSON que contém os parâmetros. O snippet abaixo é do exemplo 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"
];