Modo de almacenamiento en Power BI DesktopStorage mode in Power BI Desktop

En Microsoft Power BI Desktop, puede especificar el modo de almacenamiento de las tablas.In Microsoft Power BI Desktop, you can specify the storage mode of tables. El modo de almacenamiento le permite controlar si Power BI Desktop almacena datos en caché en memoria para los informes.Storage mode lets you control whether Power BI Desktop caches table data in-memory for reports.

Modo de almacenamiento en Power BI Desktop

El hecho de establecer el modo de almacenamiento proporciona varias ventajas.Setting the storage mode provides many advantages. Puede establecer el modo de almacenamiento para cada tabla individualmente en el modelo.You can set storage mode for each table individually in your model. Esta acción permite un único conjunto de datos, lo cual proporciona las siguientes ventajas:This action enables a single dataset, which provides the following benefits:

  • Rendimiento de las consultas: cuando los usuarios interactúan con objetos visuales en los informes de Power BI, las consultas de expresiones de análisis de datos (DAX) se envían al conjunto de datos.Query performance: As users interact with visuals in Power BI reports, Data Analysis Expressions (DAX) queries are submitted to the dataset. Si almacena datos en caché en memoria establecimiento correctamente el modo de almacenamiento, puede mejorar el rendimiento de consulta y la interactividad de los informes.Caching data into memory by properly setting the storage mode can boost the query performance and interactivity of your reports.

  • Conjuntos de datos de gran tamaño: las tablas que no se almacenan en caché no consumen memoria para el almacenamiento en caché.Large datasets: Tables that aren't cached don't consume memory for caching purposes. Puede habilitar el análisis interactivo de conjuntos de datos de gran tamaño que son demasiado grandes o costos para almacenar completamente en caché en la memoria.You can enable interactive analysis over large datasets that are too big or expensive to completely cache into memory. Puede elegir las tablas que merezca la pena almacenar en caché y las que no.You can choose which tables are worth caching, and which aren't.

  • Optimización de la actualización de datos: no es necesario actualizar las tablas que no se almacenan en caché.Data refresh optimization: Tables that aren't cached don't need to be refreshed. Puede reducir los tiempos de actualización mediante el almacenamiento en caché solo de los datos necesarios para cumplir los acuerdos de nivel de servicio y los requisitos del negocio.You can reduce refresh times by caching only the data that's necessary to meet your service level agreements and your business requirements.

  • Requisitos casi en tiempo real: las tablas con requisitos casi en tiempo real se pueden beneficiar de que no se almacenan en caché con el fin de reducir la latencia de los datos.Near-real time requirements: Tables with near-real time requirements might benefit from not being cached, to reduce data latency.

  • Escritura diferida: la escritura diferida permite que los usuarios profesionales exploren escenarios hipotéticos cambiando los valores de las celdas.Writeback: Writeback enables business users to explore what-if scenarios by changing cell values. Las aplicaciones personalizadas pueden aplicar cambios al origen de datos.Custom applications can apply changes to the data source. Las tablas que no se almacenan en caché pueden mostrar los cambios de inmediato, lo que permite analizar los efectos de manera instantánea.Tables that aren't cached can display changes immediately, which allows instant analysis of the effects.

La configuración del modo de almacenamiento de Power BI Desktop es una de tres características relacionadas:The storage mode setting in Power BI Desktop is one of three related features:

  • Modelos compuestos: esta característica permite que un informe tenga dos o varias conexiones de datos, incluidas conexiones DirectQuery o Importación, en cualquier combinación.Composite models: Allows a report to have two or more data connections, including DirectQuery connections or Import, in any combination. Para obtener más información, vea Modelos compuestos en Power BI Desktop.For more information, see Composite models in Power BI Desktop.

  • Relaciones de varios a varios: mediante el uso de modelos compuestos, puede establecer relaciones de varios a varios entre las tablas.Many-to-many relationships: With composite models, you can establish many-to-many relationships between tables. Las relaciones varios a varios eliminan los requisitos de valores únicos en tablas.Many-to-many relationships removes requirements for unique values in tables. También permite descartar las soluciones alternativas anteriores, como la presentación de nuevas tablas solo para establecer relaciones.It also removes prior workarounds, such as introducing new tables only to establish relationships. Para obtener más información, vea Relaciones de varios a varios en Power BI Desktop.For more information, see Many-to-many relationships in Power BI Desktop.

  • Modo de almacenamiento: ahora puede especificar los objetos visuales que requieren una consulta a los orígenes de datos back-end.Storage mode: You can now specify which visuals require a query to back-end data sources. Los objetos visuales que no requieran una consulta se importarán incluso aunque estén basados en DirectQuery.Visuals that don't require a query are imported even if they're based on DirectQuery. Esta característica permite mejorar el rendimiento y reducir la carga de back-end.This feature helps improve performance and reduce back-end load. Anteriormente, incluso los objetos visuales simples, como las segmentaciones, iniciaban consultas que se enviaban a los orígenes de back-end.Previously, even simple visuals, such as slicers, initiated queries that were sent to back-end sources. El modo de almacenamiento se describe más detalladamente en este artículo.Storage mode is described further in this article.

Uso de la propiedad de modo de almacenamientoUse the storage mode property

El modo de almacenamiento es una propiedad que puede establecer en cada tabla del modelo.Storage mode is a property that you can set on each table in your model. Para establecer el modo de almacenamiento, en el panel Campos, haga clic con el botón derecho en la tabla cuyas propiedades quiera establecer y, después, seleccione Propiedades.To set the storage mode, in the Fields pane, right-click the table whose properties you want to set, and then select Properties.

Comando Propiedades en el menú contextual

La propiedad actual se muestra en la lista desplegable Modo de almacenamiento, en el panel Propiedades de campo de la tabla.The current property is displayed in the Storage mode drop-down list in the table's Field properties pane. Puede ver el modo de almacenamiento actual o modificarlo ahí.You can view the current storage mode or modify it there.

Establecimiento del modo de almacenamiento de una tabla

Existen tres valores para el modo de almacenamiento:There are three values for storage mode:

  • Importación: cuando el valor se establece en Importación, las tablas importadas se almacenan en caché.Import: When the value is set to Import, imported tables are cached. Las consultas enviadas al conjunto de datos de Power BI que devuelven datos desde las tablas de importación solo se pueden satisfacer desde los datos en caché.Queries submitted to the Power BI dataset that return data from Import tables can be fulfilled only from cached data.

  • DirectQuery: con esta configuración, las tablas DirectQuery no se almacenan en caché.DirectQuery: With this setting, DirectQuery tables aren't cached. Las consultas que envíe al conjunto de datos de Power BI, por ejemplo, las consultas de expresiones de análisis de datos (DAX), y que devuelvan datos desde las tablas DirectQuery solo se podrán satisfacer mediante la ejecución de consultas a petición al origen de datos.Queries that you submit to the Power BI dataset - for example, Data Analysis Expressions (DAX) queries - and that return data from DirectQuery tables can be fulfilled only by executing on-demand queries to the data source. Las consultas que envíe al origen de datos usarán el lenguaje de la consulta para ese origen de datos (por ejemplo, SQL).Queries that you submit to the data source use the query language for that data source - for example, SQL.

  • Dual: las tablas duales pueden actuar como tablas almacenadas en caché o como no almacenadas en caché, en función del contexto de la consulta enviada al conjunto de datos de Power BI.Dual: Dual tables can act as either cached or not cached, depending on the context of the query that's submitted to the Power BI dataset. En algunos casos, puede satisfacer las consultas a partir de datos en caché.In some cases, you fulfill queries from cached data. Sin embargo, en otros casos puede hacerlo ejecutando una consulta a petición al origen de datos.In other cases, you fulfill queries by executing an on-demand query to the data source.

El hecho de cambiar una tabla a Importación es una operación irreversible.Changing a table to Import is an irreversible operation. Esta propiedad no se puede cambiar a DirectQuery o Dual.This property can't be changed back to either DirectQuery or Dual.

Nota

Puede usar el modo de almacenamiento Dual en Power BI Desktop y en el servicio Power BI.You can use Dual storage mode in Power BI Desktop and in the Power BI service.

Restricciones en las tablas de DirectQuery y las tablas dualesConstraints on DirectQuery and Dual tables

Las tablas duales tienen las mismas restricciones funcionales que las tablas de DirectQuery.Dual tables have the same functional constraints as DirectQuery tables. Estas restricciones pueden incluir transformaciones M limitadas y funciones DAX restringidas en las columnas calculadas.These constraints include limited M transformations and restricted DAX functions in calculated columns. Para obtener más información, vea Implicaciones de usar DirectQuery.For more information, see Implications of using DirectQuery.

Propagación de dualPropagation of Dual

Considere el modelo sencillo siguiente, donde todas las tablas provienen de un solo origen que admite la importación y DirectQuery.Consider the following simple model, where all the tables are from a single source that supports Import and DirectQuery.

Ejemplo de vista de relaciones para el modo de almacenamiento

Para empezar, supongamos que todas las tablas de este modelo son DirectQuery.Let’s say all tables in this model are DirectQuery to begin with. Si se cambia el modo de almacenamiento de la tabla SurveyResponse a Importación, aparecerá la siguiente ventana de advertencia:If we then change the storage mode of the SurveyResponse table to Import, the following warning window is displayed:

Ventana de advertencia del modo de almacenamiento

Las tablas dimensionales (Customer, Geography y Date) se pueden establecer en Dual para reducir el número de relaciones débiles en el conjunto de datos y mejorar el rendimiento.The dimension tables (Customer, Geography and Date) may be set to Dual to reduce the number of weak relationships in the dataset, and improve performance. Las relaciones débiles implican normalmente al menos una tabla de DirectQuery, donde no se puede insertar lógica de combinación en los sistemas de origen.Weak relationships normally involve at least one DirectQuery table where join logic cannot be pushed to the source systems. El hecho de que las tablas Dual puedan actuar como DirectQuery o importación ayuda a evitar esta situación.The fact that Dual tables can act as either DirectQuery or Import helps avoid this.

La lógica de propagación está diseñada para ayudar con los modelos que contienen muchas tablas.The propagation logic is designed to help with models that contain many tables. Supongamos que tiene un modelo con 50 tablas y solo se deben almacenar en caché ciertas tablas de hechos (transaccionales).Let’s say you have a model with 50 tables and only certain fact (transactional) tables need to be cached. La lógica de Power BI Desktop calcula el conjunto mínimo de tablas de dimensiones que se deben establecer en Dual para que no tenga que hacerlo el usuario.The logic in Power BI Desktop calculates the minimum set of dimension tables that must be set to Dual, so you don’t have to.

La lógica de propagación solo recorre en dirección al lado de uno de las relaciones de uno a varios.The propagation logic traverses only to the one side of 1-to-many relationships.

Ejemplo de uso del modo de almacenamientoStorage mode usage example

Continuemos con el ejemplo de la sección anterior e imaginemos que se aplica la configuración de la propiedad de modo de almacenamiento siguiente:Let's continue with the example from the previous section, and imagine applying the following storage mode property settings:

TablaTable Modo de almacenamientoStorage mode
SalesSales DirectQueryDirectQuery
SurveyResponseSurveyResponse ImportarImport
DateDate DualDual
CustomerCustomer DualDual
GeographyGeography DualDual

Al establecer estas configuraciones de la propiedad de modo de almacenamiento, se producen los comportamientos siguientes, suponiendo que la tabla Sales (Ventas) tenga un volumen de datos considerable.Setting these storage mode properties results in the following behaviors, assuming that the Sales table has significant data volume.

  • Power BI Desktop almacena en caché las tablas de dimensiones (Date [Fecha], Customer [Cliente] y Geography [Geografía]), por lo que los tiempos de carga de informes iniciales deben ser rápidos al recuperar los valores de segmentación que se van a mostrar.Power BI Desktop caches dimension tables - Date, Customer, and Geography - so load times of initial reports should be fast when they retrieve slicer values to display.

  • Si la tabla Sales (Ventas) no se almacena en caché, Power BI Desktop proporciona los siguientes resultados:By not caching the Sales table, Power BI Desktop provides the following results:

    • Se mejoran los tiempos de actualización de los datos y se reduce el consumo de memoria.Data-refresh times are improved, and memory consumption is reduced.
    • Las consultas de informes que se basan en la tabla Sales (Ventas) se ejecutan en el modo DirectQuery.Report queries that are based on the Sales table run in DirectQuery mode. Estas consultas pueden tardar más tiempo, pero están más cerca de realizarse en tiempo real, ya que no se ha introducido ninguna latencia de almacenamiento en caché.These queries might take longer but are closer to real-time because no caching latency is introduced.
  • Las consultas de informes que se basan en la tabla SurveyResponse se devuelven desde la caché en memoria y, por tanto, suelen ser relativamente rápidas.Report queries that are based on the SurveyResponse table are returned from the in-memory cache and, therefore, should be relatively fast.

Consultas que aciertan o pierden la memoria cachéQueries that hit or miss the cache

Mediante la conexión de SQL Profiler con el puerto de diagnóstico de Power BI Desktop, puede ver las consultas que alcanzan o no la caché en memoria mediante un seguimiento basado en los eventos siguientes:By connecting SQL Profiler to the diagnostics port for Power BI Desktop, you can see which queries hit or miss the in-memory cache by performing a trace that's based on the following events:

  • Eventos de consultas\Inicio de consultaQueries Events\Query Begin
  • Procesamiento de consulta\Inicio de consulta de Vertipaq SEQuery Processing\Vertipaq SE Query Begin
  • Procesamiento de consulta\Inicio de consulta DirectQueryQuery Processing\DirectQuery Begin

Para cada evento de Inicio de consulta, compruebe otros eventos con el mismo ActivityID.For each Query Begin event, check other events with the same ActivityID. Por ejemplo, si no hay ningún evento Inicio de consulta DirectQuery, pero sí un evento Inicio de consulta de Vertipaq SE, significa que la consulta se ha respondido desde la caché.For example, if there is no DirectQuery Begin event, but there is a Vertipaq SE Query Begin event, the query is answered from the cache.

Las consultas que hacen referencia a las tablas del modo Dual devuelven datos de la caché si es posible; de lo contrario, se revierten a DirectQuery.Queries that refer to Dual mode tables return data from the cache, if possible; otherwise, they revert to DirectQuery.

Siguiendo con el ejemplo anterior, la consulta siguiente solo hace referencia a una columna de la tabla Date (Fecha) que está en el modo Dual.Continuing the previous example, the following query refers only to a column from the Date table, which is in Dual mode. Por tanto, la consulta debe alcanzar la caché.Therefore, the query should hit the cache.

Script para el diagnóstico del modo de almacenamiento

La consulta siguiente solo hace referencia a una columna de la tabla Sales (Ventas), que está en el modo DirectQuery.The following query refers only to a column from the Sales table, which is in DirectQuery mode. Por tanto, no debe acertar la caché.Therefore, it should not hit the cache.

Script para el diagnóstico del modo de almacenamiento

La consulta siguiente resulta interesante porque combina ambas columnas.The following query is interesting because it combines both columns. Esta consulta no alcanza la caché.This query doesn't hit the cache. Inicialmente podría esperar que recuperase los valores de CalendarYear desde la caché y los valores de SalesAmount desde el origen y, luego, combinase los resultados, pero este enfoque sería menos eficaz que enviar la operación SUM/GROUP BY al sistema de origen.You might initially expect it to retrieve CalendarYear values from the cache and SalesAmount values from the source and then combine the results, but this approach is less efficient than submitting the SUM/GROUP BY operation to the source system. Si la operación se transfiere al origen, la cantidad de filas devueltas probablemente será mucho menor.If the operation is pushed down to the source, the number of rows returned will likely be far less.

Script para el diagnóstico del modo de almacenamiento

Nota

Este comportamiento es distinto del que se describe en las relaciones de varios a varios en Power BI Desktop al combinar tablas en caché y no en caché.This behavior is different from many-to-many relationships in Power BI Desktop when cached and non-cached tables are combined.

Las cachés se deben mantener sincronizadasCaches should be kept in sync

Las consultas que aparecen en la sección anterior muestran que las tablas de tipo Dual a veces alcanzan la caché y, otras, no.The queries displayed in the previous section show that Dual tables sometimes hit the cache and sometimes don't. Como resultado, si la caché está obsoleta, se pueden devolver distintos valores.As a result, if the cache is out of date, different values can be returned. La ejecución de consultas no intentará enmascarar los problemas de datos mediante, por ejemplo, el filtrado de los resultados de DirectQuery para coincidir con los valores en caché.Query execution will not attempt to mask data issues by, for example, filtering DirectQuery results to match cached values. Es su responsabilidad conocer los flujos de datos y debe diseñar en consecuencia.It is your responsibility to know your data flows, and you should design accordingly. En caso de ser necesario, hay técnicas establecidas para controlar este tipo de casos en el origen.There are established techniques to handle such cases at the source, if necessary.

El modo de almacenamiento dual es una optimización del rendimiento.The Dual storage mode is a performance optimization. Solo se debe usar de maneras que no pongan en peligro la capacidad de cumplir con los requisitos empresariales.It should be used only in ways that don't compromise the ability to meet business requirements. Para el comportamiento alternativo, considere usar las técnicas que se describen en el artículo Relaciones de varios a varios en Power BI Desktop.For alternative behavior, consider using the techniques described in the Many-to-many relationships in Power BI Desktop article.

Vista de datosData view

Si al menos una tabla del conjunto de datos tiene el modo de almacenamiento establecido en Importación o en Dual, aparece la pestaña Vista de datos.If at least one table in the dataset has its storage mode set to either Import or Dual, the Data view tab is displayed.

Vista de datos en Power BI Desktop

Cuando se seleccionan en Vista de datos, las tablas Dual e Importación muestran los datos en caché.When they are selected in Data view, the Dual and Import tables show cached data. Las tablas DirectQuery no muestran datos, y se muestra un mensaje en el que se establece que no se pueden mostrar las tablas DirectQuery.DirectQuery tables don't show data, and a message is displayed that states that DirectQuery tables cannot be shown.

Limitaciones y consideracionesLimitations and considerations

Existen algunas limitaciones para esta versión del modo de almacenamiento y su correlación con los modelos compuestos.There are a few limitations for this release of storage mode and its correlation with composite models.

Los orígenes de Live Connect (multidimensionales) siguientes no se pueden usar con los modelos compuestos:The following Live Connect (multi-dimensional) sources cannot be used with composite models:

  • SAP HANASAP HANA
  • SAP Business WarehouseSAP Business Warehouse
  • SQL Server Analysis ServicesSQL Server Analysis Services
  • Conjuntos de datos de Power BIPower BI datasets
  • Azure Analysis ServicesAzure Analysis Services

Al conectarse a esos orígenes multidimensionales mediante DirectQuery, no se puede conectar a otro origen de DirectQuery ni combinar con los datos importados.When you connect to those multi-dimensional sources by using DirectQuery, you can neither connect to another DirectQuery source nor combine it with imported data.

Las limitaciones existentes del uso de DirectQuery siguen aplicándose cuando se usan los modelos compuestos.The existing limitations of using DirectQuery still apply when you use composite models. Muchas de esas limitaciones son ahora por tabla, en función del modo de almacenamiento de la tabla.Many of those limitations are now per table, depending upon the storage mode of the table. Por ejemplo, una columna calculada en una tabla importada puede hacer referencia a otras tablas, pero una columna calculada en una tabla de DirectQuery sigue restringida para hacer referencia solo a columnas de la misma tabla.For example, a calculated column on an imported table can refer to other tables, but a calculated column on a DirectQuery table is still restricted to refer only to columns on the same table. Otras limitaciones se aplican al modelo como un todo, si cualquiera de las tablas dentro del modelo son DirectQuery.Other limitations apply to the model as a whole, if any of the tables within the model are DirectQuery. Por ejemplo, las características Conclusiones rápidas y Preguntas y respuestas no están disponibles en un modelo si cualquiera de las tablas dentro del mismo tiene un modo de almacenamiento de DirectQuery.For example, the QuickInsights and Q&A features are not available on a model if any of the tables within it has a storage mode of DirectQuery.

Pasos siguientesNext steps

Para obtener más información sobre los modelos compuestos y DirectQuery, consulte los siguientes artículos:For more information about composite models and DirectQuery, see the following articles: