2
respostas

Função Calculate

Boa tarde, galera!

Tenho a tabela da imagem abaixo e preciso saber a seguinte informação.

Quantos clientes que compraram no ciclo 1 compraram também no ciclo 2 e assim por diante em diversos ciclos.

Pensei em fazer da forma abaixo, porém não deu certo.

Ciclo 1 e 2 = CALCULATE(COUNTROWS('Página1'),'Página1'[Ciclo]=1,'Página1'[Ciclo]=2)

Ele não apresenta erro, mas ao colocar a visualização no cartão aparece o texto "Em Branco"

![](![Erro](Insira aqui a descrição dessa imagem para ajudar na acessibilidade https://cdn1.gnarususercontent.com.br/1/1423042/de26ac3c-fbcb-4f67-a627-c0f2f882fa48.png ) )

Serei eternamente grato a quem conseguir me ajudar nessa.

Desde já agradeço pela ajuda, pessoal.

2 respostas

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi, Matheus, tudo bem?

Desculpe a demora em te responder!

O problema parece estar na forma como você está usando a função CALCULATE. A função CALCULATE avalia uma expressão em um contexto modificado. No seu caso, você está tentando aplicar duas condições ao mesmo tempo, no campo 'Página1'[Ciclo] e isso não é possível.

A função CALCULATE não pode avaliar 'Página1'[Ciclo]=1 e 'Página1'[Ciclo]=2 ao mesmo tempo, pois um registro não pode ter o valor de Ciclo igual a 1 e 2 simultaneamente. Isso provavelmente está resultando em um conjunto vazio, por isso o resultado "Em Branco".

Uma possível solução seria reescrever a expressão de modo que a função CALCULATE seja aplicada individualmente em cada um dos ciclos. Ficaria assim:

Ciclo 1 e 2 Simultaneamente = 
COUNTROWS(
    FILTER(
        SUMMARIZE(teste, teste[Nome]),
        CALCULATE(COUNTROWS(teste), teste[Ciclo] = 1) > 0 &&
        CALCULATE(COUNTROWS(teste), teste[Ciclo] = 2) > 0
    )
)
  • A função COUNTROWS(...) conta o número de linhas resultantes de uma tabela ou expressão de tabela.
  • A função FILTER(...) filtra as linhas da tabela com base em uma condição específica.
  • A função SUMARIZE(teste, teste[Nome])* cria uma tabela resumida com base em uma tabela de entrada e em uma ou mais colunas específicas. Neste caso, está sendo criada uma tabela resumida baseada na tabela "teste" usando a coluna "Nome", ou seja, a tabela resumida terá apenas uma linha para cada valor distinto na coluna "Nome" da tabela "teste".
  • A função CALCULATE calcula o número de linhas na tabela "teste" onde o valor da coluna "Ciclo" é igual a 1 na expressão CALCULATE(COUNTROWS(teste), teste[Ciclo] = 1) > 0 e igual a 2 na expressão CALCULATE(COUNTROWS(teste), teste[Ciclo] = 2) > 0.
  • O operador lógico &&, que significa "E", significa que a expressão será verdadeira apenas se ambas as condições forem verdadeiras. Em outras palavras, a expressão verifica se há pelo menos uma linha onde o ciclo é igual a 1 e pelo menos uma linha onde o ciclo é igual a 2.

Dessa forma, o código apresentado contabiliza os clientes que participaram simultaneamente dos ciclos 1 e 2. Contudo, se quiser verificar a soma dos ciclos 1 e 2, você pode usar a expressão mais simples:

Clientes_Ciclo_1_e_2 = COUNTROWS(FILTER(teste, teste[Ciclo] = 1 || teste[Ciclo] = 2))

Nela filtramos os dados dos ciclos 1 e 2, independente de ser um mesmo cliente em dois ciclos ou clientes diferentes em ciclos diferentes.

Lembre-se de alterar o nome da tabela e o nome das colunas para as especificidades do seu projeto.

Espero ter ajudado. Caso tenha dúvidas, não hesite em postar no fórum!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!