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 is 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 compatiblesSupported Data Sources

Para obtener una lista completa de los orígenes de datos de orígenes 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

Al usar Obtener datos para conectarse a un origen de datos compatible con DirectQuery, una ventana 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 window lets you select how you want to connect.

Las diferencias entre seleccionar Importar y DirectQuery son las siguientes:The differences between selecting Import and DirectQuery are the following:

Importar: 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. Debe actualizar los datos, con lo que se importará de nuevo todo el conjunto de datos para ver si hubo cambios en los datos subyacentes desde la importación inicial o la actualización más reciente.You must refresh the data, which imports the full data set again, to see any changes that occurred to the underlying data since the initial import or the most recent refresh.

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. A medida que 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, which means 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, se debe consultar el origen subyacente. El tiempo necesario para actualizar la visualización depende del rendimiento del origen de datos subyacente.When creating or interacting with a visualization, the underlying source must be queried and the time necessary to refresh the visualization is dependent 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 necessary to service the request has recently been requested, Power BI Desktop uses recent data to reduce the time required to display the visualization. Si seleccionaActualizar desde la cinta de opciones Inicio, se asegurará de que todas las visualizaciones se actualicen con los datos actuales.Selecting Refresh from the Home ribbon will ensure 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. También puede consultar las siguientes secciones para obtener más información acerca de las ventajas, limitaciones y consideraciones importantes al utilizar DirectQuery.Also, see the following sections for more information about benefits, limitations, and important considerations when using DirectQuery.

Ventajas del uso de DirectQueryBenefits of using DirectQuery

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

  • DirectQuery permite crear visualizaciones en conjuntos de datos muy grandes, en los que sería imposible importar primero todos los datos con agregación previa de oto modoDirectQuery lets you build visualizations over very large datasets, where it otherwise would be unfeasible to first import all of the data with pre-aggregation
  • Los cambios en los datos subyacentes pueden requerir una actualización de datos y, en algunos informes, la necesidad de mostrar los datos actuales puede requerir grandes transferencias de datos, lo impide volver a importar datos.Underlying data changes can require a refresh of data, and for some reports, the need to display current data can require large data transfers, making re-importing 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 does not 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:

  • Todas las tablas deben proceder de una base de datos única.All tables must come from a single database
  • Si la consulta del Editor de consultas es demasiado compleja, se producirá un error.If the Query Editor query is overly complex, an error will occur. 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 you must 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 consultasFor multi-dimensional sources like SAP Business Warehouse, there is no Query Editor
  • El filtrado de relaciones se limita a una dirección única, en lugar de ambas direcciones (aunque se puede habilitar el filtrado cruzado en ambas direcciones para DirectQuery como una característica de Versión preliminar).Relationship filtering is limited to a single direction, rather than both directions (though it is possible to enable cross filtering in both directions for DirectQuery as a Preview feature). En el caso de los orígenes multidimensionales como SAP Business Warehouse, no hay relaciones definidas en el modeloFor multi-dimensional sources like SAP Business Warehouse, there are no relationships defined in the model
  • Las funcionalidades de inteligencia de tiempo no están disponibles en DirectQuery.Time intelligence capabilities are not available in DirectQuery. Por ejemplo, un tratamiento especial de columnas de fecha (año, trimestre, mes, día, etc.) no se admite en el modo DirectQuery.For example, special treatment of date columns (year, quarter, month, day, so on) are not supported in DirectQuery mode.
  • De forma predeterminada, las limitaciones se aplican a las expresiones DAX permitidas en las medidas. Consulte el párrafo siguiente (después de esta lista con viñetas) para más información.By default, limitations are placed on DAX expressions allowed in measures; see the following paragraph (after this bulleted list) for more information
  • Hay un límite de fila de 1 millón para la devolución de datos cuando se usa DirectQuery.There is a 1 million row limit for returning data when using DirectQuery. Esto no afecta a las agregaciones o cálculos utilizados para crear el conjunto de datos devuelto mediante DirectQuery, solo las filas devueltas.This does not affect aggregations or calculations used to create the dataset returned using DirectQuery, only the rows returned. Por ejemplo, puede agregar 10 millones de filas con la consulta que se ejecuta en el origen de datos, y devolver con exactitud los resultados de esa agregación a Power BI con DirectQuery siempre que la cantidad de datos devuelta a Power BI sea inferior a 1 millón de filas.For example, you can aggregate 10 million rows with your query that runs on the data source, and accurately return the results of that aggregation to Power BI using DirectQuery as long as the data returned to Power BI is less than 1 million rows. Si DirectQuery devuelve más de 1 millón de filas, Power BI devuelve un error.If more than 1 million rows would be returned from DirectQuery, Power BI returns an error.

Para asegurarse de que las consultas enviadas al origen de datos subyacente tengan un rendimiento aceptable, se aplican limitaciones a las medidas de forma predeterminada.To ensure that queries sent to the underlying data source have acceptable performance, limitations are imposed on measures by default. Los usuarios avanzados pueden optar por omitir esta limitación. Para ello, deben seleccionar Archivo > Opciones, Configuración > Opciones y configuración > DirectQuery y, después, la opción Permitir medidas sin restricciones en el modo DirectQuery.Advanced users can choose to bypass this limitation by selecting **File > Options* and then Settings > Options and settings > DirectQuery, then selecting the option Allow unrestricted measures in DirectQuery mode*. Si se selecciona esta opción, se puede usar cualquier expresión DAX que sea válida para una medida.When that option is selected, any DAX expression that is valid for a measure can be used. Los usuarios deben tener en cuenta, sin embargo, que algunas expresiones que funcionan muy bien al importar datos pueden derivar en consultas muy lentas para el origen de back-end en el modo DirectQuery.Users must be aware, however, that some expressions that perform very well when the data is imported may result in very slow queries to the backend source when in DirectQuery mode.

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 time required to refresh a visual is dependent on how long that back-end source takes to respond with the results from the query (or queries). El tiempo de respuesta recomendado (con los datos solicitados obtenidos) para usar DirectQuery para objetos visuales es de cinco segundos o menos, con un tiempo de respuesta máximo recomendado de resultados de 30 segundos,The recommended response time (with requested data being returned) for using DirectQuery for visuals is five seconds or less, with a maximum recommended results response time of 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. Además, una vez publicado 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.In addition, once a report is published to the Power BI service, any query that takes longer than a few minutes will timeout, 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 la seguridad de nivel de fila (RLS) también puede tener un gran impacto; un icono de panel diferente de RLS compartido por varios usuarios da lugar a una sola consulta en la base de datos, pero 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 podría afectar al rendimiento.Using Row Level Security (RLS) can have a significant impact as well; a non-RLS dashboard tile shared by multiple users results in a single query to the database, but using RLS on a dashboard tile usually means the refresh of a tile requires one query per user, thus 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. Sin embargo, 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 refresh that would fail. Un ejemplo de esta situación se produce cuando una consulta generada recuperaría un número excesivamente grande de filas (más de 1 millón) desde el origen de datos back-end, en cuyo caso se produce el siguiente error:One example of this situation is when a generated query would retrieve an excessively large number of rows (more than 1 million) from the back-end data source, in which case the following error occurs:

    The resultset of a query to external data source has exceeded
    the maximum allowed size of '1000000' rows.
    

    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 debe tener solo columnas con cardinalidad inferior a 1 millón o debe contar con los filtros adecuados aplicados.The visual needs to only have columns with a cardinality below 1 million, or must have appropriate filters applied.

  • Seguridad: todos los usuarios que utilizan un informe publicado se conectan al origen de datos back-end con las credenciales introducidas después de la publicación en el servicio Power BI.Security - 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. Se trata de la misma situación 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 is the same situation as data that is imported: all users see the same data, irrespective of any security rules defined in the backend source. Los clientes que desean seguridad por usuario implementan con orígenes de DirectQuery y usan RLS.Customers who want per-user security implement with DirectQuery sources and use RLS. Más información sobre RLS.Learn more about RLS.
  • Características compatibles: no todas las características en Power BI Desktop son compatibles en el modo DirectQuery o tienen algunas limitaciones.Supported features - Not all features in Power BI Desktop are supported in DirectQuery mode, or have some limitations. Además, hay algunas capacidades en el servicio Power BI (como Información rápida) que no están disponibles para los conjuntos de datos que utilizan DirectQuery.In addition, there are some capabilities in the Power BI service (such as Quick Insights) that are not available for datasets using DirectQuery. Como tal, la limitación de estas características al usar DirectQuery debe tenerse en cuenta al determinar si se debe usar DirectQuery.As such, the limitation of such features when using DirectQuery should be taken into consideration when determining whether to use DirectQuery.

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 informe publicado se muestre en el servicio Power BI.If the data source used does not need the on-premises data gateway (Azure SQL Database, Azure SQL Data Warehouse, or Redshift), credentials must be provided before the published report will be displayed in the Power BI Service.

Para proporcionar credenciales, seleccione el icono de engranaje de Configuración en Power BI y elija Configuración.You can provide credentials by selecting the Settings gear icon in Power BI, then select Settings.

Power BI muestra la ventana Configuración.Power BI displays the Settings window. Desde esta, seleccione la pestaña Conjuntos de datos y elija el conjunto de datos que usa DirectQuery. Luego, seleccione Editar credenciales.From there, select the Datasets tab and choose the dataset that uses DirectQuery, and select Edit credentials.

Hasta que se proporcionan las credenciales, se genera un error al abrir un informe publicado o explorar un conjunto de datos creado con una conexión de DirectQuery en dichos orígenes de datos.Until credentials are supplied, opening a published report or exploring a dataset created with a DirectQuery connection to such data sources results in an error.

En el caso de los orígenes de datos que no sean Azure SQL Database, Azure SQL Data Warehouse y Redshift que usan DirectQuery, se debe instalar una puerta de enlace de datos local y se debe registrar el origen de datos para establecer una conexión de datos.For data sources other than Azure SQL Database, Azure SQL Data Warehouse and Redshift that use DirectQuery, an on-premises data gateway must be installed and the data source must be registered to establish a data connection. Puede obtener más información acerca de la puerta de enlace de datos local.You can learn more about on-premises data gateway.

Pasos siguientesNext steps

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