Ir para conteúdo
  • 0

Medidas com variáveis diversas


Patricia Paz
Ir para solução Solucionado por Alex Pereira ,

Pergunta

  • Alunos

Boa tarde pessoal, estou com um projeto complexo preciso de ajuda para criar medidas com as seguintes variáveis:
*FatBAse - precisa manter os filtros de contexto filial e data
- Se o nivel for = G  e  cargo  <> Garantista, retorna total faturado (OSVFaturada) - 1220594

- Se o cargo = Garantista, retorna total faturado (OSVFaturada) - Garantia -1172438

- Senão OSVFAturada por mecanicoid 

*Comissao
Fatbase  *  %comissao

image.png.03517e944b09a9b7f89c1fc7fb64deaa.png

Resultado esperado
image.png.f0f046e36dd4e16f7c894f0bd0ddc400.png

OSamostra (1).pbix

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

veja esse ajuste:

 

VAR vG1 = 
    CALCULATE(
        [OSVFaturada],
        ALLSELECTED(fServicos)
    )

VAR vG2 = 
    CALCULATE(
        [OSVFaturada] - [Garantia],
        ALLSELECTED(fServicos)
    )

VAR vO = 
    CALCULATE(
        [OSVFaturada]
    )

RETURN
    SWITCH(
        TRUE(),
        SELECTEDVALUE(dCargos[NivelH]) = "G", vG1,
        SELECTEDVALUE(dCargos[Cargo]) = "GARANTISTA", vG2,
        vO
    )

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Booom Diaaaa, não sei se entendi direito, mas uma forma de fazer isso seria usando um switch:

Esse é mais ou menos um exemplo ajuste conforme suas necessidades!

Medida = 
SWITCH(
    TRUE(),
    -- Condição para nível G e cargo diferente de Garantista
    SELECTEDVALUE(dcargos[NivelH]) = "G" && SELECTEDVALUE(dcargos[Cargo]) <> "Garantista",
        [OSVFaturada] - 1220594,
    
    -- Condição para cargo igual a Garantista
    SELECTEDVALUE(dcargos[Cargo]) = "Garantista",
        [OSVFaturada] - [Garantia] - 1172438,

    -- Condição padrão para OSVFaturada por mecanicoid
    SUMX(
        VALUES(fServicos[mecanicoid]),
        [OSVFaturada]
    )
)

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Bom dia Alex, esses valores que referencie é só para entendimento do que preciso ter na linha, não pode compor a medida.
Estou tentando aqui, mas acho que estou estruturando errado.
Na primeira variável tem que trazer o valor total de acordo com o  filtro de data e filial
na segunda variável tem que trazer o valor total de acordo com o  filtro de data e filial - garantia
na terceira variável tem que trazer o valor total individual do mecânico de acordo com o  filtro de data e filial - garantia

A expressão True/False não especifica uma coluna. Cada expressão True/False usada como expressão de filtro de tabela deve fazer referência exatamente a uma coluna.

FatBase =
VAR vG1 =
CALCULATE(
    [OSVFaturada],
    All(fServicos),
    VALUES(dCargos[NivelH]) = "G"  
)
VAR vG2 =
CALCULATE(
    [OSVFaturada]-[Garantia],
    All(fServicos),
    FILTER(dCargos,dCargos[NivelH] = "G")
)
VAR vO = [OSVFaturada]
 
RETURN
SWITCH(
    TRUE(),
        dCargos[Cargo] = "GARANTISTA", vG2,
        dCargos[NivelH] = "G", vG1,
        vO
)
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
13 horas atrás, Alex Pereira disse:

Booom Diaaaa, não sei se entendi direito, mas uma forma de fazer isso seria usando um switch:

Esse é mais ou menos um exemplo ajuste conforme suas necessidades!

Medida = 
SWITCH(
    TRUE(),
    -- Condição para nível G e cargo diferente de Garantista
    SELECTEDVALUE(dcargos[NivelH]) = "G" && SELECTEDVALUE(dcargos[Cargo]) <> "Garantista",
        [OSVFaturada] - 1220594,
    
    -- Condição para cargo igual a Garantista
    SELECTEDVALUE(dcargos[Cargo]) = "Garantista",
        [OSVFaturada] - [Garantia] - 1172438,

    -- Condição padrão para OSVFaturada por mecanicoid
    SUMX(
        VALUES(fServicos[mecanicoid]),
        [OSVFaturada]
    )
)

 

Consegue me ajudar a ajustar? Nem que for por partes, por exemplo criar a variavel que retorne o valor total mantendo os filtros externos em que o nivelh é g

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
28 minutos atrás, Alex Pereira disse:

veja esse ajuste:

 

VAR vG1 = 
    CALCULATE(
        [OSVFaturada],
        ALLSELECTED(fServicos)
    )

VAR vG2 = 
    CALCULATE(
        [OSVFaturada] - [Garantia],
        ALLSELECTED(fServicos)
    )

VAR vO = 
    CALCULATE(
        [OSVFaturada]
    )

RETURN
    SWITCH(
        TRUE(),
        SELECTEDVALUE(dCargos[NivelH]) = "G", vG1,
        SELECTEDVALUE(dCargos[Cargo]) = "GARANTISTA", vG2,
        vO
    )

 

Eu queria estruturar exatamente como você fez, por isso vou apontar como resolvido, vai me servir para as próximas vezes que eu precisar, o único problema é que não calculou a segunda variável, inclui o values pra distribuir corretamente entre os meses, mas fiz um pouco diferente, criei uma medida com o calculo [difMO] e fiz algumas alterações necessárias, funcionou:
 

VAR vGart =
IF(
    MAX ( dCargos[NivelH] ) = "G" && MAX ( dCargos[Cargo] ) = "Garantista",
    CALCULATE ( [DifMO], ALLSELECTED (), VALUES ( dCalendario[Data] ) )
)
 
VAR vNG =
IF(
    MAX ( dCargos[NivelH] ) = "G" && MAX ( dCargos[Cargo] ) <> "Garantista",
    CALCULATE ( [OSVFaturada], ALLSELECTED (), VALUES ( dCalendario[Data] ) )
)
 
VAR vOp = [OSVFaturada]
 
RETURN
    vGart + vNG + vOp
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...