Ir para conteúdo
  • 0

MELHORAR MEDIDA PELO CONTEXTO


FrancoAndre

Pergunta

  • Alunos

Olá à todos!

Senhores, estou com dificuldades de fazer manutenção nessa medida por ser bem complexa. A matriz é uma divisão de meses por Anos Anteriores e Ano Atual, onde o Ano Atual é o ano máximo do contexto e o Anos Anteriores é tudo anterior ao ano máximo. 

Seria retirar os valores onde no contexto total é R$ 0,00 e deixa em branco ou BLANK( ).

Na visão por coluna alguns meses estão informando 0 quando o ano do contexto está sem filtro, o correto deveria ser semelhante a quando selecionamos o ano 2024. 

Algumas contas, exemplo 00931 - CUSTOS GESTOR90 informa valores R$ 0,00, porém no total geral informa que há valores negativos quando não há filtros de ano selecionados. Quando selecionamos somente 2023 conseguimos visualizar os valores e dessa forma também deveria aparece quando a matriz não estivesse com filtros selecionado.

Screenshot_2.png.f0588b2eedec8fef54afe78c150f843e.png

 

A medida é a Anos Dinamico e está um pouco extenso para informar aqui, mas deixarei o pbix em anexo para quem puder ajudar.

 

Ajuda Matriz com 0.pbix

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
21 horas atrás, Bruno Abdalla de Souza disse:

@André Franco, a medida é complexa. O ideal seria vc colocar quais são as regras envolvidas. Este trabalho de debugar sua medida, que parece ser complexa, leva muito tempo.
Para que possa te ajudar mais, preciso das regras envolvidas nos cálculos desta matriz.

Bruno, as primeiras etapas da medida faz uma divisão do que é mês anterior e atual sendo que mês atual é o ano máximo do contexto e anos anteriores é tudo anterior ao ano máximo. Na tabela auxAnosAnteriores o [Id] 1 é Anos Anteriores e 2 Ano Atual. A primeira condição da SWITCH deixa equivalente os meses com valores baseado no ano atual, ou seja, se estamos em julho de 2024 no Ano Atual nos Anos Anteriores deve ter valores até julho, isso considerando quando não há filtro de ano selecionado. Já o restante dos argumentos da switch é auto explicativo:

image.png.8e08e65703605f940610ed9b7f0952cf.png

 
Já nas outras etapas da medida é para corrigir o problema de níveis de contas da hierarquia da matriz que estão em branco, como o exemplo abaixo:

image.png.d071b811172a201aa4558346bce68192.png

image.png.8ee642271149ccbba7a15a1b022ed884.png

 

Porém, como exemplifiquei no início do post, ainda aparece contas em branco.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@FrancoAndre, veja se assim está correto.

Anos Dinamico = 
VAR vAnoAtual = 
CALCULATE(
    YEAR(MAX(fLancamento[DataConjunto])),
    FILTER(
        ALLSELECTED(fLancamento),
        [Realizado]
    )
)
VAR vValoresAnoAtual = 
CALCULATE(
    [Realizado],
    YEAR(fLancamento[DataConjunto]) = vAnoAtual
)

VAR vRealizadoAnosAnteriores = 
CALCULATE(
    [Realizado],
    dCalendario[Ano] < vAnoAtual
)
VAR vRealizadoAnoAtual = 
CALCULATE(
    [Realizado],
    dCalendario[Ano] = vAnoAtual
)
VAR vContextoAnos = 
SWITCH(
    TRUE(),
    SELECTEDVALUE(auxAnosAnteriores[Id]) = 1, IF(ISBLANK(vValoresAnoAtual), BLANK(),COALESCE(vRealizadoAnosAnteriores,0)), 
    SELECTEDVALUE(auxAnosAnteriores[Id]) = 1, vRealizadoAnosAnteriores,
    SELECTEDVALUE(auxAnosAnteriores[Id]) = 2, vRealizadoAnoAtual,
    NOT(ISINSCOPE(auxAnosAnteriores[Id])), [Realizado] //resolve o problema da coluna total com a soma de anos anteriores e atual
)
VAR vContexto = [Contexto]
VAR vSubTotal = SELECTEDVALUE(dPlanoContas[Subtotal])
VAR N2 = SELECTEDVALUE(dPlanoContas[N2_UNIF])
VAR N3 = SELECTEDVALUE(dPlanoContas[N3_UNIF])
VAR vTotalPlan = CALCULATE([Planejado], ALL(dCalendario))
VAR vTotalReal = CALCULATE([Realizado], ALL(dCalendario))
VAR vCondicao = 
SWITCH(
    TRUE,
    vTotalPlan < 0.001 && vTotalReal < 0.001, BLANK(),
    vSubTotal = 1 && vContexto = "1", COALESCE(vContextoAnos, 0),
    vSubTotal = 0 && vContexto = "4", BLANK(),
    vContexto && vSubTotal = 1, BLANK(),
    vSubTotal = 1 && (ISBLANK(N2) || ISBLANK(N3)), BLANK(),
    vSubTotal = 0, COALESCE(vContextoAnos, 0)
)
RETURN
vCondicao

 

20240715_Ajuda Matriz com 0.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Em 15/07/2024 em 14:14, Bruno Abdalla de Souza disse:

@FrancoAndre, veja se assim está correto.

Anos Dinamico = 
VAR vAnoAtual = 
CALCULATE(
    YEAR(MAX(fLancamento[DataConjunto])),
    FILTER(
        ALLSELECTED(fLancamento),
        [Realizado]
    )
)
VAR vValoresAnoAtual = 
CALCULATE(
    [Realizado],
    YEAR(fLancamento[DataConjunto]) = vAnoAtual
)

VAR vRealizadoAnosAnteriores = 
CALCULATE(
    [Realizado],
    dCalendario[Ano] < vAnoAtual
)
VAR vRealizadoAnoAtual = 
CALCULATE(
    [Realizado],
    dCalendario[Ano] = vAnoAtual
)
VAR vContextoAnos = 
SWITCH(
    TRUE(),
    SELECTEDVALUE(auxAnosAnteriores[Id]) = 1, IF(ISBLANK(vValoresAnoAtual), BLANK(),COALESCE(vRealizadoAnosAnteriores,0)), 
    SELECTEDVALUE(auxAnosAnteriores[Id]) = 1, vRealizadoAnosAnteriores,
    SELECTEDVALUE(auxAnosAnteriores[Id]) = 2, vRealizadoAnoAtual,
    NOT(ISINSCOPE(auxAnosAnteriores[Id])), [Realizado] //resolve o problema da coluna total com a soma de anos anteriores e atual
)
VAR vContexto = [Contexto]
VAR vSubTotal = SELECTEDVALUE(dPlanoContas[Subtotal])
VAR N2 = SELECTEDVALUE(dPlanoContas[N2_UNIF])
VAR N3 = SELECTEDVALUE(dPlanoContas[N3_UNIF])
VAR vTotalPlan = CALCULATE([Planejado], ALL(dCalendario))
VAR vTotalReal = CALCULATE([Realizado], ALL(dCalendario))
VAR vCondicao = 
SWITCH(
    TRUE,
    vTotalPlan < 0.001 && vTotalReal < 0.001, BLANK(),
    vSubTotal = 1 && vContexto = "1", COALESCE(vContextoAnos, 0),
    vSubTotal = 0 && vContexto = "4", BLANK(),
    vContexto && vSubTotal = 1, BLANK(),
    vSubTotal = 1 && (ISBLANK(N2) || ISBLANK(N3)), BLANK(),
    vSubTotal = 0, COALESCE(vContextoAnos, 0)
)
RETURN
vCondicao

 

20240715_Ajuda Matriz com 0.pbix 2.5 MB · 1 download

Bruno, não seria dessa forma. 
Iniciei várias tentativa para descrever da melhor forma o que pretendo com a medida, mas como seria muito informação preferi fazer um vídeo pra explicar. No link abaixo demostrei o que pretendo com a medida, algumas mudanças que fiz tentando resolver o problema e detalhei melhor o processo de criação da medida.

https://drive.google.com/file/d/1EJRlLK0NVGa799CiCLAGQmWoOdTH9vLb/view?usp=sharing

Upei novamente o arquivo com as alterações que fiz durante o vídeo.

Agradeço mais uma vez imensamente a sua disposição.

Ajuda Matriz com 0.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Se você filtrar 2022, por exemplo, este seria o "ano atual" e os anos anteriores seria todos os anos anteriores a 2022?

R: Exatamente

Se você filtrar 2024 e 2021, o ano atual será 2024 e os anos anteriores será 2021?

R: Exatamente

O ideal seria colocar o ano com seleção única, porém foi orientado a necessidade de selecionar mais de um ano

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@FrancoAndre, veja se é isso:

Anos Dinamico = 
VAR vAnoAtual = 
CALCULATE(
    MAX(dCalendario[Ano]),
    ALLSELECTED(dCalendario)
)
VAR vMesAtual = 
CALCULATE(
    MAX(dCalendario[Mês]),
    FILTER(
        ALLSELECTED(dCalendario),
        dCalendario[Ano] = vAnoAtual &&
        [Realizado] > 0
    )
)
VAR vValoresAnoAtual = 
CALCULATE(
    [Realizado],
    YEAR(fLancamento[DataConjunto]) = vAnoAtual
)
VAR vAnosAnteriores = 
    CALCULATETABLE(
        VALUES(dCalendario[Ano]),
        dCalendario[Ano] < vAnoAtual
    )
VAR vRealizadoAnosAnteriores = 
CALCULATE(
    [Realizado],
    FILTER(
        ALL(dCalendario),
        dCalendario[Ano] < vAnoAtual &&
        dCalendario[MesReduzido] IN VALUES(dCalendario[MesReduzido])
    )
)
VAR vRealizadoAnoAtual = 
CALCULATE(
    [Realizado],
    FILTER(
        ALL(dCalendario),
        dCalendario[Ano] = vAnoAtual &&
        dCalendario[MesReduzido] IN VALUES(dCalendario[MesReduzido])
    )
)
VAR vContextoAnos = 
SWITCH(
    TRUE(),
    SELECTEDVALUE(auxAnosAnteriores[Id]) = 1, vRealizadoAnosAnteriores,
    SELECTEDVALUE(auxAnosAnteriores[Id]) = 2, [Realizado],
    vRealizadoAnoAtual + vRealizadoAnosAnteriores
)
VAR vContexto = [Contexto]
VAR vSubTotal = SELECTEDVALUE(dPlanoContas[Subtotal])
VAR N2 = SELECTEDVALUE(dPlanoContas[N2_UNIF])
VAR N3 = SELECTEDVALUE(dPlanoContas[N3_UNIF])
VAR vTotalReal = 
    CALCULATE(
        [Realizado], 
        ALLSELECTED(dCalendario[Ano])
    )
VAR vCondicao = 
SWITCH(
    TRUE(),
    vTotalReal = 0, BLANK(),
    vSubTotal = 0 && vContexto = "4", BLANK(),
    vContexto && vSubTotal = 1, BLANK(),
    vSubTotal = 1 && (ISBLANK(N2) || ISBLANK(N3)), BLANK(),
    vSubTotal = 1 && vContexto = "1" || vSubTotal = 0, COALESCE(vContextoAnos, 0)
)
RETURN
vCondicao

 

20240717_Ajuda Matriz com 0.pbix

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