O Power BI é uma poderosa ferramenta de análise e visualização de dados, que oferece inúmeras possibilidades para entender informações relevantes em diferentes contextos. No entanto, nem sempre os dados se limitam a uma única data, e é aí que podemos nos deparar com desafios interessantes.
Neste artigo, foi estudado um caso em que uma tabela chamada consorcio, apresenta múltiplas colunas de datas por exemplo, data de adesão, a data de contemplação, e como utilizá-las para obter insights relevantes uma solução para calcular a quantidade de contemplados por ano, independentemente da data de adesão.
Descrição do problema
Dada a tabela de consórcio contendo informações essenciais, como CPF do cliente, indicador de cota contemplada, número da cota, valor contratado, data de adesão e data de contemplação. Além disso, possuímos uma tabela calendário, com informações sobre os anos presentes nos dados do consórcio.
O desafio é calcular a quantidade de contemplados por ano, levando em conta a data de contemplação, mas independentemente da data de adesão. Temos também o relacionamento de um para muitos (1:*) entre a tabela calendário que se relaciona com a data adesão da tabela de consórcio.
Solução inicial
Para abordar o problema, inicialmente criou-se algumas medidas no Power BI. Primeiramente, uma medida para calcular o valor contratado de acordo com alguns filtros específicos, como a coluna “versão_cota” igual a “ATIVA” e a “situação_cota” igual a “NORMAL”.
Em seguida, outra medida foi criada para calcular a quantidade de participantes de acordo com o ano de adesão, utilizando a função “DISTINCTCOUNT” em relação ao CPF dos clientes.
Para calcular a quantidade de contemplados, criamos uma medida denominada “Contemplados”. Utilizamos a função “DISTINCTCOUNT” em relação ao CPF dos clientes, filtrando os resultados por algumas condições, como “situação_cota”,”versão_cota” e “cota_contemplada” igual a “SIM”.
Contemplados =
CALCULATE(
DISTINCTCOUNT(Consorcio[CPF_cliente]),
FILTER(
Consorcio),
Consorcio[indicador_cota_contemplada] = “SIM”
** outras colunas utilizadas como filtro** ) )
Desafio encontrado
No entanto, ao aplicar essa medida de contemplados no gráfico, nota-se que ela retorna apenas a quantidade de contemplados no mesmo ano de adesão, o que não era o resultado desejado.
Por exemplo, ao filtrarmos o ano de 2023, a medida exibia apenas a quantidade de contemplados cujo ano de adesão também era 2023.
Solução
Para superar esse obstáculo, e observado que a solução envolvia a utilização de múltiplas datas na tabela “Consórcio”. Ao invés de utilizar apenas a data de adesão para o cálculo dos contemplados, seria necessário um relacionamento também com a coluna “data de contemplação” da tabela Consórcio com a tabela Calendário.
No entanto, mantendo esse relacionamento inativo, já que o Power BI permite apenas um relacionamento ativo entre duas tabelas por vez para evitar ambiguidades e garantir que as análises sejam consistentes e previsíveis.
Essa limitação é importante para que a ferramenta saiba qual relacionamento deve ser utilizado em cada contexto específico.
Em seguida, uma medida chamada “Contemplados por Ano” foi criada utilizando a medida anterior de “Contemplados” e a função USERELATIONSHIP para especificar que o relacionamento ativo deveria ser feito pela coluna “data de contemplação”. Dessa forma, garante-se que a medida de contemplados mostre os resultados corretamente, considerando o ano de contemplação independentemente da data de adesão.
Ao usar USERELATIONSHIP(Calendario[dt_movimento], Consorcio[data_contemplação, o Power BI a filtrará a tabela Consorcio usando a relação estabelecida entre a coluna “dt_movimento” da tabela Calendario e a coluna “data_contemplação” da tabela Consorcio.
Isso significa que, apesar de haver uma outra relação possível entre a tabela Calendario e a tabela Consorcio através da coluna “data_adesao”, o Power BI seguirá o relacionamento definido com a função USERELATIONSHIP e usará a data de contemplação para realizar o filtro.No Power BI, você pode ter várias relações entre tabelas, mas é importante especificar qual relacionamento usar em cada contexto para evitar conflitos.
Se for necessário filtrar com base em outra relação, como a data de adesão, seria necessário alterar a medida e ajustar o relacionamento para usar a coluna “data_adesao”. Nesse caso, você pode optar por utilizar a função USERELATIONSHIP novamente ou ajustar o relacionamento ativo no modelo de dados para refletir a nova relação desejada.
Em resumo, a medida “Contemplados por Ano” não dá erro porque está explicitamente definindo qual relacionamento usar com a função USERELATIONSHIP. O Power BI utilizará a relação especificada para filtrar os dados e calcular a quantidade de contemplados por ano de contemplação.
Nota sobre a solução
Usar o CPF para contar a quantidade de contemplados pode não ser a melhor abordagem, uma vez que uma mesma pessoa pode possuir mais de um consórcio ativo e, portanto, pode ser contada múltiplas vezes.
Para evitar essa duplicação e garantir uma contagem mais precisa, é recomendado utilizar uma chave única para identificar cada consórcio individualmente, em vez de contar pelo CPF.
Nesse caso, a coluna “num _contrato” pode ser uma opção melhor para realizar a contagem de contemplados. Pode-se alterar a medida de contemplados de outra forma.
Medida com USERELATIONSHIP (Contemplados por Ano):
DAX
Contemplados por Ano =
VAR _dataMax = MAX(Calendario[Ano])
RETURN
CALCULATE(
DISTINCTCOUNT(Consorcio[num_cotrato]),
USERELATIONSHIP(Calendario[dt_movimento], Consorcio[data_contemplação]), FILTER( ALL(Consorcio),
Consorcio[situação_cota] = “NORMAL” &&
Consorcio[versao_cota] = “Ativa” &&
Consorcio[cota_contemplada] = “SIM” ) )
Explicação
- Esta medida, utiliza a função USERELATIONSHIP para ativar o relacionamento entre a tabela Calendario e a tabela Consorcio através das colunas dt_movimento (da tabela Calendario) e data_contemplação (da tabela Consorcio).
- A medida usa o mesmo filtro que a medida anterior para calcular a quantidade de consórcios distintos contemplados em um determinado ano de contemplação.
Sugestão de medida (Contemplados por Ano)
DAX
Contemplados por Ano =
VAR _dataMax = MAX(Calendario[Ano])
RETURN
CALCULATE(
DISTINCTCOUNT(Consorcio[num_cota]),
FILTER( ALL(Consorcio),
Consorcio[situação_cota] = “NORMAL” && Consorcio[versao_cota] = “Ativa” && Consorcio[cota_contemplada] = “SIM” && YEAR(Consorcio[data_contemplação]) = _dataMax ) )
- Essa medida conta a quantidade de números de cota distintos que foram contemplados em um determinado ano de contemplação.
- Ela considera a data de contemplação como o filtro principal para determinar a contagem de contemplados.
- Se uma pessoa tiver múltiplos consórcios contemplados no mesmo ano de contemplação, cada número de cota será contado separadamente.
Portanto, a medida “Contemplados por Ano” com USERELATIONSHIP também conta a quantidade de consórcios distintos contemplados em um determinado ano de contemplação. A diferença é a forma como o relacionamento é estabelecido.
Ambas as medidas são corretas e produzirão resultados similares. A escolha entre elas dependerá da sua preferência pessoal e da sua familiaridade com cada abordagem. Se já está acostumado a usar a função USERELATIONSHIP, não há problema em continuar usando-a para essa análise.
Leia mais:
• Dashboard: como construir em 5 passos
• Dashboard empresarial: como pode ajudar o seu negócio
Conclusão
A experiência de resolver esse problema no Power BI nos mostrou a importância de compreender como trabalhar com múltiplas datas em análises. Ao estabelecer relacionamentos inteligentes e utilizar funções apropriadas, consegue-se obter resultados precisos e relevantes para as análises.
Compreender as nuances do Power BI e aproveitar sua flexibilidade pode abrir novas possibilidades para a exploração de dados e a obtenção de insights valiosos.
Leia também:
• O que faz uma consultoria em Business Intelligence (BI)?
• Business Analytics vs Business Intelligence: qual a diferença?
Cíntia Brandão
Cíntia é analista de BI na beAnalytic, formada em Matemática Industrial pela UFC e cursando MBA em Business Intelligence. Possui experiência com ferramentas como PowerBI, Google Data Studio e R, utilizando essas habilidades para transformar dados em insights valiosos. Além de sua paixão por análise, gosta de ambientes tranquilos, jogos online e tem um grande amor por animais.
- This author does not have any more posts.