Ir para conteúdo
  • 0

SOMA COM CONDIÇÃO


LuanRochaPrates
Ir para solução Solucionado por Joao Barbosa ,

Pergunta

  • Alunos

Eu tenho uma tabela no Power BI com as seguintes colunas:
Coluna 01 se chama Produção de Leite, onde eu tenho o total de produção de Leite
Coluna 02 se chama Data_Referencia, onde eu tenho a data da visita
Coluna 03 se chama Cod_Visita, onde eu tenho qual o codigo da visita
Coluna 04 se chama Cod_Propriedade, onde eu tenho o codigo da propriedade
Para calcular a quantidade de visitas que uma propriedade tem eu faço um DISTINCTCOUNT do Cod_Visita para cada propriedade e para calcular a Produção de Leite eu faço uma soma da Produção de Leite. O que eu preciso é uma medida que me traga a Produção de Leite levando em consideração apenas propriedades que tem mais de 12 visitas e levando em consideração apenas a data que eu selecionei em um filtro, sendo essa a data maxima e a data minima sendo a data que eu selecionei no filtro voltando 12 meses.

Tentei:

Produção Anual de Leite =
// Criando as variaveis de Data
VAR CurrentDate = MAX(dCalendario[Date]) // Pegando a data que eu selecionei no filtro
VAR PreviousDate = DATE(YEAR(CurrentDate);MONTH(CurrentDate)-12;DAY(CurrentDate)) //Pegando essa data que eu selecionei e voltando 12 meses
 
// Criando a Variavel de Quantidade de visitas no periodo selecionado
VAR Quantidade_De_Visitas_Do_Periodo = CALCULATE([Quantidade de Visita];FILTER(Indicador_Leite; Indicador_Leite[data_referencia] >= PreviousDate && Indicador_Leite[data_referencia] <= CurrentDate
    )
)
 
// Criando variavel do resultado
VAR Result =
CALCULATE(
    SUM(Indicador_Leite[producao_leite]);
    FILTER(Indicador_Leite; Indicador_Leite[data_referencia] >= PreviousDate && Indicador_Leite[data_referencia] <= CurrentDate
    )
) // Soma Produção de Leite dentro desse range de data que eu selecionei (Data selecionado e voltando 12 meses)
 
// Criando variável de resultado
 
VAR Result_2 =
CALCULATE (
    SUM(Indicador_Leite[producao_leite]);
    FILTER (
        SUMMARIZE ( Indicador_Leite;Indicador_Leite[cod_propriedade]; "qtd_visitas";DISTINCTCOUNT(Indicador_Leite[cod_visita] ));Quantidade_De_Visitas_Do_Periodo >= 12
    ); FILTER(Indicador_Leite; Indicador_Leite[data_referencia] >= PreviousDate && Indicador_Leite[data_referencia] <= CurrentDate
    )
) // Soma Produção de Leite apenas de Propriedades que tem mais de 12 visitas
 
RETURN
Result_2
 
// Calcular a Produção Anual de Leite ,  1 - SOMAR PRODUÇÃO DE LEITE , 2 CONDIÇÕES, 1 - EU SÓ POSSO SOMAR A PRODUÇÃO DE PROPRIEDADES QUE TEM MAIS DE 12 VISITAS E A SEGUNDA É QUE EU TENHO QUE ANALISAR NO PERIODO QUE EU SELECIONEI VOLTANDO 1 ANO.

 

 

Tentei realizar essa medida, entre varias outras, mas não consegui o resultado esperado que seria:

A soma da produção de leite apenas das propriedades que tem mais de 12 visitas no periodo que eu selecionei e o periodo que eu selecionei é a data que está selecionada no filtro, tipo fevereiro/2022, sendo a data maxima e a minima fevereiro/2022 voltando 12 meses, no caso:

Entre fevereiro/2021 e fevereirero/2022 quais foram as propriedades que tiveram mais de 12 visitas? Pegar essas propriedades e somar a coluna dela de "Produção de Leite" 

Base de testes anexada

Indicadores_De_Leite_Teste.xlsx

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
31 minutos atrás, LuanRochaPrates disse:

João, caso eu queira fazer uma segunda medida que tem exatamente esse comportamento, mas trata-se de outro periodo que o usuario selecionar e eu queria que essa minha segunda medida apenas analise as mesmas propriedades que foram consideradas na medida 01, como faria?

Por exemplo, essa medida ai fez eu considerar as Propriedades 1,2,3,4,5   . Ai eu fiz uma segunda medida que trata-se de um periodo diferente, mas é exatamente do mesmo jeito, mas essa medida tá levando em consideração as Propriedades 1,3,5,6,7,8 . Ai eu quero que eu apenas considere as mesmas que já foram consideradas também na Medida 01 , ou seja, só consideraria a propriedade 1,3,5 pq são as em comuns entre as medidas, deu para entender?

Tipo fazer um IN, uma intersecção entre as duas.

cria uma outra tabela virtual depois faz um intersect , não? Não sei se entendi direito

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
44 minutos atrás, LuanRochaPrates disse:

Eu tenho uma tabela no Power BI com as seguintes colunas:
Coluna 01 se chama Produção de Leite, onde eu tenho o total de produção de Leite
Coluna 02 se chama Data_Referencia, onde eu tenho a data da visita
Coluna 03 se chama Cod_Visita, onde eu tenho qual o codigo da visita
Coluna 04 se chama Cod_Propriedade, onde eu tenho o codigo da propriedade
Para calcular a quantidade de visitas que uma propriedade tem eu faço um DISTINCTCOUNT do Cod_Visita para cada propriedade e para calcular a Produção de Leite eu faço uma soma da Produção de Leite. O que eu preciso é uma medida que me traga a Produção de Leite levando em consideração apenas propriedades que tem mais de 12 visitas e levando em consideração apenas a data que eu selecionei em um filtro, sendo essa a data maxima e a data minima sendo a data que eu selecionei no filtro voltando 12 meses.

Tentei:

Produção Anual de Leite =
// Criando as variaveis de Data
VAR CurrentDate = MAX(dCalendario[Date]) // Pegando a data que eu selecionei no filtro
VAR PreviousDate = DATE(YEAR(CurrentDate);MONTH(CurrentDate)-12;DAY(CurrentDate)) //Pegando essa data que eu selecionei e voltando 12 meses
 
// Criando a Variavel de Quantidade de visitas no periodo selecionado
VAR Quantidade_De_Visitas_Do_Periodo = CALCULATE([Quantidade de Visita];FILTER(Indicador_Leite; Indicador_Leite[data_referencia] >= PreviousDate && Indicador_Leite[data_referencia] <= CurrentDate
    )
)
 
// Criando variavel do resultado
VAR Result =
CALCULATE(
    SUM(Indicador_Leite[producao_leite]);
    FILTER(Indicador_Leite; Indicador_Leite[data_referencia] >= PreviousDate && Indicador_Leite[data_referencia] <= CurrentDate
    )
) // Soma Produção de Leite dentro desse range de data que eu selecionei (Data selecionado e voltando 12 meses)
 
// Criando variável de resultado
 
VAR Result_2 =
CALCULATE (
    SUM(Indicador_Leite[producao_leite]);
    FILTER (
        SUMMARIZE ( Indicador_Leite;Indicador_Leite[cod_propriedade]; "qtd_visitas";DISTINCTCOUNT(Indicador_Leite[cod_visita] ));Quantidade_De_Visitas_Do_Periodo >= 12
    ); FILTER(Indicador_Leite; Indicador_Leite[data_referencia] >= PreviousDate && Indicador_Leite[data_referencia] <= CurrentDate
    )
) // Soma Produção de Leite apenas de Propriedades que tem mais de 12 visitas
 
RETURN
Result_2
 
// Calcular a Produção Anual de Leite ,  1 - SOMAR PRODUÇÃO DE LEITE , 2 CONDIÇÕES, 1 - EU SÓ POSSO SOMAR A PRODUÇÃO DE PROPRIEDADES QUE TEM MAIS DE 12 VISITAS E A SEGUNDA É QUE EU TENHO QUE ANALISAR NO PERIODO QUE EU SELECIONEI VOLTANDO 1 ANO.

 

 

Tentei realizar essa medida, entre varias outras, mas não consegui o resultado esperado que seria:

A soma da produção de leite apenas das propriedades que tem mais de 12 visitas no periodo que eu selecionei e o periodo que eu selecionei é a data que está selecionada no filtro, tipo fevereiro/2022, sendo a data maxima e a minima fevereiro/2022 voltando 12 meses, no caso:

Entre fevereiro/2021 e fevereirero/2022 quais foram as propriedades que tiveram mais de 12 visitas? Pegar essas propriedades e somar a coluna dela de "Produção de Leite" 

Base de testes anexada

Indicadores_De_Leite_Teste.xlsx 403.02 kB · 1 download

@LuanRochaPrates Boa Tarde! 

Veja se isso te ajuda:

 

Medida Leite =
 
var vdata = MAX(Plan1[DATA_REFERENCIA])
 
var vdata12 = DATESINPERIOD(Plan1[DATA_REFERENCIA],vdata,-12,MONTH)
var vqtdevisitas = CALCULATE(COUNT(Plan1[COD_VISITA]) ,
vdata12)
 
var vsomaleite =
CALCULATE(SUM(Plan1[PRODUCAO_LEITE]),
filter(vdata12 ,
vqtdevisitas > 12))
 
return
vsomaleite

Forum2.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
48 minutos atrás, Joao Barbosa disse:

@LuanRochaPrates Boa Tarde! 

Veja se isso te ajuda:

 

Medida Leite =
 
var vdata = MAX(Plan1[DATA_REFERENCIA])
 
var vdata12 = DATESINPERIOD(Plan1[DATA_REFERENCIA],vdata,-12,MONTH)
var vqtdevisitas = CALCULATE(COUNT(Plan1[COD_VISITA]) ,
vdata12)
 
var vsomaleite =
CALCULATE(SUM(Plan1[PRODUCAO_LEITE]),
filter(vdata12 ,
vqtdevisitas > 12))
 
return
vsomaleite

Forum2.pbix 166.44 kB · 0 downloads

João, creio que esteja algo errado, pq fiz um teste para ver o valor esperado e deu o que coloquei ai na imagem, utilizei a medida:

 

SOMA DA PRODUCAO DE LEITE =
CALCULATE (
    [SOMA DE LEITE];
    FILTER (
        SUMMARIZE ( Plan1;Plan1[COD_PROPRIEDADE]; "qtd_visitas";DISTINCTCOUNT(Plan1[COD_VISITA] ));[Quantidade de Visitas] > 12
))

 E fiz um filtro de data de 1 ano


Ai tentei replicar o mesmo comportamento na sua, selecionando apenas 1 data e ver se ele iria voltar 1 ano e dar o mesmo valor.


Creio que seja algum erro na parte de só entrar propriedades que tem mais de 12 visitas, pq o seu valor deu maior que o meu, por isso eu apliquei uma SUMMARIZE ai nesse caso, para eu agrupar a quantidade de visitas de cada propriedade no periodo que eu selecionei e só depois somar as que tiverem mais que 12, acho que deve ser algum erro ai e/ou na seleção da data, consegue me ajudar para identificar?

 

 

 

image.png.b86e1d2e94d316e68e0f3bd92ba50823.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
29 minutos atrás, LuanRochaPrates disse:

João, creio que esteja algo errado, pq fiz um teste para ver o valor esperado e deu o que coloquei ai na imagem, utilizei a medida:

 

SOMA DA PRODUCAO DE LEITE =
CALCULATE (
    [SOMA DE LEITE];
    FILTER (
        SUMMARIZE ( Plan1;Plan1[COD_PROPRIEDADE]; "qtd_visitas";DISTINCTCOUNT(Plan1[COD_VISITA] ));[Quantidade de Visitas] > 12
))

 E fiz um filtro de data de 1 ano


Ai tentei replicar o mesmo comportamento na sua, selecionando apenas 1 data e ver se ele iria voltar 1 ano e dar o mesmo valor.


Creio que seja algum erro na parte de só entrar propriedades que tem mais de 12 visitas, pq o seu valor deu maior que o meu, por isso eu apliquei uma SUMMARIZE ai nesse caso, para eu agrupar a quantidade de visitas de cada propriedade no periodo que eu selecionei e só depois somar as que tiverem mais que 12, acho que deve ser algum erro ai e/ou na seleção da data, consegue me ajudar para identificar?

 

 

 

image.png.b86e1d2e94d316e68e0f3bd92ba50823.png

A Entendi vc quer colocar isso em um cartão , ai teremos que mudar o contexto do total , pera ai.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
15 minutos atrás, Joao Barbosa disse:

A Entendi vc quer colocar isso em um cartão , ai teremos que mudar o contexto do total , pera ai.

Isso, a visualização que eu quero é:

A soma da produção de leite das propriedades que tiverem mais de 12 visitas no periodo selecionado e o periodo selecionado é a data que eu selecionei sendo a maxima e a data minima é a data selecionado voltando 12 meses (12 month).

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Em 11/01/2023 em 17:09, LuanRochaPrates disse:

Isso, a visualização que eu quero é:

A soma da produção de leite das propriedades que tiverem mais de 12 visitas no periodo selecionado e o periodo selecionado é a data que eu selecionei sendo a maxima e a data minima é a data selecionado voltando 12 meses (12 month).

@LuanRochaPrates  Bom Dia !

Desculpa a demora havia esquecido:

 

var vtable = FILTER(ADDCOLUMNS(FILTER(Plan1,
Plan1[DATA_REFERENCIA] <= MAX(Plan1[DATA_REFERENCIA]) &&
Plan1[DATA_REFERENCIA] >= EDATE(MAX(Plan1[DATA_REFERENCIA]),-12)),"Qtde",
CALCULATE(COUNT(Plan1[COD_VISITA]),FILTER(ALLEXCEPT(Plan1,Plan1[COD_PROPRIEDADE]),
Plan1[DATA_REFERENCIA] <= MAX(Plan1[DATA_REFERENCIA]) &&
Plan1[DATA_REFERENCIA] >= EDATE(MAX(Plan1[DATA_REFERENCIA]),-12))),
"Leite Soma",
CALCULATE(SUM(Plan1[PRODUCAO_LEITE]),FILTER(ALLEXCEPT(Plan1,Plan1[COD_PROPRIEDADE]),
Plan1[DATA_REFERENCIA] <= MAX(Plan1[DATA_REFERENCIA]) &&
Plan1[DATA_REFERENCIA] >= EDATE(MAX(Plan1[DATA_REFERENCIA]),-12)))
),
[Qtde] > 12)
 
return
SUMX(vtable,[Leite Soma])

Forum2.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
26 minutos atrás, Joao Barbosa disse:

@LuanRochaPrates  Bom Dia !

Desculpa a demora havia esquecido:

 

var vtable = FILTER(ADDCOLUMNS(FILTER(Plan1,
Plan1[DATA_REFERENCIA] <= MAX(Plan1[DATA_REFERENCIA]) &&
Plan1[DATA_REFERENCIA] >= EDATE(MAX(Plan1[DATA_REFERENCIA]),-12)),"Qtde",
CALCULATE(COUNT(Plan1[COD_VISITA]),FILTER(ALLEXCEPT(Plan1,Plan1[COD_PROPRIEDADE]),
Plan1[DATA_REFERENCIA] <= MAX(Plan1[DATA_REFERENCIA]) &&
Plan1[DATA_REFERENCIA] >= EDATE(MAX(Plan1[DATA_REFERENCIA]),-12))),
"Leite Soma",
CALCULATE(SUM(Plan1[PRODUCAO_LEITE]),FILTER(ALLEXCEPT(Plan1,Plan1[COD_PROPRIEDADE]),
Plan1[DATA_REFERENCIA] <= MAX(Plan1[DATA_REFERENCIA]) &&
Plan1[DATA_REFERENCIA] >= EDATE(MAX(Plan1[DATA_REFERENCIA]),-12)))
),
[Qtde] > 12)
 
return
SUMX(vtable,[Leite Soma])

Forum2.pbix 178.97 kB · 0 downloads

João, caso eu queira fazer uma segunda medida que tem exatamente esse comportamento, mas trata-se de outro periodo que o usuario selecionar e eu queria que essa minha segunda medida apenas analise as mesmas propriedades que foram consideradas na medida 01, como faria?

Por exemplo, essa medida ai fez eu considerar as Propriedades 1,2,3,4,5   . Ai eu fiz uma segunda medida que trata-se de um periodo diferente, mas é exatamente do mesmo jeito, mas essa medida tá levando em consideração as Propriedades 1,3,5,6,7,8 . Ai eu quero que eu apenas considere as mesmas que já foram consideradas também na Medida 01 , ou seja, só consideraria a propriedade 1,3,5 pq são as em comuns entre as medidas, deu para entender?

Tipo fazer um IN, uma intersecção entre as duas.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, Joao Barbosa disse:

cria uma outra tabela virtual depois faz um intersect , não? Não sei se entendi direito

Isso, tava pensando nisso mesmo, como eu criaria ela? Consegue me ajudar, seria uma tabela virtual que tivesse Os Cod.Propriedade gerados pela medida 01 quando o cara selecionou o periodo, ai teria que ter o INTERSECT na minha segunda medida desses codigo propriedade, pode me ajudar a como fazer isso?

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...