{"componentChunkName":"component---src-templates-blog-post-js","path":"/blog/power-bi-composite-models-datasets-compartilhados/","result":{"data":{"markdownRemark":{"frontmatter":{"title":"Power BI: composite models e o modelo de dados corporativo compartilhado","description":"Como estender datasets compartilhados no Power BI com composite models, DirectQuery to Power BI, chained datasets e o impacto em RLS, governança e performance.","date":"27 de agosto de 2026","thumbnail":null},"html":"<p>Times de dados maduros enfrentam uma tensão recorrente: de um lado, a área central de BI quer um modelo semântico único, governado e certificado; de outro, cada área de negócio quer estender esse modelo com suas próprias tabelas e medidas sem esperar a fila do time central. Os <strong>composite models</strong> com DirectQuery to Power BI (hoje chamado de semantic model no Fabric) foram desenhados exatamente para essa fricção — mas usá-los sem entender as implicações de RLS, performance e governança costuma criar problemas silenciosos em produção.</p>\n<p><strong>O que muda com DirectQuery to Power BI</strong></p>\n<p>Até a chegada do recurso, quem publicava um dataset compartilhado (shared dataset) tinha duas opções ruins para estendê-lo: reconstruir todo o modelo do zero em cada relatório, duplicando lógica, ou viver com um Live Connection puro, no qual você não pode adicionar nenhuma tabela ou coluna local. O composite model quebra esse dilema. Ele permite que um relatório mantenha a conexão viva ao dataset corporativo — herdando medidas, relacionamentos e RLS — e, ao mesmo tempo, adicione novas fontes locais (Import ou outro DirectQuery) no mesmo modelo.</p>\n<p>Na prática, isso habilita três padrões:</p>\n<ol>\n<li><strong>Estender um modelo certificado</strong> — a área de vendas conecta ao semantic model corporativo e adiciona uma tabela de metas em Import, criando medidas de atingimento que só fazem sentido para ela.</li>\n<li><strong>Combinar dois modelos governados</strong> — juntar o modelo financeiro e o modelo comercial num relatório executivo sem recriar nenhum dos dois.</li>\n<li><strong>Chained datasets</strong> — publicar esse modelo estendido como um novo dataset, que por sua vez pode ser consumido por outros. É poderoso e perigoso na mesma medida.</li>\n</ol>\n<p><strong>RLS não é automático — e essa é a maior armadilha</strong></p>\n<p>O ponto mais mal compreendido: a Row-Level Security do dataset de origem continua sendo aplicada sobre as tabelas daquele dataset, avaliada com a identidade de quem abre o relatório. Isso é ótimo — o modelo central mantém o controle. Mas as tabelas locais que você adicionou <strong>não herdam</strong> essa RLS. Se você adiciona uma tabela de metas em Import e a relaciona com a dimensão de vendedor do modelo central, a filtragem por RLS só se propaga na direção do relacionamento; onde ela não chega, o dado local fica exposto.</p>\n<p>Além disso, o autor do composite model precisa ter, no mínimo, permissão de Build sobre o dataset de origem, e as credenciais usadas para propagar a identidade do usuário exigem Single Sign-On configurado corretamente. Em cenários com chained datasets, a cadeia de RLS pode ficar difícil de auditar — vale documentar explicitamente qual camada aplica qual filtro de segurança.</p>\n<p><strong>Performance: cada visual pode virar várias consultas</strong></p>\n<p>Como parte do modelo é DirectQuery ao dataset remoto, cada interação do usuário pode disparar consultas ao motor de origem. Um visual que cruza uma medida do modelo central com uma dimensão local mal modelada gera <em>fan-out</em> de queries e latência perceptível. Recomendações concretas:</p>\n<ul>\n<li>Prefira <strong>relacionamentos em cardinalidade correta</strong> (evite muitos-para-muitos desnecessários entre a tabela local e o modelo remoto).</li>\n<li>Mantenha em Import as tabelas pequenas e de baixa volatilidade (calendário, metas, mapeamentos), deixando o volume no dataset remoto.</li>\n<li>Cuidado com medidas que forçam materialização cruzada entre as duas fontes — teste com o Performance Analyzer e o DAX Studio antes de publicar.</li>\n<li>Evite empilhar chained datasets em mais de um ou dois níveis: cada elo adiciona latência e superfície de falha.</li>\n</ul>\n<p><strong>Governança: liberdade com trilha de auditoria</strong></p>\n<p>O risco organizacional do composite model é o de recriar o caos de planilhas em nova roupagem — dezenas de modelos estendidos, cada um com sua própria lógica de negócio divergindo do modelo certificado. Para evitar isso:</p>\n<ul>\n<li>Certifique (endorse) apenas o semantic model central e trate os modelos estendidos como <em>promoted</em>, não <em>certified</em>.</li>\n<li>Use o <strong>CoE / lineage view</strong> do Power BI para enxergar quem depende de qual dataset e quebrar cadeias inesperadas.</li>\n<li>Defina por política quais áreas podem publicar chained datasets e quais só podem consumir.</li>\n<li>No Microsoft Fabric, aproveite a integração com o OneLake e o Direct Lake para reduzir a necessidade de cópias, mas lembre-se de que Direct Lake e composite model têm restrições de coexistência que mudam a cada release — valide na documentação vigente.</li>\n</ul>\n<p><strong>Quando usar e quando não usar</strong></p>\n<p>Use composite models quando existir um modelo corporativo confiável e áreas que precisam estendê-lo de forma controlada, com autonomia sem duplicar a base. Não use como atalho para \"colar\" fontes desconexas sem modelagem — nesse caso, um modelo Import bem desenhado costuma ser mais simples e performático. E jamais trate chained datasets como solução permanente para suprir a lentidão do time central: isso resolve o sintoma e agrava a dívida de governança.</p>\n<p>Estruturar essa camada semântica compartilhada — com RLS coerente, endossos corretos e monitoramento de linhagem — é onde a maturidade de dados realmente aparece. Se sua empresa está escalando o Power BI e quer transformar datasets soltos em um modelo corporativo governado, a Dynamic Soluções ajuda a desenhar essa arquitetura e a manter a governança viva com nossos planos de suporte contínuo.</p>\n<p>Mature data teams keep running into the same tension: the central BI team wants a single, governed, certified semantic model, while each business area wants to extend that model with its own tables and measures without waiting in the central team's queue. <strong>Composite models</strong> with DirectQuery to Power BI (now called a semantic model in Fabric) were designed for exactly this friction — but using them without understanding the implications for RLS, performance, and governance tends to create silent problems in production.</p>\n<p><strong>What changes with DirectQuery to Power BI</strong></p>\n<p>Before this capability arrived, anyone publishing a shared dataset had two bad options to extend it: rebuild the entire model from scratch in every report, duplicating logic, or live with a pure Live Connection, where you can't add a single local table or column. The composite model breaks that dilemma. It lets a report keep a live connection to the corporate dataset — inheriting measures, relationships, and RLS — while also adding new local sources (Import or another DirectQuery) within the same model.</p>\n<p>In practice, this enables three patterns:</p>\n<ol>\n<li><strong>Extend a certified model</strong> — the sales area connects to the corporate semantic model and adds a targets table in Import, creating attainment measures that only make sense for them.</li>\n<li><strong>Combine two governed models</strong> — merge the finance model and the commercial model into an executive report without recreating either.</li>\n<li><strong>Chained datasets</strong> — publish that extended model as a new dataset, which in turn can be consumed by others. This is as powerful as it is dangerous.</li>\n</ol>\n<p><strong>RLS is not automatic — and that's the biggest trap</strong></p>\n<p>The most misunderstood point: the Row-Level Security of the source dataset keeps being applied over that dataset's tables, evaluated with the identity of whoever opens the report. That's great — the central model keeps control. But the local tables you added <strong>do not inherit</strong> that RLS. If you add a targets table in Import and relate it to the central model's salesperson dimension, RLS filtering only propagates along the relationship direction; wherever it doesn't reach, the local data is exposed.</p>\n<p>Besides that, the composite model author needs at least Build permission on the source dataset, and the credentials used to propagate the user's identity require Single Sign-On configured correctly. In chained-dataset scenarios, the RLS chain can become hard to audit — it's worth explicitly documenting which layer applies which security filter.</p>\n<p><strong>Performance: each visual can turn into several queries</strong></p>\n<p>Since part of the model is DirectQuery to the remote dataset, every user interaction can fire queries at the source engine. A visual that crosses a central-model measure with a poorly modeled local dimension generates query fan-out and noticeable latency. Concrete recommendations:</p>\n<ul>\n<li>Prefer <strong>correct-cardinality relationships</strong> (avoid unnecessary many-to-many between the local table and the remote model).</li>\n<li>Keep small, low-volatility tables in Import (calendar, targets, mappings), leaving the volume in the remote dataset.</li>\n<li>Watch out for measures that force cross-materialization between the two sources — test with Performance Analyzer and DAX Studio before publishing.</li>\n<li>Avoid stacking chained datasets more than one or two levels deep: each link adds latency and failure surface.</li>\n</ul>\n<p><strong>Governance: freedom with an audit trail</strong></p>\n<p>The organizational risk of composite models is recreating spreadsheet chaos in new clothing — dozens of extended models, each with its own business logic diverging from the certified model. To avoid this:</p>\n<ul>\n<li>Certify (endorse) only the central semantic model and treat extended models as <em>promoted</em>, not <em>certified</em>.</li>\n<li>Use Power BI's <strong>CoE / lineage view</strong> to see who depends on which dataset and to break unexpected chains.</li>\n<li>Define by policy which areas may publish chained datasets and which may only consume.</li>\n<li>In Microsoft Fabric, take advantage of OneLake and Direct Lake integration to reduce the need for copies, but remember that Direct Lake and composite models have coexistence restrictions that change with each release — validate against the current documentation.</li>\n</ul>\n<p><strong>When to use and when not to use</strong></p>\n<p>Use composite models when there's a trustworthy corporate model and areas that need to extend it in a controlled way, with autonomy but without duplicating the base. Don't use them as a shortcut to \"glue\" disconnected sources together without modeling — in that case, a well-designed Import model is usually simpler and faster. And never treat chained datasets as a permanent workaround for a slow central team: that fixes the symptom and worsens the governance debt.</p>\n<p>Structuring this shared semantic layer — with coherent RLS, correct endorsements, and lineage monitoring — is where data maturity really shows. If your company is scaling Power BI and wants to turn loose datasets into a governed corporate model, Dynamic Soluções can help design that architecture and keep governance alive through our ongoing support plans.</p>"}},"pageContext":{"slug":"/blog/power-bi-composite-models-datasets-compartilhados/","previousPost":null,"nextPost":{"frontmatter":{"title":"Dataverse: quando usar virtual tables em vez de integração"},"fields":{"slug":"/blog/dataverse-virtual-tables-integracao-dados-externos/"}}}},"staticQueryHashes":["2269431855"]}