Ir para conteúdo
  • 0

Melhorar Performance DAX


Jeferson Souza
Ir para solução Solucionado por Tiago Craici - Xperiun ,

Pergunta

  • Alunos

Pessoal Boa tarde!
Alguém tem alguma sugestão de como melhorar esse dax ?
Está mega pesado de carregar no meu modelo 

dax tem o mesmo conceito para as variáveis é uma condicional.. que me devolve um valor x 



 

Pagamento Real =
var _menorque50 =
    SUMX (
        FILTER (
            VALUES ( dProduto[Subtipo_02] ),
            [%Acelerador%] < [50%]
        ),
       
        IF(dProduto[Subtipo_02]="100 - STATIONERY",0,
        IF(dProduto[Subtipo_02]="200 - LIGHTER",0,
        IF(dProduto[Subtipo_02]="416 - SIMPLY SOLEIL",0,
        IF(dProduto[Subtipo_02]="518 - COMFORT 3 ACTION",0,
        IF(dProduto[Subtipo_02]="755 - BIC 3",0,""))))))
 
var vAtingiu =
 
     SUMX (
        FILTER (
            VALUES ( dProduto[Subtipo_02] ),
            [%Acelerador%] > [100%]
        ),
       
        IF(dProduto[Subtipo_02]="100 - STATIONERY",[Real]*[%Pagamento],
        IF(dProduto[Subtipo_02]="200 - LIGHTER",[Real]*[%Pagamento],
        IF(dProduto[Subtipo_02]="416 - SIMPLY SOLEIL",[Real]*[%Pagamento],
        IF(dProduto[Subtipo_02]="518 - COMFORT 3 ACTION",[Real]*[%Pagamento],
        IF(dProduto[Subtipo_02]="755 - BIC 3",[Real]*[%Pagamento],""))))))
 
Var
vMaiorque50=
    SUMX (
        FILTER (
            VALUES ( dProduto[Subtipo_02] ),
             [%Acelerador%] > [50%] && [%Acelerador%] < [100%]
        ),
       
        IF(dProduto[Subtipo_02]="100 - STATIONERY",[Real] * [%Pagamento] * [%Acelerador%],
        IF(dProduto[Subtipo_02]="200 - LIGHTER",[Real] * [%Pagamento] * [%Acelerador%],
        IF(dProduto[Subtipo_02]="416 - SIMPLY SOLEIL",[Real] * [%Pagamento] * [%Acelerador%],
        IF(dProduto[Subtipo_02]="518 - COMFORT 3 ACTION",[Real] * [%Pagamento] * [%Acelerador%],
        IF(dProduto[Subtipo_02]="755 - BIC 3",[Real] * [%Pagamento] * [%Acelerador%],""
   
))))))
       
 
RETURN
 
_menorque50+vAtingiu+vMaiorque50
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Olá @Jeferson Souza, se trocar esse filtro dessas descrições como por exemplo "100 - STATIONERY" por um ID em número acredito que pode te ajudar ai.

Outra coisa seria substiuir esses IF's por Switch também pode ajudar:

Exemplo da variável:

var _menorque50 =
SUMX (
        FILTER (
            VALUES ( dProduto[Subtipo_02] ),
            [%Acelerador%] < [50%]
        ),
SWITCH(
       SELECTEDVALUE(dProduto[Subtipo_02]),
       "100 - STATIONERY", 0,
        "200 - LIGHTER", 0,
        "416 - SIMPLY SOLEIL", 0,
        "518 - COMFORT 3 ACTION",0,
        "755 - BIC 3",0
)
)

Acredito que pode ajudar ai, mas se trabalhar com ID's é menos caracteres pra procurar e tende a ser mais rápido.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Em 18/08/2023 em 17:28, Renato Carlos Rossato disse:

Olá @Jeferson Souza, se trocar esse filtro dessas descrições como por exemplo "100 - STATIONERY" por um ID em número acredito que pode te ajudar ai.

Outra coisa seria substiuir esses IF's por Switch também pode ajudar:

Exemplo da variável:

var _menorque50 =
SUMX (
        FILTER (
            VALUES ( dProduto[Subtipo_02] ),
            [%Acelerador%] < [50%]
        ),
SWITCH(
       SELECTEDVALUE(dProduto[Subtipo_02]),
       "100 - STATIONERY", 0,
        "200 - LIGHTER", 0,
        "416 - SIMPLY SOLEIL", 0,
        "518 - COMFORT 3 ACTION",0,
        "755 - BIC 3",0
)
)

Acredito que pode ajudar ai, mas se trabalhar com ID's é menos caracteres pra procurar e tende a ser mais rápido.

Espero ter ajudado.

Bom dia!
Alterei aqui!

mas continua pesado, esse dax está acabando com meu projeto, será que existe uma maneira de melhorar ele.. acho que é essa multiplicação no final que está deixando pesado.
Será que colocando uma variável ficaria mais leve ?

 

PGTO 02 =
 
    SUMX (
        FILTER (
            VALUES ( dProduto[Subtipo_02 - Copiar] ),
             [%Acelerador%] > [50%] && [%Acelerador%] < [100%]
        ), SWITCH(dProduto[Subtipo_02 - Copiar],
       
        "100",[Real] * [%Pagamento] * [%Acelerador%],
       "200",[Real] * [%Pagamento] * [%Acelerador%],
        "416",[Real] * [%Pagamento] * [%Acelerador%],
        "518",[Real] * [%Pagamento] * [%Acelerador%],
       "755",[Real] * [%Pagamento] * [%Acelerador%],""
   
))
Link para o comentário
Compartilhar em outros sites

  • 0
  • Admin
18 minutos atrás, Jeferson Souza disse:

Bom dia!
Alterei aqui!

mas continua pesado, esse dax está acabando com meu projeto, será que existe uma maneira de melhorar ele.. acho que é essa multiplicação no final que está deixando pesado.
Será que colocando uma variável ficaria mais leve ?

 

PGTO 02 =
 
    SUMX (
        FILTER (
            VALUES ( dProduto[Subtipo_02 - Copiar] ),
             [%Acelerador%] > [50%] && [%Acelerador%] < [100%]
        ), SWITCH(dProduto[Subtipo_02 - Copiar],
       
        "100",[Real] * [%Pagamento] * [%Acelerador%],
       "200",[Real] * [%Pagamento] * [%Acelerador%],
        "416",[Real] * [%Pagamento] * [%Acelerador%],
        "518",[Real] * [%Pagamento] * [%Acelerador%],
       "755",[Real] * [%Pagamento] * [%Acelerador%],""
   
))

Bom dia! 

Crie um variável para essa parte ( [Real] * [%Pagamento] * [%Acelerador%] ) e retorne a mesma quando necessário nos cálculos abaixo da sua medida.

Link para o comentário
Compartilhar em outros sites

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

Bom dia! 

Crie um variável para essa parte ( [Real] * [%Pagamento] * [%Acelerador%] ) e retorne a mesma quando necessário nos cálculos abaixo da sua medida.

@Tiago Craici,  bom dia, melhorou um pouco, mas permanece pesado, não carrega a quando deixo a base toda.
será que tem oportunidade de melhorar mais alguma coisa ?



 

PGTO 02 =
var vRacional= [Real] * [%Pagamento] * [%Acelerador%]
 
return
    SUMX (
        FILTER (
            VALUES ( dProduto[Subtipo_02 - Copiar] ),
             [%Acelerador%] > [50%] && [%Acelerador%] < [100%]
        ), SWITCH(dProduto[Subtipo_02 - Copiar],
       
        "100",vRacional,
       "200",vRacional,
        "416",vRacional,
        "518",vRacional,
       "755",vRacional,""
   
))
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...