Usar DirectQuery en Power BI DesktopUse DirectQuery in 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.With Power BI Desktop, when you connect to your data source, it's always possible to import a copy of the data into the Power BI Desktop. Para algunos orígenes de datos, existe un enfoque alternativo: conectarse directamente al origen de datos mediante DirectQuery.For some data sources, an alternative approach is available: connect directly to the data source using DirectQuery.

Orígenes de datos admitidosSupported data sources

Para obtener una lista completa de los orígenes de datos que admiten DirectQuery, consulte Orígenes de datos compatibles con DirectQuery.For a full listing of data sources that support DirectQuery, see Data sources supported by DirectQuery.

Cómo conectarse con DirectQueryHow to connect using 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 quiere conectarse.When you use Get Data to connect to a data source supported by DirectQuery, the connection dialog box lets you select how you want to connect. Por ejemplo, en Power BI Desktop, en la cinta Inicio, seleccione Obtener datos > SQL Server.For example, in Power BI Desktop, under the Home ribbon, select Get Data > 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:In the SQL Server Database dialog box, the Data Connectivity mode shows options of Import and 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:Here are the differences between selecting Import and DirectQuery:

  • Importación: Las tablas y columnas seleccionadas se importan en Power BI Desktop.Import: The selected tables and columns are imported into Power BI Desktop. A medida que crea una visualización o interactúa con ella, Power BI Desktop usa los datos importados.As you create or interact with a visualization, Power BI Desktop uses the imported data. 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.To see underlying data changes since the initial import or the most recent refresh, you must refresh the data, which imports the full dataset again.

  • DirectQuery: no se importan ni copian datos en Power BI Desktop.DirectQuery: No data is imported or copied into Power BI Desktop. En el caso de los orígenes relacionales, las tablas y columnas seleccionadas aparecen en la lista Campos.For relational sources, the selected tables and columns appear in the Fields list. En el caso de los orígenes multidimensionales como SAP Business Warehouse, las dimensiones y medidas del cubo seleccionado aparecen en la lista Campos.For multi-dimensional sources like SAP Business Warehouse, the dimensions and measures of the selected cube appear in the Fields list. 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.As you create or interact with a visualization, Power BI Desktop queries the underlying data source, so you’re always viewing current data.

Existen muchas transformaciones de datos y modelado de datos disponibles al usar DirectQuery, aunque con algunas limitaciones.Many data modeling and data transformations are available when using DirectQuery, though with some limitations. Al crear o interactuar con una visualización, debe consultar el origen subyacente.When you create or interact with a visualization, you must query the underlying source. El tiempo necesario para actualizar el objeto visual depende del rendimiento del origen de datos subyacente.The time that's needed to refresh the visualization depends on the performance of the underlying data source. 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.When the data needed to service the request has recently been requested, Power BI Desktop uses recent data to reduce the required time to show the visualization. Si seleccionaActualizar desde la cinta Inicio, se asegurará de que todas las visualizaciones se actualicen con los datos actuales.If you select Refresh from the Home ribbon, all visualizations are refreshed with current data.

En el artículo Power BI y DirectQuery se describe DirectQuery detalladamente.The Power BI and DirectQuery article describes DirectQuery in detail. Para obtener más información sobre las ventajas, limitaciones y consideraciones importantes al utilizar DirectQuery, consulte las siguientes secciones.For more information about benefits, limitations, and important considerations when using DirectQuery, see the following sections.

Ventajas del uso de DirectQueryBenefits of using DirectQuery

El uso de DirectQuery ofrece varias ventajas:There are a few benefits to using DirectQuery:

  • 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.DirectQuery lets you build visualizations over very large datasets, where it would otherwise be unfeasible to first import all the data with pre-aggregation.
  • Los cambios en los datos subyacentes pueden requerir una actualización de datos.Underlying data changes can require a refresh of data. 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.For some reports, the need to display current data can require large data transfers, making reimporting data unfeasible. Por el contrario, los informes de DirectQuery siempre usan los datos actuales.By contrast, DirectQuery reports always use current data.
  • La limitación del conjunto de datos a 1 GB no se aplica a DirectQuery.The 1-GB dataset limitation doesn't apply to DirectQuery.

Limitaciones de DirectQueryLimitations of DirectQuery

Actualmente, existen algunas limitaciones en el uso de DirectQuery:There are currently a few limitations to using DirectQuery:

  • Si la consulta del Editor de consultas es demasiado compleja, se produce un error.If the Query Editor query is overly complex, an error occurs. Para corregir el error debe eliminar el paso problemático en el Editor de consultas o importar los datos, en lugar de usar DirectQuery.To remedy the error, either delete the problematic step in Query Editor, or import the data instead of using DirectQuery. En el caso de los orígenes multidimensionales, como SAP Business Warehouse, no hay Editor de consultas.For multi-dimensional sources like SAP Business Warehouse, there's no Query Editor.

  • Las funcionalidades de inteligencia de tiempo no están disponibles en DirectQuery.Time intelligence capabilities are unavailable in DirectQuery. Por ejemplo, no se admite el tratamiento especial de columnas de fecha (año, trimestre, mes, día, etc.) en el modo DirectQuery.For example, special treatment of date columns (such as year, quarter, month, or day) isn't supported in DirectQuery mode.

  • Para asegurarse de que las consultas enviadas al origen de datos subyacente tienen un rendimiento aceptable, se aplican limitaciones a las expresiones DAX que se permiten en las medidas.Limitations are placed on DAX expressions allowed in measures to ensure that queries sent to the underlying data source have acceptable performance.

  • Hay un límite de un millón de filas para orígenes en la nube, 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.There's a one-million-row limit for cloud sources, with on-premises sources limited to a defined payload of about 4 MB per row (depending on proprietary compression algorithm) or 16MB data size for the entire visual. Se pueden elevar ciertos límites al usar la capacidad Premium.Certain limits may be raised when using Premium capacity. El límite no afecta a las agregaciones o cálculos utilizados para crear el conjunto de datos devuelto mediante DirectQuery.The limit doesn't affect aggregations or calculations used to create the dataset returned using DirectQuery. Solo afecta a las filas devueltas.It only affects the rows returned. Las capacidades premium pueden establecer límites máximos de filas, tal y como se describe en esta publicación.Premium capacities can set maximum row limits, as described in this post.

    Por ejemplo, puede agregar 10 millones de filas a la consulta que se ejecuta en el origen de datos.For example, you can aggregate 10 million rows with your query that runs on the data source. 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.The query accurately returns the results of that aggregation to Power BI using DirectQuery if the returned Power BI data is less than 1 million rows. 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).If over 1 million rows are returned from DirectQuery, Power BI returns an error (unless in Premium capacity, and the row count is under the admin-set limit).

Consideraciones importantes al utilizar DirectQueryImportant considerations when using DirectQuery

Deben tenerse en cuenta los tres puntos siguientes al usar DirectQuery:The following three points should be taken into consideration when using 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).Performance and load: All DirectQuery requests are sent to the source database, so the required visual refresh time depends on how long that back-end source takes to respond with the results from the query (or queries). 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,Five seconds or less is the recommended response time (with requested data being returned) for using DirectQuery for visuals; the maximum recommended time is 30 seconds. y nada más. Así, la experiencia de un usuario que utiliza el informe acaba por ser demasiado mala.Any longer, and the experience of a user consuming the report becomes unacceptably poor. 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.After a report is published to the Power BI service, any query that takes longer than a few minutes will time out, and the user will receive an 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.Load on the source database should also be considered, based on the number of Power BI users who will consume the published report. El uso de Seguridad de nivel de fila (RLS) también puede tener un impacto significativo.Using Row Level Security (RLS) can have a significant impact as well. Un icono del panel no RLS compartido por varios usuarios da como resultado una sola consulta a la base de datos.A non-RLS dashboard tile shared by multiple users results in a single query to the database. 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.Using RLS on a dashboard tile, however, usually means the refresh of a tile requires one query per user, significantly increasing load on the source database and potentially impacting performance.

    Power BI crea consultas que son tan eficaces como sea posible.Power BI creates queries that are as efficient as possible. 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.Under certain situations, however, the generated query may not be efficient enough to avoid a refresh that would fail. 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.One example of this situation is when a generated query retrieves an excessively large number of rows from the back-end data source. En este caso, se produce el siguiente error:In this case, the following error occurs:

    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.This situation can occur with a simple chart that includes a very high cardinality column, with the aggregation option set to Don’t Summarize. El objeto visual solo ha de tener columnas de cardinalidad inferior a un millón o se deben aplicar los filtros adecuados.The visual needs to only have columns with a cardinality below 1 million, or it must apply the appropriate filters.

  • 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.Security: By default, all users who consume a published report connect to the back-end data source using the credentials entered after publication to the Power BI service. 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.This process is the same for data that's imported: all users see the same data, regardless of any security rules defined in the backend source.

    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.Customers who want per-user security implemented with DirectQuery sources should either use RLS or configure Kerberos-constrained authentication against the source. Kerberos no está disponible para todos los orígenes.Kerberos isn't available for all sources. Más información sobre RLS.Learn more about RLS. Más información sobre Kerberos en DirectQuery.Learn more about Kerberos in DirectQuery.

  • Características admitidas: Algunas características de Power BI Desktop no se admiten en el modo DirectQuery o tienen algunas limitaciones.Supported features: Some features in Power BI Desktop are unsupported in DirectQuery mode, or they have limitations. 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.Also, some capabilities in the Power BI service (such as Quick Insights) aren't available for datasets using DirectQuery. A la hora de determinar si usar DirectQuery, debe tener en cuenta estas limitaciones de características.When determining whether to use DirectQuery, you should consider these feature limitations.

Nota

Cuando se usa DirectQuery con Azure SQL Database y una dirección IP privada, se requiere una puerta de enlace local.When using DirectQuery with an Azure SQL Database and a private IP address, an on-premises gateway is required.

Publicación en el servicio Power BIPublish to the Power BI service

Los informes creados mediante DirectQuery se pueden publicar en el servicio Power BI.Reports created using DirectQuery can be published to the Power BI service.

Si el origen de datos usado no necesita la puerta de enlace de datos local (Azure SQL Database, Azure SQL Data Warehouse o Redshift), se deben proporcionar credenciales para que el servicio Power BI muestre el informe publicado.If the used data source doesn't need the On-premises data gateway (Azure SQL Database, Azure SQL Data Warehouse, or Redshift), you must provide credentials before the Power BI service shows the published report. Siga estas instrucciones para proporcionar las credenciales:Follow these instructions to provide the credentials:

  1. Inicie sesión en Power BI.Sign in to Power BI.

  2. En el servicio Power BI, seleccione el icono de engranaje Configuración y elija el elemento de menú Configuración.In the Power BI service, select the Settings gear icon and choose the Settings menu item.

    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.In the Power BI service's Settings page, select the Datasets tab, choose the dataset that uses DirectQuery, and select Edit credentials.

  4. Agregue las credenciales.Add the credentials. 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.Otherwise, an error occurs when you open a published report or explore a dataset that's created with a DirectQuery connection.

Para crear una conexión de orígenes de datos que no sean Azure SQL Database, Azure 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.To make a data connection for data sources other than Azure SQL Database, Azure SQL Data Warehouse, Redshift, or Snowflake Data Warehouse that use DirectQuery, install an On-premises data gateway and register the data source. Para obtener más información, consulte ¿Qué es una puerta de enlace de datos local?For more information, see What is an on-premises data gateway?

Pasos siguientesNext steps

Para más información acerca de DirectQuery, revise los siguientes recursos:For more information about DirectQuery, check out the following resources: