Ir para conteúdo
  • 0

ISBLANK muito lento


douglasfabiano
Ir para solução Solucionado por douglasfabiano ,

Pergunta

  • Alunos

Boa tarde Pessoal, alguma dica do motivo de a opção ISBLANK deixa muito lento esse calculo?

leva mais de 1min para carregar uma tabela simples, se retornar apenas ( vInadimplencia  *-1), fica rápido (normal)
 

Vlr. Inadimplência Pag. = 
VAR vInadimplencia = 
CALCULATE(
    SUM(fTitulosPagar[valor]),
    fTitulosPagar[status] <> "Pago",
    fTitulosPagar[PMA] > 0,
    USERELATIONSHIP(dCalendario[Data], fTitulosPagar[dataVencimento])
)
RETURN
IF(
    ISBLANK(vInadimplencia),
    0,
    vInadimplencia  *-1
)

 

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Pois melhorou um pouco, mas não o suficiente.

estive verificando que o problema tbm está relacionado está a relação abaixo, mas ela não é bidirecional, quando removi esse relacionamento ficou instantâneo.

Não é direct Query, pois nesse eu ja tive problema de lentidão, mas porque envolvia consultas grandes todas as vezes.

    USERELATIONSHIP(dCalendario[Data], fTitulosPagar[dataVencimento])

 

relacionamento.PNG

Editado por douglasfabiano
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @douglasfabiano, tenta assim:

 


VAR vInadimplencia = 
CALCULATE(
    SUM(fTitulosPagar[valor]),
    fTitulosPagar[status] <> "Pago",
    fTitulosPagar[PMA] > 0,
    USERELATIONSHIP(dCalendario[Data], fTitulosPagar[dataVencimento])
)
RETURN
IF(
    vInadimplencia,
    vInadimplencia  *-1, 0
)

Espero ter ajudado.

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

bom dia, fiz o teste agora e continuou lento.
e de certeza a lentidão esta no IF, pois se remove-lo e deixar apenas o calculate fica instantâneo a atualização dos visuais

Assim Rápido

vInadimplencia = 
CALCULATE(
    SUM(fTitulosPagar[valor]),
    fTitulosPagar[status] <> "Pago",
    fTitulosPagar[PMA] > 0,
    USERELATIONSHIP(dCalendario[Data], fTitulosPagar[dataVencimento])
)


Assim lento ou com isblank tbm

Vlr. Inadimplência Pag. = 
VAR vInadimplencia = 
CALCULATE(
    SUM(fTitulosPagar[valor]),
    fTitulosPagar[status] <> "Pago",
    fTitulosPagar[PMA] > 0,
    USERELATIONSHIP(dCalendario[Data], fTitulosPagar[dataVencimento])
)
RETURN
IF(
   vInadimplencia,
   vInadimplencia  *-1,0
)
Editado por douglasfabiano
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @douglasfabiano!

Se a sua necessidade for apenas mostrar 0 quando não tiver valor, para não ficar "branco" no cartão/visual, coloca sem o IF e um "+0" no final da sua medida.

Olhando a sua medida não consigo saber o porque está lento, aparentemente não deveria, talvez seja algum relacionamento na modelagem como bidirecional, algo assim. De qualquer forma, se for apenas mostrar 0 acho que esse recurso lhe atende, é como fazemos aqui para não ficar validando se está branco.

Vlr. Inadimplência Pag. = 
VAR vInadimplencia = 
CALCULATE(
    SUM(fTitulosPagar[valor]),
    fTitulosPagar[status] <> "Pago",
    fTitulosPagar[PMA] > 0,
    USERELATIONSHIP(dCalendario[Data], fTitulosPagar[dataVencimento])
)
RETURN
   vInadimplencia  *-1
+0

 

 

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @douglasfabiano!

Não faz muito sentido dar essa lentidão toda por causa disso, só se a sua Calendário está sendo montada de forma dinâmica e tem alguma data bem antiga em uma das suas tabelas, daí cria uma dimensão gigante.

Outra possibilidade é você estar com a configuração de hierarquia automática de data, que cria uma dimensão calendário para cada campo de data das suas tabelas, essa é uma configuração que deve sempre ficar desligada para evitar esse problema.

Essas duas situações que falei são coisas que o Leo sempre menciona quando fala de problemas de performance por causa de algo errado na ETL/modelagem.

  • Thanks 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa tarde Michele,

tem como dar estrelinhas para a sua reposta? olha só eu sempre utilizo uma dCalendrio montada por mim, nesse utilizaram a opção CALENDARAUTO, e adivinha? um lançamento com data de 9202-01-01.

Muito Obrigado mesmo, pois se nao fosse esse seu comentario meu feriado seria uma droga....heheheh

 

dCalendario = CALENDARAUTO()
  • Like 1
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...