Modo de armazenamento no Power BI DesktopStorage mode in Power BI Desktop

No Microsoft Power BI Desktop, é possível especificar o modo de armazenamento das tabelas.In Microsoft Power BI Desktop, you can specify the storage mode of tables. O Modo de armazenamento permite controlar se o Power BI Desktop armazenamento dados da tabela em cache na memória para relatórios.Storage mode lets you control whether Power BI Desktop caches table data in-memory for reports.

Modo de armazenamento no Power BI Desktop

Definir o modo de armazenamento oferece muitas vantagens.Setting the storage mode provides many advantages. Você pode definir o modo de armazenamento para cada tabela individualmente no seu modelo.You can set storage mode for each table individually in your model. Essa ação habilita um único conjunto de dados, que fornece os seguintes benefícios:This action enables a single dataset, which provides the following benefits:

  • Desempenho de consulta: conforme os usuários interagem com os visuais nos relatórios do Power BI, as consultas DAX (Data Analysis Expressions) são enviadas para o conjunto de dados.Query performance: As users interact with visuals in Power BI reports, Data Analysis Expressions (DAX) queries are submitted to the dataset. O armazenamento de dados em cache na memória com a configuração adequada do modo de armazenamento pode melhorar o desempenho da consulta e a interatividade dos relatórios.Caching data into memory by properly setting the storage mode can boost the query performance and interactivity of your reports.

  • Grandes conjuntos de dados: tabelas que não estejam armazenadas em cache não consomem memória para fins de cache.Large datasets: Tables that aren't cached don't consume memory for caching purposes. Você pode habilitar a análise interativa de amplos conjuntos de dados que são muito grandes ou caros para armazenar completamente em cache na memória.You can enable interactive analysis over large datasets that are too big or expensive to completely cache into memory. É possível escolher quais tabelas valem a pena ser armazenadas em cache e quais não valem.You can choose which tables are worth caching, and which aren't.

  • Otimização de atualização de dados: tabelas que não estejam armazenadas em cache não precisam ser atualizadas.Data refresh optimization: Tables that aren't cached don't need to be refreshed. É possível reduzir os períodos de atualização armazenando em cache apenas os dados necessários para atender aos contratos de nível de serviço e os requisitos empresariais.You can reduce refresh times by caching only the data that's necessary to meet your service level agreements and your business requirements.

  • Requisitos quase em tempo real: as tabelas com requisitos quase em tempo real podem se beneficiar de não serem armazenadas em cache, para reduzir a latência de dados.Near-real time requirements: Tables with near-real time requirements might benefit from not being cached, to reduce data latency.

  • Write-back: o write-back permite que os usuários empresariais explorem cenários hipotéticos alterando os valores das células.Writeback: Writeback enables business users to explore what-if scenarios by changing cell values. Aplicativos personalizados podem aplicar as alterações à fonte de dados.Custom applications can apply changes to the data source. As tabelas não armazenadas em cache podem exibir as alterações de imediato, o que permite análise instantânea dos efeitos.Tables that aren't cached can display changes immediately, which allows instant analysis of the effects.

A definição do modo de armazenamento no Power BI Desktop é um dos três recursos relacionados:The storage mode setting in Power BI Desktop is one of three related features:

  • Modelos compostos: permite que um relatório tenha duas ou mais conexões de dados, incluindo conexões DirectQuery ou Importação, em qualquer combinação.Composite models: Allows a report to have two or more data connections, including DirectQuery connections or Import, in any combination. Para ver mais informações, confira Modelos compostos no Power BI Desktop.For more information, see Composite models in Power BI Desktop.

  • Relações muitos-para-muitos: com modelos compostos, você pode estabelecer relações muitos-para-muitos entre as tabelas.Many-to-many relationships: With composite models, you can establish many-to-many relationships between tables. Relações muitos-para-muitos removem os requisitos para valores exclusivos nas tabelas.Many-to-many relationships removes requirements for unique values in tables. Elas também removem as soluções alternativas anteriores, como introduzir novas tabelas somente para estabelecer relações.It also removes prior workarounds, such as introducing new tables only to establish relationships. Para mais informações, confira Relações muitos para muitos no Power BI Desktop.For more information, see Many-to-many relationships in Power BI Desktop.

  • Modo de armazenamento: agora você pode especificar quais visuais exigem uma consulta para fontes de dados de back-end.Storage mode: You can now specify which visuals require a query to back-end data sources. Visuais que não exigem uma consulta serão importados, mesmo se forem baseados no DirectQuery.Visuals that don't require a query are imported even if they're based on DirectQuery. Esse recurso ajuda a melhorar o desempenho e reduzir a carga de back-end.This feature helps improve performance and reduce back-end load. Antes, mesmo visuais simples como as segmentações iniciavam consultas enviadas para fontes de back-end.Previously, even simple visuals, such as slicers, initiated queries that were sent to back-end sources. O modo de armazenamento é descrito em detalhes neste artigo.Storage mode is described further in this article.

Observação

Você pode ver o modo de armazenamento atual selecionando a exibição Modelo, selecionando a tabela de interesse e, na seção Avançado do painel Propriedades, exibir o valor Modo de armazenamento.You can see the current storage mode by selecting Model view, selecting the table of interest, and then in the Advanced section of the Properties pane, view the Storage mode value.

Usar a propriedade de modo de armazenamentoUse the storage mode property

O modo de armazenamento é uma propriedade que pode ser definida em cada tabela do modelo.Storage mode is a property that you can set on each table in your model. Para definir o modo de armazenamento ou exibir sua configuração atual, na exibição Modelo, selecione a tabela cujas propriedades deseja exibir ou definir e, em seguida, selecione o painel Propriedades, expanda a seção Avançado e expanda o menu suspenso Modo de armazenamento.To set the storage mode, or view its current setting, in Model view, select the table whose properties you want to view or set, then select Properties pane and then expand the Advanced section, and expand the Storage mode drop down.

O comando Propriedades no menu contextual

Há três valores para o modo de armazenamento:There are three values for storage mode:

  • Importação: quando o valor é definido para Importação, as tabelas importadas são armazenadas em cache.Import: When the value is set to Import, imported tables are cached. As consultas enviadas para o conjunto de dados do Power BI que retornam dados das tabelas de Importação só podem ser atendidas por dados armazenados em cache.Queries submitted to the Power BI dataset that return data from Import tables can be fulfilled only from cached data.

  • DirectQuery: com essa configuração, as tabelas DirectQuery não são armazenadas em cache.DirectQuery: With this setting, DirectQuery tables aren't cached. As consultas enviadas para o conjunto de dados do Power BI – por exemplo, as consultas DAX (Data Analysis Expressions)– e que retornam dados das tabelas do DirectQuery só podem ser atendidas por meio da execução de consultas sob demanda para a fonte de dados.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. As consultas enviadas à fonte de dados usam a linguagem de consulta para essa fonte de dados – por exemplo, SQL.Queries that you submit to the data source use the query language for that data source - for example, SQL.

  • Dupla: as tabelas duplas podem se comportar como armazenadas em cache ou não, dependendo do contexto da consulta enviada para o conjunto de dados do 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. Em alguns casos, você atende às consultas de dados armazenados em cache.In some cases, you fulfill queries from cached data. Em outros casos, você atende às consultas executando uma consulta sob demanda para a fonte de dados.In other cases, you fulfill queries by executing an on-demand query to the data source.

Alterar uma tabela para Importação é um operação irreversível.Changing a table to Import is an irreversible operation. Essa propriedade não pode ser alterada de volta para DirectQuery ou Dupla.This property can't be changed back to either DirectQuery or Dual.

Observação

Você pode usar o modo de armazenamento Duplo no Power BI Desktop e no serviço do Power BI.You can use Dual storage mode in Power BI Desktop and in the Power BI service.

Restrições em tabelas duplas e do DirectQueryConstraints on DirectQuery and Dual tables

As tabelas duplas têm as mesmas restrições de função que as tabelas DirectQuery.Dual tables have the same functional constraints as DirectQuery tables. Essas restrições incluem transformações em M limitadas e as funções restritas do DAX em colunas calculadas.These constraints include limited M transformations and restricted DAX functions in calculated columns. Para mais informações, confira Implicações do uso do DirectQuery.For more information, see Implications of using DirectQuery.

Propagação de DuplaPropagation of Dual

Considere o seguinte modelo simples, em que todas as tabelas são de uma única fonte que dá suporte à Importação e DirectQuery.Consider the following simple model, where all the tables are from a single source that supports Import and DirectQuery.

Exemplo da exibição de relações para o modo de armazenamento

Digamos que, de início, todas as tabelas nesse modelo sejam do tipo DirectQuery.Let’s say all tables in this model are DirectQuery to begin with. Se alterarmos, então, o modo de armazenamento da tabela SurveyResponse para Importação, a seguinte janela de aviso aparecerá:If we then change the storage mode of the SurveyResponse table to Import, the following warning window is displayed:

Janela de aviso do modo de armazenamento

As tabelas de dimensão (Customer, Geography e Date) podem ser definidas como Dupla para reduzir o número de relações fracas no conjunto de dados e melhorar o desempenho.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. Normalmente, as relações fracas envolvem pelo menos uma tabela do DirectQuery, na qual a lógica de associação não pode ser enviada para os sistemas de origem.Weak relationships normally involve at least one DirectQuery table where join logic cannot be pushed to the source systems. O fato de que as tabelas Duplas podem agir como DirectQuery ou Importação ajuda a evitar isso.The fact that Dual tables can act as either DirectQuery or Import helps avoid this.

A lógica de propagação é projetada para ajudar com os modelos que contêm muitas tabelas.The propagation logic is designed to help with models that contain many tables. Digamos que você tenha um modelo com 50 tabelas e que apenas determinadas tabelas de fatos (transacionais) precisem ser armazenadas em cache.Let’s say you have a model with 50 tables and only certain fact (transactional) tables need to be cached. A lógica no Power BI Desktop descobre o conjunto mínimo de tabelas de dimensões que precisa ser definido como Duplo para que você não precise fazer isso.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.

A lógica de propagação percorre somente em direção a um dos lados das relações um para muitos.The propagation logic traverses only to the one side of 1-to-many relationships.

Exemplo de uso do modo de armazenamentoStorage mode usage example

Continuemos com o exemplo da seção anterior e imaginemos a aplicação das seguintes configurações de propriedade do modo de armazenamento:Let's continue with the example from the previous section, and imagine applying the following storage mode property settings:

TabelaTable Modo de armazenamentoStorage mode
VendasSales DirectQueryDirectQuery
SurveyResponseSurveyResponse ImportarImport
DataDate DuplaDual
ClienteCustomer DuplaDual
GeografiaGeography DuplaDual

Definir essas propriedades do modo de armazenamento resultará nos comportamentos a seguir, supondo que a tabela Vendas tenha um volume de dados significativos.Setting these storage mode properties results in the following behaviors, assuming that the Sales table has significant data volume.

  • O Power BI Desktop armazena as tabelas de dimensões em cache – Data, Cliente e Geografia – portanto, os tempos de carregamento iniciais do relatório precisam ser rápidos ao recuperar valores de segmentação a ser exibidos.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.

  • Se a tabela Vendas não for armazenada em cache, o Power BI Desktop fornece os seguintes resultados:By not caching the Sales table, Power BI Desktop provides the following results:

    • Os tempos de atualização de dados são aprimorados e o consumo de memória é reduzido.Data-refresh times are improved, and memory consumption is reduced.
    • Consultas de relatório que se baseiam na tabela Vendas são executados no modo DirectQuery.Report queries that are based on the Sales table run in DirectQuery mode. Essas consultas podem levar mais tempo, mas são mais próximas do tempo real, pois nenhuma latência de cache é introduzida.These queries might take longer but are closer to real-time because no caching latency is introduced.
  • As consultas de relatório com base na tabela SurveyResponse são retornadas do cache na memória e, portanto, precisam 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 acertam ou erram o cacheQueries that hit or miss the cache

A conexão do SQL Profiler com a porta de diagnóstico do Power BI Desktop mostra quais consultas acertam ou erram o cache na memória executando um rastreamento com base nos eventos a seguir: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\Início da ConsultaQueries Events\Query Begin
  • Processamento de Consulta\Início da Consulta Vertipaq SEQuery Processing\Vertipaq SE Query Begin
  • Processamento de Consulta\Início de DirectQueryQuery Processing\DirectQuery Begin

Para todo evento Início da Consulta, verifique outros eventos com a mesma ActivityID.For each Query Begin event, check other events with the same ActivityID. Por exemplo, se não houver nenhum evento Início de DirectQuery, mas houver um evento Início da Consulta Vertipaq SE, a consulta será atendida pelo cache.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.

As consultas que fizerem referência às tabelas do modo Duplo retornarão os dados do cache, se possível; caso contrário, serão revertidas para DirectQuery.Queries that refer to Dual mode tables return data from the cache, if possible; otherwise, they revert to DirectQuery.

Seguindo com o exemplo anterior, a consulta a seguir se refere apenas a uma coluna da tabela Data, que está no modo Duplo.Continuing the previous example, the following query refers only to a column from the Date table, which is in Dual mode. Portanto, a consulta precisa ter uma ocorrência no cache.Therefore, the query should hit the cache.

Script para diagnóstico do modo de armazenamento

A consulta a seguir se refere apenas a uma coluna da tabela Vendas, que está no modo DirectQuery.The following query refers only to a column from the Sales table, which is in DirectQuery mode. Portanto, ela não deve ter ocorrência no cache.Therefore, it should not hit the cache.

Script para diagnóstico do modo de armazenamento

A consulta a seguir é interessante porque combina as duas colunas.The following query is interesting because it combines both columns. Esta consulta não tem ocorrência no cache.This query doesn't hit the cache. Inicialmente, você pode esperar que ela recupere os valores CalendarYear do cache e os valores SalesAmount da fonte e depois combine os resultados, mas isso seria uma abordagem menos eficiente do que enviar a operação SUM/GROUP BY para o sistema de origem.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. Se a operação for propagada para a fonte, o número de linhas retornadas provavelmente será muito menor.If the operation is pushed down to the source, the number of rows returned will likely be far less.

Script para diagnóstico do modo de armazenamento

Observação

Esse comportamento é diferente das relações muitos para muitos no Power BI Desktop ao combinar tabelas armazenadas e não armazenadas em cache.This behavior is different from many-to-many relationships in Power BI Desktop when cached and non-cached tables are combined.

Os caches devem ser mantidos em sincroniaCaches should be kept in sync

As consultas exibidas na seção anterior mostram que as tabelas Duplas às vezes acertam o cache e outras vezes não.The queries displayed in the previous section show that Dual tables sometimes hit the cache and sometimes don't. Como resultado, se o cache estiver desatualizado, diferentes valores poderão ser retornados.As a result, if the cache is out of date, different values can be returned. A execução da consulta não tentará ocultar os problemas de dados, filtrando, por exemplo, os resultados de DirectQuery para coincidir com os valores armazenados em cache.Query execution will not attempt to mask data issues by, for example, filtering DirectQuery results to match cached values. É sua responsabilidade conhecer seus fluxos de dados, e você deve projetar de acordo com isso.It is your responsibility to know your data flows, and you should design accordingly. Existem técnicas estabelecidas para lidar com tais casos na origem, se necessário.There are established techniques to handle such cases at the source, if necessary.

O modo de armazenamento Duplo é uma otimização de desempenho.The Dual storage mode is a performance optimization. Ele só deve ser usado de maneira a não comprometer a capacidade de atender aos requisitos empresariais.It should be used only in ways that don't compromise the ability to meet business requirements. Para um comportamento alternativo, considere o uso das técnicas descritas no artigo Relações muitos para muitos no Power BI Desktop.For alternative behavior, consider using the techniques described in the Many-to-many relationships in Power BI Desktop article.

Exibição de dadosData view

Se pelo menos uma tabela no conjunto de dados tiver o modo de armazenamento definido como Importação ou Duplo, a guia Exibição de dados será exibida.If at least one table in the dataset has its storage mode set to either Import or Dual, the Data view tab is displayed.

Exibição de dados no Power BI Desktop

Quando selecionadas em Exibição de dados, as tabelas Dupla e Importação mostram os dados armazenados em cache.When they are selected in Data view, the Dual and Import tables show cached data. As tabelas DirectQuery não mostram dados, e uma mensagem é exibida informando que as tabelas DirectQuery não podem ser mostradas.DirectQuery tables don't show data, and a message is displayed that states that DirectQuery tables cannot be shown.

Limitações e consideraçõesLimitations and considerations

Existem algumas limitações para esta versão do modo de armazenamento e sua correlação com os modelos compostos.There are a few limitations for this release of storage mode and its correlation with composite models.

As seguintes fontes (multidimensionais) do Live Connect não podem ser usadas com os modelos compostos: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 dados do Power BIPower BI datasets
  • Azure Analysis ServicesAzure Analysis Services

Ao se conectar a essas fontes multidimensionais usando o DirectQuery, não é possível se conectar também a outra fonte de DirectQuery, nem combinar de dados 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.

As limitações existentes no uso do DirectQuery ainda se aplicam ao usar modelos compostos.The existing limitations of using DirectQuery still apply when you use composite models. Muitas dessas limitações agora são por tabela, dependendo do modo de armazenamento da tabela.Many of those limitations are now per table, depending upon the storage mode of the table. Por exemplo, uma coluna calculada em uma tabela importada pode se referir a outras tabelas, mas uma coluna calculada em uma tabela do DirectQuery ainda fica restrita para se referir apenas às colunas na mesma tabela.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. Outras limitações se aplicam ao modelo como um todo se quaisquer das tabelas no modelo forem DirectQuery.Other limitations apply to the model as a whole, if any of the tables within the model are DirectQuery. Por exemplo, os recursos QuickInsights e P e R não estarão disponíveis em um modelo se qualquer uma das tabelas nele tiver um modo de armazenamento do 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.

Próximas etapasNext steps

Para obter mais informações sobre modelos compostos e DirectQuery, confira os seguintes artigos:For more information about composite models and DirectQuery, see the following articles: