Ir para conteúdo
  • 0

Apenas selecionar as mesmas propriedades de ambas as medidas


LuanRochaPrates
Ir para solução Solucionado por Erick Oliveira ,

Pergunta

  • Alunos

Eu tenho essa medida ai que está fazendo o seguinte:

Estou calculando a produção de leite de propriedades que tem mais que 12 visitas no periodo selecionado, onde o periodo selecionado ai, por exemplo, se o usuario selecionar setembro/2022, ai ele ta pegando setembro/2022 = MAXDATA e voltando 12 meses e analisando esse range de periodo


Cenário 02: 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 =
    EOMONTH ( CurrentDate; -13 ) + 1 //Pegando essa data que eu selecionei e voltando 12 meses
//Filtro que será reutilizado em duas medidas
VAR Filtro =
    FILTER (
        ALL ( dCalendario );
        dCalendario[Date] >= PreviousDate
            && dCalendario[Date] <= CurrentDate
    ) // CriandoaVariavel de Id das fazendas
VAR FazendasVisitadas =
    FILTER (
        SUMMARIZE (
            CALCULATETABLE ( Indicador_Leite; Filtro );
            Indicador_Leite[COD_PROPRIEDADE];
            "Qtd_Visitas"; CALCULATE ( DISTINCTCOUNT ( Indicador_Leite[COD_VISITA] ) );
            "Producao"; CALCULATE ( SUM ( Indicador_Leite[producao_leite] ) )
        );
        [Qtd_Visitas] > 12
    )
RETURN
    SUMX ( FILTER ( FazendasVisitadas; [Qtd_Visitas] > 12 ); [Producao] )


 

O meu painel tem 3 periodos:
Periodo 01 / Periodo 02 / Periodo 03 , cada data dessa vem de uma dCalendario diferente

Ai quando o cara seleciona o periodo 01 acontece essa dinamica ai dessa medida que a gente fez, mas ai quando o cara clica no periodo 02 eu quero que o CARD da medida 02 tenha a mesma dinamica do que a gente fez, mas as propriedades que estou analisando precisam ter aparecido na nossa primeira medida.

Por exemplo: se quando a gente fez a medida 01 apareceu a Propriedade 1,2,3,4,5 e quando a gente fez a medida 02(periodo 02) apareceu as propriedades 1,3,5,8,9 , eu só quero analisar a 1,3,5 que são as únicas que apareceram também no periodo 01, deu para pegar a ideia?


Tentei fazer um : 
VAR FazendasVisitadasPeriodo2 =
FILTER (
FazendasVisitadas;
Indicador_Leite[COD_PROPRIEDADE] IN (SELECTCOLUMNS(FazendasVisitadas; "COD_PROPRIEDADE"; Indicador_Leite[COD_PROPRIEDADE]))
)

ou criar uma tabela intermediaria que armezanaria os valores desses Cod_Propriedade da primeira medida para ai filtrar minha tabela, mas não consegui.

Tem alguma ideia de como fazer isso?

A intenção é garantir que na minha segunda medida eu só estou analisando propriedades que eu já analisei na primeira.


ANEXEI UMA IMAGEM E UM ARQUIVO COMO EXEMPLO, ALI NA MEDIDA 02 EXISTEM PROPRIEDADES QUE NÃO APARECERAM NA MINHA MEDIDA 01, EU QUERO APENAS CONSIDERADAR AS PROPRIEDADES QUE EU ESTOU CONTANDO NA MEDIDA 01.

Se alguém puder me salvar nessa ai, por favor.
 

WhatsApp Image 2023-01-13 at 09.34.28.jpeg

Teste_Indicador.pbix

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Boa noite Luan;

Para alcançar o resultado descrito foi necessário 5 medidas, aproveitei algumas partes que você tinha feito.


No arquivo em anexo, a tabela da esquerda irá mostrar a "Produção Anual de Leite" das propriedades  que tiveram "Qtd de Visitas" >= 12 nos últimos 12 meses com relação ao Período 01 selecionado.

A tabela da direta irá mostrar a "Produção Anual de Leite" das propriedades  que tiveram "Qtd de Visitas" >= 12 nos últimos 12 meses com relação ao Período 02 selecionado e apenas para as propriedades que apareceram na tabela da esquerda.

Não sei se acabei fazendo uma volta desnecessária mas acredito que funcionou. As medidas foram:

Cenário 02: 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 = DATESINPERIOD(dCalendario[Date], CurrentDate, -1, YEAR) //Pegando essa data que eu selecionei e voltando 12 meses
VAR FazendasVisitadas =
    FILTER (
        SUMMARIZE (
            CALCULATETABLE ( Indicador_Leite, PreviousDate ),
            Indicador_Leite[COD_PROPRIEDADE],
            "Qtd_Visitas", CALCULATE ( DISTINCTCOUNT ( Indicador_Leite[cod_visita] ) ),
            "Producao", CALCULATE ( SUM ( Indicador_Leite[producao_leite] ) )
        ),
        [Qtd_Visitas] >= 12
    )
RETURN
    SUMX ( FazendasVisitadas, [Producao] )
Qtd Propriedades Período 1 = 
// Criando as variaveis de Data
VAR CurrentDate =
    MAX ( dCalendario[Date] ) // Pegando a data que eu selecionei no filtro
VAR PreviousDate = DATESINPERIOD(dCalendario[Date], CurrentDate, -1, YEAR) //Pegando essa data que eu selecionei e voltando 12 meses
VAR FazendasVisitadas =
    FILTER (
        SUMMARIZE (
            CALCULATETABLE ( Indicador_Leite, PreviousDate ),
            Indicador_Leite[COD_PROPRIEDADE],
            "Qtd_Visitas", CALCULATE ( DISTINCTCOUNT ( Indicador_Leite[cod_visita] ) ),
            "Producao", CALCULATE ( SUM ( Indicador_Leite[producao_leite] ) )
        ),
        [Qtd_Visitas] >= 12
    )
RETURN
COUNTROWS(
    FazendasVisitadas
)
Qtd Propriedades Período 2 = 
// Criando as variaveis de Data
// Pegando a data que eu selecionei no filtro
VAR CurrentDate =
    CALCULATE(MAX ( dCalendario2[Date] ),USERELATIONSHIP(dCalendario2[Date],Indicador_Leite[data_referencia]),ALL(dCalendario))
VAR PreviousDate = DATESINPERIOD(dCalendario2[Date], CurrentDate, -1, YEAR) //Pegando essa data que eu selecionei e voltando 12 meses
VAR FazendasVisitadas =
    FILTER (
        SUMMARIZE (
            CALCULATETABLE ( 
                Indicador_Leite, 
                PreviousDate,
                USERELATIONSHIP(dCalendario2[Date],Indicador_Leite[data_referencia]),
                ALL(dCalendario) 
                ),
            Indicador_Leite[COD_PROPRIEDADE],
            "Qtd_Visitas", CALCULATE ( DISTINCTCOUNT ( Indicador_Leite[cod_visita] ) ),
            "Producao", CALCULATE ( SUM ( Indicador_Leite[producao_leite] ) )
        ),
        [Qtd_Visitas] >= 12
    )
RETURN
COUNTROWS(
    FazendasVisitadas
)
Aux Cenário 02: Produção Anual de Leite Período 2 = 
// Criando as variaveis de Data
// Pegando a data que eu selecionei no filtro
VAR CurrentDate =
    CALCULATE(MAX ( dCalendario2[Date] ),USERELATIONSHIP(dCalendario2[Date],Indicador_Leite[data_referencia]),ALL(dCalendario)) 
VAR PreviousDate = DATESINPERIOD(dCalendario2[Date], CurrentDate, -1, YEAR) //Pegando essa data que eu selecionei e voltando 12 meses
VAR vSelecao1 = 
FILTER(
    VALUES(Indicador_Leite[cod_propriedade]),
    [Qtd Propriedades Período 1] > 0
)
VAR vSelecao2 =
CALCULATETABLE(
    FILTER(
        VALUES(Indicador_Leite[cod_propriedade]),
        [Qtd Propriedades Período 2] > 0
    ),
    ALL(dCalendario)
)
VAR TabelaIntersect =
COUNTROWS(
    INTERSECT(vSelecao1,vSelecao2)
)
RETURN
IF(
    NOT ISBLANK(TabelaIntersect),
    CALCULATE(
        SUM ( Indicador_Leite[producao_leite] ),
        PreviousDate,
        ALL(dCalendario),
        USERELATIONSHIP(dCalendario2[Date],Indicador_Leite[data_referencia])
    )
)
Cenário 02: Produção Anual de Leite Período 2 = 
SUMX(
    VALUES(Indicador_Leite[cod_propriedade]),
    [Aux Cenário 02: Produção Anual de Leite Período 2]
)

 

Teste_Indicador.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Admin

Boa tarde @LuanRochaPrates

Para seu objetivo utilize a função INTERSECT (Retorna a interseção de linha entre duas tabelas, retendo as duplicatas.) dessa forma só vai aparecer as propriedades que estão do lado "A" e "B". 



Segue documentação:
https://learn.microsoft.com/pt-br/dax/intersect-function-dax




Sucesso! 🚀

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
8 minutos atrás, Tiago Craici disse:

Segue um exemplo utilizando a função INTERSECT, basta adaptar a sua medida trocando a terceira linha COUNT para seu calculo e demais filtros passados pela função CALCULATE:


image.png.535930cfd2dc8ef0cb4a09d85c843b1d.png

 

Creio que nesse caso não dá para me atender, Tiago, pq eu não tenho 2 tabelas diferentes, o que eu tenho seria uma Medida, onde nessa medida eu apenas considerei algumas propriedades especificas e a minha segunda medida deve considerar essas mesmas propriedades que foram consideradas na primeira situação, por exemplo:


 

eu fiz a minha medida 01 e no periodo de janeiro/2022 até dezembro/2022 eu contei a produção da propriedade 1,2,3,4 e 5

E na medida 02 eu filtrei o periodo tipo janeiro/2020 até dezembro/2020 e eu contei a produção da propriedade 1,2,5,7,8   .
Mas como eu ja fiz a medida 1, eu apenas teria que contar das propriedades 1,2 e 5 , que são as propriedades em comum entre o resultado da Medida 01 e a Medida 02

Teria alguma forma de eu gerar uma tabela virtual/dinamica dessas propriedades que foram consideradas?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
11 minutos atrás, Tiago Craici disse:

Entendi... 

Ver alguma forma de resolver isso?

É tipo assim ó, a minha medida 01 eu considerei essas propriedades tudinha ai, ai na minha medida 02 eu considerei aquelas outras ali. Mas na minha medida 01 o Cod.Propriedade só pode ser os que também apareceram na minha medida 01 ali.

WhatsApp Image 2023-01-13 at 14.11.30.jpeg

Link para o comentário
Compartilhar em outros sites

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

Ver alguma forma de resolver isso?

É tipo assim ó, a minha medida 01 eu considerei essas propriedades tudinha ai, ai na minha medida 02 eu considerei aquelas outras ali. Mas na minha medida 01 o Cod.Propriedade só pode ser os que também apareceram na minha medida 01 ali.

WhatsApp Image 2023-01-13 at 14.11.30.jpeg

Manda esse pbix , por favor

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
18 horas atrás, Erick Oliveira disse:

Boa noite Luan;

Para alcançar o resultado descrito foi necessário 5 medidas, aproveitei algumas partes que você tinha feito.


No arquivo em anexo, a tabela da esquerda irá mostrar a "Produção Anual de Leite" das propriedades  que tiveram "Qtd de Visitas" >= 12 nos últimos 12 meses com relação ao Período 01 selecionado.

A tabela da direta irá mostrar a "Produção Anual de Leite" das propriedades  que tiveram "Qtd de Visitas" >= 12 nos últimos 12 meses com relação ao Período 02 selecionado e apenas para as propriedades que apareceram na tabela da esquerda.

Não sei se acabei fazendo uma volta desnecessária mas acredito que funcionou. As medidas foram:

Cenário 02: 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 = DATESINPERIOD(dCalendario[Date], CurrentDate, -1, YEAR) //Pegando essa data que eu selecionei e voltando 12 meses
VAR FazendasVisitadas =
    FILTER (
        SUMMARIZE (
            CALCULATETABLE ( Indicador_Leite, PreviousDate ),
            Indicador_Leite[COD_PROPRIEDADE],
            "Qtd_Visitas", CALCULATE ( DISTINCTCOUNT ( Indicador_Leite[cod_visita] ) ),
            "Producao", CALCULATE ( SUM ( Indicador_Leite[producao_leite] ) )
        ),
        [Qtd_Visitas] >= 12
    )
RETURN
    SUMX ( FazendasVisitadas, [Producao] )
Qtd Propriedades Período 1 = 
// Criando as variaveis de Data
VAR CurrentDate =
    MAX ( dCalendario[Date] ) // Pegando a data que eu selecionei no filtro
VAR PreviousDate = DATESINPERIOD(dCalendario[Date], CurrentDate, -1, YEAR) //Pegando essa data que eu selecionei e voltando 12 meses
VAR FazendasVisitadas =
    FILTER (
        SUMMARIZE (
            CALCULATETABLE ( Indicador_Leite, PreviousDate ),
            Indicador_Leite[COD_PROPRIEDADE],
            "Qtd_Visitas", CALCULATE ( DISTINCTCOUNT ( Indicador_Leite[cod_visita] ) ),
            "Producao", CALCULATE ( SUM ( Indicador_Leite[producao_leite] ) )
        ),
        [Qtd_Visitas] >= 12
    )
RETURN
COUNTROWS(
    FazendasVisitadas
)
Qtd Propriedades Período 2 = 
// Criando as variaveis de Data
// Pegando a data que eu selecionei no filtro
VAR CurrentDate =
    CALCULATE(MAX ( dCalendario2[Date] ),USERELATIONSHIP(dCalendario2[Date],Indicador_Leite[data_referencia]),ALL(dCalendario))
VAR PreviousDate = DATESINPERIOD(dCalendario2[Date], CurrentDate, -1, YEAR) //Pegando essa data que eu selecionei e voltando 12 meses
VAR FazendasVisitadas =
    FILTER (
        SUMMARIZE (
            CALCULATETABLE ( 
                Indicador_Leite, 
                PreviousDate,
                USERELATIONSHIP(dCalendario2[Date],Indicador_Leite[data_referencia]),
                ALL(dCalendario) 
                ),
            Indicador_Leite[COD_PROPRIEDADE],
            "Qtd_Visitas", CALCULATE ( DISTINCTCOUNT ( Indicador_Leite[cod_visita] ) ),
            "Producao", CALCULATE ( SUM ( Indicador_Leite[producao_leite] ) )
        ),
        [Qtd_Visitas] >= 12
    )
RETURN
COUNTROWS(
    FazendasVisitadas
)
Aux Cenário 02: Produção Anual de Leite Período 2 = 
// Criando as variaveis de Data
// Pegando a data que eu selecionei no filtro
VAR CurrentDate =
    CALCULATE(MAX ( dCalendario2[Date] ),USERELATIONSHIP(dCalendario2[Date],Indicador_Leite[data_referencia]),ALL(dCalendario)) 
VAR PreviousDate = DATESINPERIOD(dCalendario2[Date], CurrentDate, -1, YEAR) //Pegando essa data que eu selecionei e voltando 12 meses
VAR vSelecao1 = 
FILTER(
    VALUES(Indicador_Leite[cod_propriedade]),
    [Qtd Propriedades Período 1] > 0
)
VAR vSelecao2 =
CALCULATETABLE(
    FILTER(
        VALUES(Indicador_Leite[cod_propriedade]),
        [Qtd Propriedades Período 2] > 0
    ),
    ALL(dCalendario)
)
VAR TabelaIntersect =
COUNTROWS(
    INTERSECT(vSelecao1,vSelecao2)
)
RETURN
IF(
    NOT ISBLANK(TabelaIntersect),
    CALCULATE(
        SUM ( Indicador_Leite[producao_leite] ),
        PreviousDate,
        ALL(dCalendario),
        USERELATIONSHIP(dCalendario2[Date],Indicador_Leite[data_referencia])
    )
)
Cenário 02: Produção Anual de Leite Período 2 = 
SUMX(
    VALUES(Indicador_Leite[cod_propriedade]),
    [Aux Cenário 02: Produção Anual de Leite Período 2]
)

 

Teste_Indicador.pbix 5.12 MB · 1 download

Eaew, Erick, cara, creio que seja bem por esse caminho mesmo que você fez, consegue me adicionar para eu tirar apenas algumas dúvidas aqui ctg que eu não entendi muito bem?

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...