O dilema clássico do Power BI: usar Import para ter performance máxima, mas os dados ficam desatualizados entre as atualizações. Ou usar DirectQuery para dados em tempo real, mas sofrer com lentidão em modelos complexos. Composite Models resolvem isso combinando os dois modos no mesmo modelo.

O que são Composite Models

Composite Models permitem que diferentes tabelas do mesmo modelo usem modos de armazenamento diferentes:

O cenário clássico de uso

Tabelas de dimensão (Clientes, Produtos, Regiões, Calendário) mudam raramente — coloque em Import. Tabelas de fatos transacionais que precisam de dados em tempo real (pedidos do dia, estoque atual) — coloque em DirectQuery. O modelo usa as dimensões em cache (rápidas) para filtrar a consulta DirectQuery (em tempo real).

Configurando o modo de armazenamento

Na visão Modelo, clique com o botão direito em uma tabela → PropriedadesModo de armazenamento. Selecione Import, DirectQuery ou Dual.

Quando você muda uma tabela de Import para DirectQuery, o Power BI avisa que essa operação pode não ser reversível (dados em cache são descartados).

Aggregations: DirectQuery com cache de agregados

Aggregations são uma extensão de Composite Models que cria uma tabela de resumo (Import) sobre uma tabela de detalhes (DirectQuery). Consultas que se satisfazem com o resumo usam a tabela Import; consultas que precisam de granularidade vão ao DirectQuery.

Exemplo: tabela de fatos com 500 milhões de linhas em DirectQuery + tabela de agregado mensal por produto com 50.000 linhas em Import. 95% das consultas do dashboard usarão o agregado; apenas drill-downs vão ao DirectQuery.

Limitações de Composite Models

Perguntas frequentes

Composite Models requerem Power BI Premium?

Não para criar e usar localmente no Desktop. Para publicar no Service e usar com atualização automática, algumas combinações de fontes requerem Premium. Verifique a documentação da Microsoft para sua combinação específica de fontes.

Posso conectar a dois bancos SQL Server diferentes no mesmo Composite Model?

Sim. Esse é um dos casos de uso mais comuns — unir dados de diferentes bancos ou servidores sem precisar de um ETL intermediário.