Reduzir a cardinalidade

Concluído

A cardinalidade é um termo utilizado para descrever a singularidade dos valores numa coluna. A cardinalidade é também utilizada no contexto das relações entre duas tabelas, onde descreve a direção da relação.

Identificar níveis de cardinalidade nas colunas

Anteriormente, quando utilizou o Editor do Power Query para analisar os metadados, a opção Distribuição de colunas no separador Ver mostrou as estatísticas sobre quantos itens distintos e exclusivos existiam em cada coluna nos dados.

  • Contagem de valores distintos – o número total de valores diferentes encontrados numa determinada coluna.

  • Contagem de valores exclusivos – o número total de valores que só aparecem numa vez numa determinada coluna.

Uma coluna que tenha muitos valores repetidos no seu intervalo (contagem única é baixa) terá um baixo nível de cardinalidade. Inversamente, uma coluna que tenha muitos valores únicos no seu intervalo (a contagem de valores únicos é elevada) terá um elevado nível de cardinalidade.

A cardinalidade mais baixa conduz a um desempenho mais otimizado, pelo que poderá ter de reduzir o número de colunas cardinalicamente elevadas no seu modelo semântico.

Reduzir a cardinalidade da relação

Ao importar várias tabelas, é possível que faça análises ao utilizar os dados de todas essas tabelas. As relações entre essas tabelas são necessárias para calcular os resultados com exatidão e apresentar as informações corretas nos seus relatórios. O Power BI Desktop ajuda a tornar essas relações mais fáceis. De facto, na maioria dos casos, não tem de fazer nada, pois a funcionalidade de deteção automática irá fazê-lo por si. No entanto, poderá ocasionalmente ter de criar relações ou ter de fazer alterações a uma relação. Seja como for, é importante compreender as relações no Power BI Desktop e saber como criar e editar as mesmas.

Quando cria ou edita uma relação, pode configurar opções adicionais. Por predefinição, o Power BI Desktop configura automaticamente opções adicionais com base no seu melhor palpite, que pode ser diferente para cada relação com base nos dados nas colunas.

As relações podem ter uma cardinalidade diferente. A cardinalidade é a direção da relação e cada relação de modelo tem de ser definida com um tipo de cardinalidade. As opções de cardinalidade no Power BI são:

  • Muitos para um (*:1) – esta relação é o tipo predefinido mais comum. Significa que a coluna numa tabela pode ter mais do que uma instância de um valor e a outra tabela relacionada, muitas vezes conhecida como a tabela de referência, tem apenas uma instância de um valor.

  • Um-para-um (1:1) – a coluna numa tabela tem apenas uma instância de um determinado valor e a outra tabela relacionada tem apenas uma instância de um determinado valor.

  • Um-para-muitos (1:*) - Neste tipo de relação, a coluna numa tabela tem apenas uma instância de um valor específico e a outra tabela relacionada pode ter mais do que uma instância de um valor.

  • Muitos-para-muitos (:) – com os modelos compostos, pode estabelecer uma relação muitos-para-muitos entre tabelas, o que remove os requisitos para valores únicos em tabelas. Também remove soluções anteriores, como a introdução de novas tabelas apenas para estabelecer relações.

Durante o desenvolvimento, está a criar e a editar relações no seu modelo, por isso, quando estiver a criar novas relações no seu modelo, independentemente da cardinalidade que escolheu, certifique-se sempre de que ambas as colunas que está a utilizar para participar numa relação estão a partilhar o mesmo tipo de dados. O seu modelo nunca irá funcionar se tentar construir uma relação entre duas colunas, onde uma coluna tem um tipo de dados de texto e outra coluna tem um tipo de dados de números inteiros.

No seguinte exemplo, o campo ProductID tem o tipo de dados Número inteiro nas tabelas Product e Sales. As colunas com o tipo de dados de Número inteiro têm um melhor desempenho do que as colunas com o tipo de dados Texto.

Melhorar o desempenho através da redução dos níveis de cardinalidade

Power BI Desktop oferece técnicas diferentes que pode utilizar para ajudar a reduzir os dados que são carregados em modelos semânticos, como o resumo. A redução dos dados que são carregados no modelo irá melhorar a cardinalidade da relação do relatório. Como tal, é importante que se esforce por minimizar os dados que serão carregados nos modelos. Este caso aplica-se especialmente aos modelos grandes ou aos modelos que antecipe que vão tornar-se grandes com o passar do tempo.

A técnica mais eficaz para reduzir o tamanho de um modelo talvez seja utilizar uma tabela de resumo a partir da origem de dados.  Ao passo que uma tabela de detalhes pode conter todas as transações, uma tabela de resumo pode conter um registo por dia, por semana ou por mês. Poderia ser uma média de todas as transações por dia, por exemplo.

Por exemplo, uma tabela de factos de origem armazena uma linha para cada linha de encomendas. Os dados poderiam ser significativamente reduzidos através do resumo de todas as métricas de vendas ao agrupar por data, cliente e produto e caso os detalhes de transações individuais não forem necessários.

Considere então que uma redução de dados ainda mais significativa poderia ser conseguida ao agrupar por data ao nível do mês. Tal poderia alcançar uma possível redução de 99% no tamanho do modelo. No entanto, já não seria possível reportar ao nível do dia ou de encomenda individual. Decidir resumir os dados de tipo de factos irá sempre descompensar os detalhes dos seus dados. Uma desvantagem é que pode perder a capacidade de explorar dados porque o detalhe já não existe.  Esta descompensação poderia ser mitigada através da utilização de um design de modelo misto.

No Power BI Desktop, um design de modo Misto produz um modelo composto. Basicamente, permite-lhe determinar um modo de armazenamento para cada tabela. Assim, cada tabela pode ter a propriedade Modo de Armazenamento definida como Importar ou DirectQuery.

Uma técnica eficaz para reduzir o tamanho do modelo consiste em definir a propriedade Modo de Armazenamento para tabelas de tipo de factos maiores para DirectQuery. Esta abordagem de design pode funcionar bem em conjunto com técnicas que são utilizadas para resumir os seus dados. Por exemplo, os dados de vendas resumidos podem ser utilizados para obter relatórios de "resumo" de elevado desempenho. Uma página de pormenorização poderia ser criada para apresentar as vendas granulares para um contexto de filtro específico (e estreito), mostrando todos os pedidos de vendas em contexto. A página de pormenorização incluiria elementos visuais com base numa tabela do DirectQuery para recuperar os dados do pedido de venda (detalhes do pedido de venda).

Para obter mais informações, veja Técnicas de redução de dados para Importar modelação.