Usar DirectQuery en Power BI Desktop

Con Power BI Desktop, cuando se conecta al origen de datos, siempre es posible importar una copia de los datos en Power BI Desktop. Para algunos orígenes de datos, existe un enfoque alternativo: conectarse directamente al origen de datos mediante DirectQuery.

Orígenes de datos admitidos

Para obtener una lista completa de los orígenes de datos que admiten DirectQuery, consulte Orígenes de datos compatibles con DirectQuery.

Cómo conectarse con DirectQuery

Si usa Obtener datos para conectarse a un origen de datos compatible con DirectQuery, el cuadro de diálogo de conexión le permite seleccionar cómo se quiere conectar. Por ejemplo, en Power BI Desktop, en la cinta Inicio, seleccione Obtener datos>SQL Server. En el cuadro de diálogo Base de datos de SQL Server, el modo de conectividad de datos muestra opciones de Importación y DirectQuery:

Opciones de importación y DirectQuery, cuadro de diálogo Base de datos de SQL Server, Power BI Desktop

Estas son las diferencias entre usar Importación y DirectQuery:

  • Importación: Las tablas y columnas seleccionadas se importan en Power BI Desktop. A medida que crea una visualización o interactúa con ella, Power BI Desktop usa los datos importados. Para ver los cambios de datos subyacentes desde la importación inicial o la actualización más reciente, debe actualizar los datos, lo que importa de nuevo el conjunto de datos completo.

  • DirectQuery: no se importan ni copian datos en Power BI Desktop. En el caso de los orígenes relacionales, las tablas y columnas seleccionadas aparecen en la lista Campos. En el caso de los orígenes multidimensionales como SAP Business Warehouse, las dimensiones y medidas del cubo seleccionado aparecen en la lista Campos. Mientras crea o interactúa con una visualización, Power BI Desktop consulta el origen de datos subyacente, lo que significa que siempre está viendo los datos actuales.

Existen muchas transformaciones de datos y modelado de datos disponibles al usar DirectQuery, aunque con algunas limitaciones. Al crear o interactuar con una visualización, debe consultar el origen subyacente. El tiempo necesario para actualizar el objeto visual depende del rendimiento del origen de datos subyacente. Si los datos necesarios para atender la solicitud se solicitaron recientemente, Power BI Desktop usa datos recientes para reducir el tiempo necesario para mostrar la visualización. Si seleccionaActualizar desde la cinta Inicio, se asegurará de que todas las visualizaciones se actualicen con los datos actuales.

En el artículo Power BI y DirectQuery se describe DirectQuery detalladamente. Para obtener más información sobre las ventajas, limitaciones y consideraciones importantes al utilizar DirectQuery, consulte las siguientes secciones.

Ventajas del uso de DirectQuery

El uso de DirectQuery ofrece varias ventajas:

  • DirectQuery permite crear visualizaciones en conjuntos de datos muy grandes, en los que de otro modo sería imposible importar primero todos los datos con agregación previa.
  • Los cambios en los datos subyacentes pueden requerir una actualización de datos. Para algunos informes, la necesidad de mostrar los datos actuales puede requerir grandes transferencias de datos, de modo que sería inviable volver a importar datos. Por el contrario, los informes de DirectQuery siempre usan los datos actuales.
  • La limitación del conjunto de datos a 1 GB no se aplica a DirectQuery.

Consideraciones y limitaciones

Actualmente, existen algunas limitaciones en el uso de DirectQuery:

  • Si la consulta del Editor de Power Query es demasiado compleja, se produce un error. Para corregir el error debe eliminar el paso problemático en el Editor de Power Query o importar los datos, en lugar de usar DirectQuery. En el caso de los orígenes multidimensionales, como SAP Business Warehouse, no hay ningún Editor de Power Query.

  • Las tablas calculadas y las columnas calculadas que hacen referencia a una tabla DirectQuery desde un origen de datos con autenticación de inicio de sesión único (SSO) no son compatibles con el servicio Power BI.

  • La característica de fecha y hora automáticas no está disponible en DirectQuery. Por ejemplo, no se admite el tratamiento especial de columnas de fecha (desglosadas por año, trimestre, mes o día.) en el modo DirectQuery.

  • Hay un límite de un millón de filas para orígenes en la nube (que es cualquier origen de datos que no sea local), con orígenes locales limitados a una carga útil definida de aproximadamente 4 MB por fila (según el algoritmo de compresión propietario) o un tamaño de datos de 16 MB para todo el objeto visual. Se pueden elevar ciertos límites al usar la capacidad Premium. El límite no afecta a las agregaciones o cálculos utilizados para crear el conjunto de datos devuelto mediante DirectQuery. Solo afecta a las filas devueltas. Las capacidades premium pueden establecer límites máximos de filas, tal y como se describe en esta publicación.

    Por ejemplo, puede agregar 10 millones de filas a la consulta que se ejecuta en el origen de datos. La consulta devuelve con precisión los resultados de esa agregación a Power BI mediante DirectQuery si el número de filas de datos de Power BI devueltos es inferior a un millón. Si se devuelve más de 1 millón filas desde DirectQuery, Power BI devuelve un error (a menos que esté en la capacidad premium y el recuento de filas esté por debajo del límite del conjunto de administradores).

  • Hay un límite de 125 columnas en una tabla o matriz para los resultados que tienen más de 500 filas para los orígenes de DirectQuery. Al mostrar un resultado que contiene más de 500 filas en una tabla o matriz, verá una barra de desplazamiento que le permite capturar más datos. En esa situación, el número máximo de columnas de la tabla o matriz es 125. Si tiene incluir más de 125 columnas en una sola tabla o matriz, considere la posibilidad de crear medidas con MIN, MAX, FIRST o LAST, ya que no cuentan para este valor máximo.

  • No se puede cambiar del modo de importación al modo DirectQuery. Aunque es posible cambiar un modelo del modo DirectQuery para usar el modo de importación, deben importarse todos los datos necesarios. Tampoco es posible revertir el cambio (principalmente debido a que el conjunto de características no se admite en el modo DirectQuery). Los modelos DirectQuery en orígenes multidimensionales, como SAP BW, tampoco se pueden cambiar de DirectQuery a la importación, debido al tratamiento distinto de las medidas externas.

  • Existe un problema conocido en DirectQuery al filtrar una columna de fecha que contiene 31 de diciembre de 9999, que a menudo se usa como marcador de posición de fecha especial cuando no se capturó la información de fecha real. Aunque es habitual filtrar la fecha 31 de diciembre de 9999 a partir del análisis, el uso de un filtro es o no es no filtra correctamente esa fecha especial. Para evitar el filtrado incorrecto cuando esa fecha está presente, use es en o posterior a o es en o anterior a para filtrar por esa fecha especial. En el ejemplo siguiente se proporciona más información para comprender posibles problemas de filtrado y la mejor manera de evitarlos.

    En este ejemplo se usa un conjunto de datos simple que contiene solo dos filas de datos con dos fechas. Las fechas tienen formatos comunes en Estados Unidos: el mes, seguido del día y del año. La primera fila contiene una fecha 5 de marzo de 2022 y la segunda fila contiene 31 de diciembre de 9999:

    Datos de ejemplo para explicar la incidencia de filtro con la fecha especial de 31 de diciembre de 9999. Los datos contienen dos filas: la primera incluye 5 de marzo de 2022 y, la segunda, 31 de diciembre de 9999

    Si quiere aislar o quitar las filas que contienen 31 de diciembre de 9999, es probable que cree un filtro en la columna que contenga las fechas y lo establezca para mostrar elementos cuando el valor sea o no sea igual a 31 de diciembre de 9999, tal como se muestra en la imagen siguiente. Aun así, tenga en cuenta que los resultados devueltos no son los esperados, ya que el objeto visual no devuelve datos, en lugar de devolver una fila, tal como se espera:

    Establecer un filtro para mostrar elementos cuando el valor sea o no sea igual a 31 de diciembre de 9999 hará que se filtren todos los datos y, por lo tanto, devolverá resultados incorrectos.

    Pero al establecer el filtro para mostrar los elementos cuando el valor es en o anterior a o es en o posterior a 31 de diciembre de 9999, se devuelven los resultados esperados:

    Establecer un filtro

    Establecer un filtro

Consideraciones importantes al utilizar DirectQuery

Deben tenerse en cuenta los tres puntos siguientes al usar DirectQuery:

  • Carga y rendimiento: todas las solicitudes de DirectQuery se envían a la base de datos de origen, por lo que el tiempo necesario para actualizar un objeto visual depende de cuánto tiempo tarda ese origen de back-end en responder con los resultados de la consulta (o consultas). El tiempo de respuesta recomendado (con la devolución de los datos solicitados) para usar DirectQuery con objetos visuales es de cinco segundos o menos; el tiempo de respuesta máximo recomendado es de 30 segundos, y nada más. Así, la experiencia de un usuario que utiliza el informe acaba por ser demasiado mala. Después de que se publique un informe en el servicio Power BI, se agotará el tiempo de espera de cualquier consulta que tarde más de unos minutos y el usuario recibirá un error.

    También se debe tener en cuenta la carga en la base de datos de origen, en función del número de usuarios de Power BI que utilizarán el informe publicado. El uso de Seguridad de nivel de fila (RLS) también puede tener un impacto significativo. Un icono del panel no RLS compartido por varios usuarios da como resultado una sola consulta a la base de datos. Aunque el uso de RLS en un icono de panel, normalmente significa que la actualización de un icono requiere una consulta por usuario, lo que aumenta significativamente la carga en la base de datos de origen y puede afectar al rendimiento.

    Power BI crea consultas que son tan eficaces como sea posible. Aunque, en determinadas situaciones, la consulta generada puede no ser lo suficientemente eficiente para evitar una actualización en la que se produciría un error. Un ejemplo de esta situación se produce cuando una consulta generada recupera un número excesivamente grande de filas desde el origen de datos back-end. En este caso, se produce el siguiente error:

    The resultset of a query to external data source has exceeded
    

    Esta situación puede producirse con un gráfico simple que incluye una columna de cardinalidad muy alta, con la opción de agregación establecida en No resumir. El objeto visual solo ha de tener columnas de cardinalidad inferior a un millón o se deben aplicar los filtros adecuados.

  • Seguridad: de forma predeterminada, todos los usuarios que utilizan un informe publicado se conectan al origen de datos de back-end con las credenciales indicadas después de la publicación en el servicio Power BI. Este proceso es el mismo para que los datos que se importan: todos los usuarios ven los mismos datos, independientemente de las reglas de seguridad definidas en el origen de back-end.

    Los clientes que quieran seguridad por usuario implementada con orígenes de DirectQuery deben usar RLS o configurar la autenticación restringida de Kerberos en el origen. Kerberos no está disponible para todos los orígenes. Más información sobre RLS. Más información sobre Kerberos en DirectQuery.

  • Características admitidas: Algunas características de Power BI Desktop no se admiten en el modo DirectQuery o tienen algunas limitaciones. Además, hay algunas funcionalidades en el servicio Power BI (como Conclusiones rápidas) que no están disponibles para los conjuntos de datos que utilizan DirectQuery. A la hora de determinar si usar DirectQuery, debe tener en cuenta estas limitaciones de características.

Nota

Cuando se usa DirectQuery con Azure SQL Database y una dirección IP privada, se requiere una puerta de enlace local.

Publicación en el servicio Power BI

Los informes creados mediante DirectQuery se pueden publicar en el servicio Power BI.

Si el origen de datos usado no necesita la puerta de enlace de datos local [Azure SQL Database, Azure Synapse Analytics (anteriormente, SQL Data Warehouse) o Redshift], se deben proporcionar credenciales para que el servicio Power BI muestre el informe publicado. Siga estas instrucciones para proporcionar las credenciales:

  1. Inicie sesión en Power BI.

  2. En el servicio Power BI, seleccione el icono de engranaje Configuración y elija el elemento de menú Configuración.

    Configuración, servicio Power BI

  3. En la página Configuración del servicio Power BI, seleccione la pestaña Conjuntos de datos, elija el conjunto de datos que usa DirectQuery y seleccione Editar credenciales.

  4. Agregue las credenciales. De lo contrario, se producirá un error al abrir un informe publicado o explorar un conjunto de datos creado con una conexión de DirectQuery.

Para crear una conexión de orígenes de datos que no sean Azure SQL Database, Azure Synapse Analytics (anteriormente, SQL Data Warehouse) , Redshift o Snowflake Data Warehouse y que usen DirectQuery, instale una puerta de enlace de datos local y registre el origen de datos. Para obtener más información, consulte ¿Qué es una puerta de enlace de datos local?

Pasos siguientes

Para más información acerca de DirectQuery, revise los siguientes recursos: