Eventos
Campeonato Mundial de Visualização de Dados do Power BI
14 de fev., 16 - 31 de mar., 16
Com 4 chances de participar, você pode ganhar um pacote de conferência e chegar à Grande Final AO VIVO em Las Vegas
Saiba maisNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Este artigo se destina a modeladores de dados que estão desenvolvendo modelos compostos no Power BI. Ele descreve os casos de uso de modelo composto e fornece diretrizes de design. Especificamente, as diretrizes podem ajudar você a determinar se um modelo composto é apropriado para sua solução. Se esse for o caso, este artigo também ajudará você a criar relatórios e modelos compostos ideais.
Observação
Este artigo não aborda a introdução aos modelos compostos. Se você não estiver totalmente familiarizado com os modelos compostos, recomendamos que leia primeiro o artigo Usar modelos compostos no Power BI Desktop.
Como os modelos compostos consistem em pelo menos uma fonte DirectQuery, também é importante que você tenha um entendimento completo das relações de modelos, dos modelos DirectQuery e das diretrizes de design de modelo DirectQuery.
Por definição, um modelo composto combina vários grupos de origem. Um grupo de origem pode representar dados importados ou uma conexão com uma fonte do DirectQuery. Uma fonte DirectQuery pode ser um banco de dados relacional ou outro modelo de tabela, que pode ser um modelo semântico do Power BI ou um modelo de tabela do Analysis Services. Quando um modelo tabular se conecta a outro, isso é conhecido como encadeamento. Para obter mais informações, confira Usando o DirectQuery para os modelos semânticos do Power BI e para o Analysis Services.
Observação
Quando um modelo se conecta a um modelo tabular, mas não o estende com dados adicionais, ele não é um modelo composto. Nesse caso, é um modelo do DirectQuery que se conecta a um modelo remoto, portanto, ele compreende apenas um grupo de origem. Você pode criar esse tipo de modelo para modificar as propriedades do objeto do modelo de origem, como um nome de tabela, ordem de classificação de coluna ou cadeia de caracteres de formato.
Conectar-se a modelos tabulares é especialmente relevante ao estender um modelo semântico empresarial (quando é um modelo semântico do Power BI ou um modelo do Analysis Services). Um modelo semântico empresarial é fundamental para o desenvolvimento e a operação de um data warehouse. Ele fornece uma camada de abstração sobre os dados no data warehouse para apresentar definições de negócios e terminologia. Normalmente, ele é usado como um link entre modelos de dados físicos e ferramentas de relatório, como o Power BI. Na maioria das organizações, é gerenciado por uma equipe central, e por isso é descrito como empresarial. Para obter mais informações, consulte o cenário de uso de BI empresarial.
Você pode considerar o desenvolvimento de um modelo composto nas situações a seguir.
Observação
Os modelos compostos não podem incluir conexões com determinados bancos de dados analíticos externos. Esses bancos de dados incluem o SAP Business Warehouse e o SAP HANA ao tratar o SAP HANA como uma origem multidimensional.
Embora os modelos compostos do Power BI possam resolver desafios de design específicos, eles podem contribuir para um desempenho lento. Além disso, em algumas situações, podem ocorrer resultados de cálculo inesperados (descritos posteriormente neste artigo). Por esses motivos, avalie outras opções de design de modelo quando houver.
Sempre que possível, é melhor desenvolver um modelo no modo de importação. Esse modo fornece a maior flexibilidade de design e o melhor desempenho.
No entanto, os desafios relacionados a grandes volumes de dados ou relatórios de dados quase em tempo real nem sempre podem ser resolvidos pelos modelos de importação. Em qualquer um desses casos, você pode considerar o uso de um modelo DirectQuery, desde que seus dados sejam armazenados em uma única fonte de dados compatível com o modo DirectQuery. Para obter mais informações, confira Modelos do DirectQuery no Power BI Desktop.
Dica
Se seu objetivo for apenas estender um modelo tabular existente com mais dados, sempre que possível, adicione esses dados à fonte de dados existente.
Em um modelo composto, você pode definir o modo de armazenamento para cada tabela (exceto tabelas calculadas).
Há vários cenários possíveis em que o Power BI consulta um modelo composto.
Em resumo, recomendamos que você:
Você pode adicionar agregações definidas pelo usuário às tabelas DirectQuery. Sua finalidade é melhorar o desempenho de consultas de granulação mais alta.
Quando agregações são armazenadas em cache no modelo, elas comportam-se como tabelas de importação (embora não possam ser usadas como uma tabela de modelo). Adicionar agregações de importação a um modelo DirectQuery resultará em um modelo composto.
Observação
As tabelas híbridas não dão suporte a agregações porque algumas das partições operam no modo de importação. Não é possível adicionar agregações no nível de uma partição DirectQuery individual.
Recomendamos que uma agregação siga uma regra básica: sua contagem de linhas deve ser pelo menos 10 vezes menor que a tabela subjacente. Por exemplo, se a tabela subjacente armazenar 1 bilhão de linhas, a tabela de agregação não deverá exceder 100 milhões linhas. Essa regra garante um ganho de desempenho adequado em relação ao custo de criação e manutenção da agregação.
Quando uma relação de modelo abrange grupos de origem, ela é conhecida como uma relação entre grupos de origem. Relações entre grupos de origem também são relações limitadas porque não há um lado "um" garantido. Para obter mais informações, confira Avaliação da relação.
Observação
Em algumas situações, você pode evitar a criação de uma relação entre grupos de origem. Consulte o tópico Usar segmentações de sincronização mais adiante neste artigo.
Ao definir relações entre grupos de origem, considere as recomendações a seguir.
Aviso
Como o Power BI Desktop não valida completamente as relações entre grupos nas diversas origens, é possível criar relações ambíguas.
Considere um cenário de um design de relação complexo e como ele poderia produzir resultados diferentes, ainda que válidos.
Nesse cenário, a tabela Região no grupo de origem A tem uma relação com a tabela Data e a tabela Vendas no grupo de origem B. A relação entre a tabela Região e a tabela Data está ativa, enquanto a relação entre a tabela Região e a tabela Vendas está inativa. Além disso, há uma relação ativa entre a tabela Região e a tabela Vendas, ambas no grupo de origem B. A tabela Vendas inclui uma medida chamada TotalSales e a tabela Região inclui duas medidas denominadas RegionalSales e RegionalSalesDirect.
Aqui estão as definições de medida.
TotalSales = SUM(Sales[Sales])
RegionalSales = CALCULATE([TotalSales], USERELATIONSHIP(Region[RegionID], Sales[RegionID]))
RegionalSalesDirect = CALCULATE(SUM(Sales[Sales]), USERELATIONSHIP(Region[RegionID], Sales[RegionID]))
Observe como a medida RegionalSales se refere à medida TotalSales, enquanto a medida RegionalSalesDirect não. Em vez disso, a medida RegionalSalesDirect usa a expressão SUM(Sales[Sales])
, que é a expressão da medida TotalSales.
A diferença no resultado é sutil. Quando o Power BI avalia a medida RegionalSales, ele aplica o filtro da tabela Região à tabela Vendas e à tabela Data. Portanto, o filtro também se propaga da tabela Data para a tabela Vendas. Por outro lado, quando o Power BI avalia a medida RegionalSalesDirect, ele propaga apenas o filtro da tabela Região para a tabela Vendas. Os resultados retornados pela medida RegionalSales e pela medida RegionalSalesDirect podem ser diferentes, embora as expressões sejam semanticamente equivalentes.
Importante
Sempre que você usar a função CALCULATE
com uma expressão que seja uma medida em um grupo de origem remoto, teste os resultados do cálculo detalhadamente.
Considere um cenário em que uma relação entre grupos de origem tem colunas de relação de alta cardinalidade.
Nesse cenário, a tabela Data está relacionada à tabela Vendas nas colunas DateKey. O tipo de dados das colunas DateKey é inteiro, armazenando números inteiros que usam o formato aammdd. As tabelas pertencem a diferentes grupos de origem. Além disso, é uma relação de alta cardinalidade porque a data mais antiga na tabela Data é 1º de janeiro de 1900 e a data mais recente é 31 de dezembro de 2100; portanto, há um total de 73.414 linhas na tabela (uma linha para cada data no intervalo de tempo de 1900 a 2100).
Há dois motivos de preocupação.
Primeiro, quando você usar as colunas da tabela Data como filtros, a propagação do filtro filtrará a coluna DateKey da tabela Vendas para avaliar as medidas. Ao filtrar por um ano, como 2022, a consulta DAX incluirá uma expressão de filtro como Sales[DateKey] IN { 20220101, 20220102, …20221231 }
. O tamanho do texto da consulta poderá aumentar e se tornar extremamente grande quando o número de valores na expressão de filtro for grande ou quando os valores de filtro forem cadeias de caracteres longas. É caro para o Power BI gerar a consulta longa e para a fonte de dados executar a consulta.
Em segundo lugar, quando você usa colunas da tabela Data – como Ano, Trimestre ou Mês – como colunas de agrupamento, isso resulta em filtros que incluem todas as combinações exclusivas de ano, trimestre ou mês e os valores de coluna DateKey. O tamanho da cadeia de caracteres da consulta, que contém filtros nas colunas de agrupamento e na coluna de relação, pode se tornar extremamente grande. Isso é especialmente verdadeiro quando o número de colunas de agrupamento e/ou a cardinalidade da coluna de junção (a coluna DateKey) é grande.
Para resolver problemas de desempenho, você pode:
Considere um cenário em que não há valores correspondentes entre tabelas em uma relação entre grupos de origem.
Nesse cenário, a tabela Data no grupo de origem B tem uma relação com a tabela Vendas nesse grupo de origem e também com a tabela Destino no grupo de origem A. Todas as relações são de um para muitos da tabela Data que relaciona as colunas Ano. A tabela Vendas inclui uma coluna SalesAmount que armazena valores de vendas, enquanto a tabela Destino inclui uma coluna TargetAmount que armazena os valores de destino.
A tabela Data armazena os anos de 2021 e 2022. A tabela Vendas armazena valores de vendas para os anos de 2021 (100) e 2022 (200), enquanto a tabela Destino armazena valores alvo para 2021 (100), 2022 (200) e 2023 (300)— um ano futuro.
Quando um visual de tabela do Power BI consulta o modelo composto agrupando na coluna Ano da tabela Data e somando as colunas SalesAmount e TargetAmount, ele não mostrará um valor de destino para 2023. Isso ocorre porque a relação entre grupos de origem é uma relação limitada e, portanto, usa semântica INNER JOIN
, que elimina linhas em que não há nenhum valor correspondente em ambos os lados. No entanto, ele produzirá um valor de destino total correto (600), porque um filtro de tabela Data não se aplica à sua avaliação.
Se a relação entre a tabela Data e a tabela Destino for uma relação de grupo de origem interna (supondo que a tabela Destino pertencia ao grupo de origem B), o visual incluirá um ano (Em branco) para mostrar o valor de destino de 2023 (e qualquer outro ano sem correspondência).
Importante
Para evitar erros de relatório, verifique se há valores correspondentes nas colunas da relação quando as tabelas de dimensão e de fatos residirem em grupos de origem diferentes.
Para obter mais informações sobre relações limitadas, consulte Avaliação de relação.
Considere limitações específicas ao adicionar colunas calculadas e grupos de cálculo a um modelo composto.
As colunas calculadas adicionadas a uma tabela DirectQuery que obtém seus dados de um banco de dados relacional, como o Microsoft SQL Server, são limitadas a expressões que operam em uma linha de cada vez. Essas expressões não podem usar funções de iterador DAX, como SUMX
, nem filtrar funções de modificação de contexto, como CALCULATE
.
Observação
Não é possível adicionar colunas calculadas nem tabelas calculadas que dependem de modelos tabulares encadeados.
Uma expressão de coluna calculada em uma tabela do DirectQuery remota é limitada apenas à avaliação de linha interna. No entanto, você pode criar essa expressão, mas isso resultará em um erro quando ela for usada em um visual. Por exemplo, se você adicionar uma coluna calculada a uma tabela remota do DirectQuery chamada DimProduct usando a expressão [Product Sales] / SUM (DimProduct[ProductSales])
, poderá salvar com êxito a expressão no modelo. No entanto, isso resultará em um erro quando for usado em um visual porque viola a restrição de avaliação de linha interna.
Por outro lado, colunas calculadas adicionadas a uma tabela do DirectQuery remota que é um modelo tabular, que é um modelo semântico do Power BI ou um modelo do Analysis Services, são mais flexíveis. Nesse caso, todas as funções DAX são permitidas porque a expressão será avaliada dentro do modelo tabular de origem.
Muitas expressões exigem que o Power BI materialize a coluna calculada antes de usá-la como um grupo ou filtro ou de agregá-la. Quando uma coluna calculada é materializada sobre uma tabela grande, ela pode ser cara em termos de CPU e memória, dependendo da cardinalidade das colunas das quais a coluna calculada depende. Nesse caso, recomendamos que você adicione essas colunas calculadas ao modelo de origem.
Observação
Ao adicionar colunas calculadas a um modelo composto, certifique-se de testar todos os cálculos do modelo. Os cálculos upstream podem não funcionar corretamente porque não consideraram sua influência no contexto do filtro.
Se houver grupos de cálculo em um grupo de origem que se conecta a um modelo semântico do Power BI ou a um modelo do Analysis Services, o Power BI poderá retornar resultados inesperados. Para obter mais informações, consulte Grupos de cálculo, avaliação de consulta e medida.
Você sempre deve otimizar um modelo do Power BI adotando um design de esquema em estrela.
Dica
Para obter mais informações, confira Entender o esquema em estrela e a importância dele para o Power BI.
Crie tabelas de dimensões separadas das tabelas de fatos para que o Power BI possa interpretar as junções corretamente e produzir planos de consulta eficientes. Embora essas diretrizes sejam verdadeiras para qualquer modelo do Power BI, isso é especialmente verdadeiro para modelos que você reconhece que se tornarão um grupo de origem de um modelo composto. Isso permitirá uma integração mais simples e eficiente de outras tabelas em modelos downstream.
Sempre que possível, evite ter tabelas de dimensão em um grupo de origem relacionadas a uma tabela de fatos em um grupo de origem diferente. Isso ocorre porque é melhor ter relações dentro dos grupos de origem do que relações entre grupos de origem, especialmente para colunas de relação de alta cardinalidade. Conforme descrito anteriormente, as relações entre grupos de origem dependem de ter valores correspondentes nas colunas de relação, caso contrário, resultados inesperados podem ser mostrados em visuais de relatório.
Se o modelo incluir agregações definidas pelo usuário, colunas calculadas em tabelas de importação ou tabelas calculadas, verifique se a RLS (segurança em nível de linha) está configurada corretamente e testada.
Se o modelo composto se conectar a outros modelos tabulares, as regras de RLS serão aplicadas somente ao grupo de origem (modelo local) em que são definidas. Elas não serão aplicadas a outros grupos de origem (modelos remotos). Além disso, você não pode definir regras de RLS em uma tabela de outro grupo de origem nem pode definir regras de RLS em uma tabela local que tenha uma relação com outro grupo de origem.
Em algumas situações, você pode aprimorar o desempenho de um modelo composto projetando um layout de relatório otimizado.
Sempre que possível, crie visuais que usam campos de um só grupo de origem. Isso ocorre porque as consultas geradas por visuais terão um desempenho melhor quando o resultado for recuperado de um só grupo de origem. Considere criar dois visuais posicionados lado a lado que recuperam dados de dois grupos de origem diferentes.
Em algumas situações, você pode configurar segmentações de sincronização para evitar a criação de uma relação entre grupos de origem em seu modelo. Isso pode permitir que você combine grupos de origem visualmente que podem ter um desempenho melhor.
Considere um cenário em que o modelo tem dois grupos de origem. Cada grupo de origem tem uma tabela de dimensões de produto usada para filtrar vendas de revendedor e da internet.
Nesse cenário, o grupo de origem A contém a tabela Produto relacionada à tabela ResellerSales. O grupo de origem B contém a tabela Product2 relacionada à tabela InternetSales. Não há relações entre os grupos de origem.
No relatório, você adiciona uma segmentação de dados que filtra a página usando a coluna Cor da tabela Produto. Por padrão, a segmentação filtra a tabela ResellerSales, mas não a tabela InternetSales. Em seguida, adicione uma segmentação oculta usando a coluna Cor da tabela Product2. Ao definir um nome de grupo idêntico (encontrado nas Opções avançadas das segmentações de sincronização), os filtros aplicados à segmentação visível são propagados automaticamente para a segmentação oculta.
Observação
Embora o uso de segmentações de sincronização possa evitar a necessidade de criar uma relação entre grupos de origem, isso aumenta a complexidade do design do modelo. Lembre-se de instruir outros usuários sobre por que você projetou o modelo com tabelas de dimensões duplicadas. Evite confusão ocultando tabelas de dimensões que você não deseja que outros usuários usem. Você também pode adicionar texto de descrição às tabelas ocultas para documentar a finalidade delas.
Para obter mais informações, consulte Sincronizar segmentações separadas.
Aqui estão algumas outras diretrizes para ajudar você a projetar e manter modelos compostos.
Para obter mais informações relacionadas a este artigo, confira os recursos a seguir.
Eventos
Campeonato Mundial de Visualização de Dados do Power BI
14 de fev., 16 - 31 de mar., 16
Com 4 chances de participar, você pode ganhar um pacote de conferência e chegar à Grande Final AO VIVO em Las Vegas
Saiba maisTreinamento
Roteiro de aprendizagem
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Certificação
Microsoft Certified: Power BI Data Analyst Associate - Certifications
Erfahren Sie mehr über die Methoden und Best Practices, die den geschäftlichen und technischen Anforderungen für die Modellierung, Visualisierung und Analyse von Daten mit Microsoft Power BI entsprechen.