Ir para conteúdo
  • 0

ISBLANK muito lento


douglasfabiano
Ir para solução Solucionado por douglasfabiano ,

Pergunta

  • Membros

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
  • Membros
  • 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
  • Membros

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.

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

  • 0
  • Membros

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
  • Membros

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

 

 

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

  • 0
  • Membros

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.

  • Obrigado(a) 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

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()
  • Gostei 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...