Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Usar a função Odbc.DataSource interna do M é a maneira recomendada de criar conectores personalizados para fontes de dados que têm um driver ODBC existente e/ou dão suporte a uma sintaxe de consulta SQL. Encapsular a função Odbc.DataSource permite que o conector herde o comportamento de dobragem de consulta padrão com base nos recursos relatados pelo driver. Esse comportamento permite que o mecanismo M gere instruções SQL com base em filtros e outras transformações definidas pelo usuário dentro da experiência do Power Query, sem precisar fornecer essa lógica dentro do próprio conector.
As extensões ODBC podem, opcionalmente, habilitar o modo DirectQuery, permitindo que o Power BI gere dinamicamente consultas em runtime sem pré-armazenar o modelo de dados do usuário.
Observação
Habilitar o suporte do DirectQuery eleva o nível de dificuldade e complexidade do conector. Quando o DirectQuery está habilitado, o Power BI impede o mecanismo M de compensar operações que não podem ser totalmente executadas na fonte de dados subjacente.
Este artigo pressupõe familiaridade com a criação de um conector personalizado básico.
Consulte o exemplo sqlODBC para a maioria dos exemplos de código nas seções a seguir. Outros exemplos podem ser encontrados no diretório de exemplos ODBC.
Funções de extensões ODBC
O mecanismo M fornece duas funções de fonte de dados relacionadas ao ODBC: Odbc.DataSource e Odbc.Query.
A função Odbc.DataSource fornece uma tabela de navegação padrão com todos os bancos de dados, tabelas e exibições do sistema. Essa função também dá suporte à consolidação de consultas e permite várias opções de personalização. A maioria das extensões baseadas em ODBC usa essa função como sua função de extensibilidade primária. A função aceita dois argumentos: uma cadeia de conexão e um registro de opções para fornecer substituições de comportamento.
A função Odbc.Query permite executar instruções SQL por meio de um driver ODBC. Ele atua como um canal para execução de consultas. Ao contrário da função Odbc.DataSource , ela não fornece a funcionalidade de dobragem de consulta e exige que as consultas SQL sejam fornecidas pelo conector (ou pelo usuário final). Quando você cria um conector personalizado, essa função normalmente é usada internamente para executar consultas para recuperar metadados que podem não ser expostos por meio de canais ODBC regulares. A função aceita dois argumentos: uma cadeia de conexão e uma consulta SQL.
Diretrizes de função da fonte de dados
Conectores personalizados podem aceitar qualquer número de argumentos de função. Mas para permanecer consistente com as funções de fonte de dados internas enviadas com o Power Query, as seguintes diretrizes são recomendadas:
Exija o conjunto mínimo de parâmetros usados para estabelecer uma conexão com o servidor. Quanto menos parâmetros os usuários finais precisarem fornecer, mais fácil o conector será usar.
Embora você possa definir parâmetros com um número fixo de valores (por exemplo, uma lista suspensa na interface do usuário), os parâmetros são inseridos antes que o usuário seja autenticado. Todos os valores que podem ser descobertos programaticamente depois que o usuário é autenticado (como nome de catálogo ou banco de dados) devem ser selecionáveis por meio do Navegador. O comportamento padrão para a função Odbc.DataSource é retornar uma tabela de navegação hierárquica que consiste em Nomes de Catálogo (Banco de Dados), Esquema e Tabela. No entanto, esse comportamento pode ser modificado dentro do seu conector.
Se você achar que os usuários normalmente sabem quais valores inserir para itens que eles selecionariam no Navegador (como o nome do banco de dados), torne esses parâmetros opcionais. Parâmetros que podem ser descobertos programaticamente não devem ser necessários.
O último parâmetro para sua função deve ser um registro opcional chamado "opções". Esse parâmetro normalmente permite que usuários avançados definam propriedades comuns relacionadas ao ODBC (como
CommandTimeout), definam substituições de comportamento específicas para o seu conector e promovam extensibilidade futura sem afetar a compatibilidade com versões anteriores para a sua função.Argumentos relacionados à segurança/credencial nunca devem fazer parte dos parâmetros de função da fonte de dados, pois os valores inseridos na caixa de diálogo de conexão são mantidos para a consulta do usuário. Os parâmetros relacionados à credencial devem ser especificados como parte dos métodos de Autenticação com suporte do conector.
Por padrão, todos os parâmetros necessários para sua função de fonte de dados são levados em conta no valor caminho da fonte de dados usado para identificar as credenciais do usuário.
Embora a interface do usuário para a função interna Odbc.DataSource forneça uma lista suspensa que permite que o usuário selecione um DSN, essa funcionalidade não está disponível por meio da extensibilidade. Se a configuração da fonte de dados for complexa o suficiente para exigir uma caixa de diálogo de configuração totalmente personalizável, recomendamos que você exija que os usuários finais pré-configurem um DSN do sistema e que sua função use o nome DSN como um campo de texto.