Leer en inglés

Compartir a través de


Habilitación de DirectQuery para un conector basado en ODBC

El uso de la función Odbc.DataSource integrada de M es la manera recomendada de crear conectores personalizados para orígenes de datos que tienen un controlador ODBC existente o que admiten una sintaxis de consulta SQL. Encapsular la función Odbc.DataSource permite al conector heredar el comportamiento de plegado de consultas predeterminado en función de las funcionalidades notificadas por el controlador. Este comportamiento permite que el motor de M genere instrucciones SQL basadas en filtros y otras transformaciones definidas por el usuario dentro de la experiencia de Power Query, sin tener que proporcionar esta lógica dentro del propio conector.

Opcionalmente, las extensiones ODBC pueden habilitar el modo DirectQuery, lo que permite a Power BI generar consultas dinámicamente en tiempo de ejecución sin almacenar en caché previamente el modelo de datos del usuario.

Nota

La habilitación de la compatibilidad con DirectQuery genera la dificultad y el nivel de complejidad del conector. Cuando DirectQuery está habilitado, Power BI evita que el motor M compense las operaciones que no se pueden enviar completamente al origen de datos subyacente.

En este artículo se supone que está familiarizado con la creación de un conector personalizado básico.

Consulte el ejemplo de SqlODBC para obtener la mayoría de los ejemplos de código de las secciones siguientes. Otros ejemplos se pueden encontrar en el directorio de ejemplos de ODBC.

Funciones de extensibilidad de ODBC

El motor M proporciona dos funciones de origen de datos relacionadas con ODBC: Odbc.DataSource y Odbc.Query.

La función Odbc.DataSource proporciona una tabla de navegación predeterminada con todas las bases de datos, tablas y vistas del sistema. Esta función también admite el plegado de consultas y permite una variedad de opciones de personalización. La mayoría de las extensiones basadas en ODBC usan esta función como función de extensibilidad principal. La función acepta dos argumentos: una cadena de conexión y un registro de opciones para proporcionar anulaciones de comportamiento.

La función Odbc.Query permite ejecutar instrucciones SQL a través de un controlador ODBC. Actúa como un paso directo para la ejecución de consultas. A diferencia de la función Odbc.DataSource, no proporciona funcionalidad de plegado de consultas y requiere que el conector (o el usuario final) proporcione las consultas SQL. Cuando crea un conector personalizado, esta función se usa internamente para ejecutar consultas para recuperar metadatos que podrían no exponerse a través de canales de ODBC normales. La función acepta dos argumentos: una cadena de conexión y una consulta SQL.

Directrices de la función del origen de datos

Los conectores personalizados pueden aceptar cualquier número de argumentos de función. Pero para mantener la coherencia con las funciones de origen de datos integradas que se incluyen con Power Query, se recomiendan las siguientes directrices:

  • Requerir el conjunto mínimo de parámetros usados para establecer una conexión con el servidor. Cuantos menos parámetros necesiten proporcionar los usuarios finales, más fácil es usar el conector.

  • Aunque puede definir parámetros con un número fijo de valores (por ejemplo, una lista desplegable en la interfaz de usuario), los parámetros se introducen antes de autenticar al usuario. Los valores que se pueden detectar mediante programación después de autenticar al usuario (como el nombre del catálogo o de la base de datos) deben seleccionarse a través del navegador. El comportamiento predeterminado de la función Odbc.DataSource es devolver una tabla de navegación jerárquica formada por nombres de catálogos (base de datos), esquemas y tablas. Sin embargo, este comportamiento se puede anular dentro del conector.

  • Si cree que los usuarios normalmente saben qué valores introducir para los elementos que seleccionarían en el Navegador (por ejemplo, el nombre de la base de datos), haga que estos parámetros sean opcionales. Los parámetros que se pueden detectar mediante programación no deben establecerse como obligatorios.

  • El último parámetro de la función debe ser un registro opcional denominado "options". Este parámetro normalmente permite a los usuarios avanzados establecer propiedades comunes relacionadas con ODBC (como CommandTimeout), establecer anulaciones de comportamiento específicas del conector y permite la extensibilidad futura sin afectar a la compatibilidad con versiones anteriores para la función.

  • Los argumentos relacionados con la seguridad o las credenciales nunca deben formar parte de los parámetros de la función de origen de datos, ya que los valores especificados en el cuadro de diálogo de conexión se conservan en la consulta del usuario. Los parámetros relacionados con credenciales deben especificarse como parte de los métodos de autenticación admitidos del conector.

De forma predeterminada, todos los parámetros necesarios para la función de origen de datos se tienen en cuenta en el valor de ruta del origen de datos que se usa para identificar las credenciales de usuario.

Aunque la interfaz de usuario de la función Odbc.DataSource integrada proporciona una lista desplegable que permite al usuario seleccionar un DSN, esta funcionalidad no está disponible a través de la extensibilidad. Si la configuración del origen de datos es lo suficientemente compleja como para requerir un cuadro de diálogo de configuración totalmente personalizable, se recomienda que requiera que los usuarios finales configuren previamente un DSN del sistema y que la función tome el nombre del DSN como campo de texto.