Assuntos relacionados a criação de medidas, fórmulas e funções DAX, relacionamentos etc
#66963
Olá pessoal,

Tenho uma tabela com qtd de ordens, tipo, status e colunas de datas diferentes.

Ordens Relatado em Status Inicio Previsto Inicio Efetivo Termino Efetivo Tipo
1083414 22/01/2012 COMP 01/02/2012 02/02/2012 Anomalia
1548367 23/01/2012 COMP 02/02/2012 02/02/2012 Melhoria
1574186 24/01/2012 COMP 23/03/2012 24/03/2012 24/03/2012 Preventiva
1820084 25/01/2012 COMP 24/03/2012 24/03/2012 Corretiva

Dependo do TIPO (Anomalia, melhoria, preventiva, corretiva) eu uso como base uma das datas para realizar a analise. Então eu criei uma dcalendário para padronizar, mas o problema é a que a dcalendário só bate com a data do relatado em, se eu filtro por exemplo Preventiva , a data base deveria ser Inicio Previsto, mas se eu filtro a quantidade de preventivas usando a segmentação dcalendário, o número não é o mesmo se eu filtrasse direto pelo Inicio Previsto.

Gostaria de ajuda para padronizar essas datas e o BI entender a condição que se é anomalia a data que ele se deve basear é Inicio efetivo, se estou falando de preventiva, ele precisa partir do Inicio Previsto

Lembrando que eu tenho um gráfico que preciso relatar os tipos juntos, então por isso tentei padronizar a data

Obs. Testei alterando todas as opções do relacionamento, mas a data que prevalece é sempre a coluna que usei para criar a relação, ou seja, as outras colunas datas da base perdem o real valor.
Imagem
#66987
Conforme a base do Excel, eu tenho um total de 20 ordens, 3 foram relatadas em setembro e as outras em meses anteriores, porém foram executadas em setembro. No BI a dCalendário está relacionada com a coluna relatado em, então no eixo do gráfico, eu uso a dCalendário como data e a qtd de ordens filtrando setembro, porém no gráfico só mostra as 3 que foram relatadas em setembro e eu quero mostrar o acumulado (20), porque na coluna inicio efetivo e termino efetivo tem 17 que foram executadas esse mês o que leva a um total de 20 no mês.

Eu tentei com essa dax, porém quando coloco no gráfico que possuiu um filtro de data do mês vigente (setembro), ela só mostra as 3 e na verdade preciso mostrar as 20

Teste 3 =
VAR DataMin =
MIN('D - Calendário'[Data])
VAR DataMax =
MAX('D - Calendário'[Data])
RETURN
CALCULATE([Qtd Ordem de Serviço],
'Base do Maximo'[Status] IN {"COMP"},
FILTER('Base do Maximo','Base do Maximo'[Início Efetivo] >= DataMin && 'Base do Maximo'[Término Efetivo] <= DataMax)
)
Você não está autorizado a ver ou baixar esse anexo.
#67029
Deve ter uma maneira mais facil, mas veja se dá certo.

Se o tipo for igual a Preventiva, então fazer o relacionamento da dCalendario com a Inicio Previsto e deixar desativado, em seguida crie a medida abaixo
Código: Selecionar todos
Medida1 =
CALCULATE (
    [Qtd Ordem de Serviço],
    KEEPFILTERS ( Tabela[Tipo ] = "Preventiva" ),
    KEEPFILTERS ( Tabela[Status] IN { "COMP" } ),
    USERELATIONSHIP ( dCalendario[Date], Tabela[Inicio Previsto] )
Se o tipo for diferente da Preventiva, fazer a medida abaixo. Ela vai calcular as duas situações.
Código: Selecionar todos
Medida2 =
CALCULATE (
    [Qtd Ordem de Serviçodida1],
    KEEPFILTERS ( 'Base do Maximo'[Tipo ] <> "Preventiva" ),
    KEEPFILTERS ( Tabela[Status] IN { "COMP" } ),
) + [Medida1]
Felipe07 agradeceu por isso
#67038
Obrigado pela resposta Vilmar, eu criei a relação e não ativei, porém ele só me mostra o valor de setembro com essa medida, não traz o acumulado, que no caso seria as 20. Eu tentei adaptar essa medida assim:

Teste 1=
CALCULATE(
[Qtd Ordem de Serviço],
KEEPFILTERS ('Base do Maximo'[Status] in {"COMP"}),
USERELATIONSHIP ( 'D - Calendário'[Data], 'Base do Maximo'[Término Efetivo - Copiar]),
FILTER(ALL('Base do Maximo'[Término Efetivo - Copiar]),'Base do Maximo'[Término Efetivo - Copiar]<=MAX('Base do Maximo'[Término Efetivo - Copiar]
)))


Teste 2=
CALCULATE(
[Qtd Ordem de Serviço],
KEEPFILTERS ('Base do Maximo'[Status] in {"COMP"}),
FILTER(
ALLSELECTED('Base do Maximo'),
ISONORAFTER('Base do Maximo'[Término Efetivo - Copiar], MAX('Base do Maximo'[Término Efetivo - Copiar]), DESC)))

Porém ele só entende as 3 ordens desse mês, não mostra o total (20) que inclui outros meses
#67203
Vilmar escreveu: 19 Set 2021 às 15:33 Deve ter uma maneira mais facil, mas veja se dá certo.

Se o tipo for igual a Preventiva, então fazer o relacionamento da dCalendario com a Inicio Previsto e deixar desativado, em seguida crie a medida abaixo
Código: Selecionar todos
Medida1 =
CALCULATE (
    [Qtd Ordem de Serviço],
    KEEPFILTERS ( Tabela[Tipo ] = "Preventiva" ),
    KEEPFILTERS ( Tabela[Status] IN { "COMP" } ),
    USERELATIONSHIP ( dCalendario[Date], Tabela[Inicio Previsto] )
Se o tipo for diferente da Preventiva, fazer a medida abaixo. Ela vai calcular as duas situações.
Código: Selecionar todos
Medida2 =
CALCULATE (
    [Qtd Ordem de Serviçodida1],
    KEEPFILTERS ( 'Base do Maximo'[Tipo ] <> "Preventiva" ),
    KEEPFILTERS ( Tabela[Status] IN { "COMP" } ),
) + [Medida1]
Obrigado pela resposta Vilmar, eu criei a relação e não ativei, porém ele só me mostra o valor de setembro com essa medida, não traz o acumulado, que no caso seria as 20. Eu tentei adaptar essa medida assim:

Teste 1=
CALCULATE(
[Qtd Ordem de Serviço],
KEEPFILTERS ('Base do Maximo'[Status] in {"COMP"}),
USERELATIONSHIP ( 'D - Calendário'[Data], 'Base do Maximo'[Término Efetivo - Copiar]),
FILTER(ALL('Base do Maximo'[Término Efetivo - Copiar]),'Base do Maximo'[Término Efetivo - Copiar]<=MAX('Base do Maximo'[Término Efetivo - Copiar]
)))

Sugestão de solução, qq coisa[…]

Aqui está uma amostra, a ideia era bloquear[…]

Comentários nos códigos. Qualquer co[…]

Não ficou claro como vc quer realmente calc[…]

Botões

É possível, mas é sempre bom […]

Inicia uma nova mensagem e faz o upload da sua pla[…]

Tem. Facilita se vc deixa-las todas em uma mesma p[…]

Saldos

Me parece q vc teria de resolver essa inconsist&ec[…]