Ir para conteúdo
  • 0

Forma mais eficiente de realizar uma busca dinâmica em tabela - problemas


renanvg7
Ir para solução Solucionado por Bruno Abdalla de Souza ,

Pergunta

  • Alunos

Olá pessoal, tudo bem?

Estou com um problema bem específico, em que mesmo sabendo solucionar na teoria, acabo tendo problemas de desempenho por estar usando um modelo muito pesado.

Coloquei como exemplo abaixo uma tabela fato, onde tenho viagens de veículos com pesos iniciais das viagens.

Preciso criar uma medida que calcule o peso inicial da próxima viagem desse mesmo veículo.

Parece bastante simples trabalhando com filtros e com ALL, porém a tabela real com que eu trabalho está num datalake gigante, com informações do mundo inteiro, e ao testar funções como essas o resultado ou demora muito ou simplesmente o sistema não carrega os cálculos.

Estava quebrando a cabeça ao tentar usar a função nova OFFSET do Power BI também, mas não consegui achar uma forma eficiente de verificar a próxima viagem imediata para um mesmo veículo.

Alguma sugestão?

Obg.

image.png.8a20d97b72e30c4cd6fb176ba003f80d.png

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Peso próxima viagem v1 = 
    VAR vFrota = MAX('Página1'[Veículo])
    VAR vData = MAX('Página1'[Data início viagem])
    VAR vTab = 
        CALCULATETABLE(
            ALLSELECTED('Página1'),
            KEEPFILTERS('Página1'[Data início viagem] > vData && 
            'Página1'[Veículo] = vFrota)
        )
    VAR vMenorData = 
        CALCULATE(
            MIN('Página1'[Data início viagem]),
            vTab
        )
RETURN
    CALCULATE(
        MAX('Página1'[Peso inicial]),
        FILTER(
            vTab,
            [Data início viagem] = vMenorData
        )
    )

@renanvg7, tenta isso.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Será que você não está trazendo resultados demais nos visuais? Se são muitos dados, não seria o caso de tentar agregar mais os dados em outra tabela, diminuindo seu tamanho? Sem ver seu modelo de dados real e sua complexidade, fica difícil de ajudar. Se puder, anexe um pbix, por favor.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa tarde @renanvg7
Tudo bem?

Seguindo na linha do amigo @Bruno Abdalla de Souza, verifique se é possível utilizar a atualização incremental. Dessa forma você trabalha somente com uma parte dos dados do datalake que você precisa pra desenvolver, e o restante você traz no serviço do Power BI. Dessa forma, seu desenvolvimento fica performático.

Se essas dicas não ajudarem, tente anexar o pbix pra gente dar uma olhada.

Sucesso aí!

Se esta resposta resolver seu problema, gentileza classificá-la como Solução 

Atenciosamente,

Bernardo Vitor
(31) 99116-6134
LinkedIn: https://www.linkedin.com/in/bernardo-vitor

Link para o comentário
Compartilhar em outros sites

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

Será que você não está trazendo resultados demais nos visuais? Se são muitos dados, não seria o caso de tentar agregar mais os dados em outra tabela, diminuindo seu tamanho? Sem ver seu modelo de dados real e sua complexidade, fica difícil de ajudar. Se puder, anexe um pbix, por favor.

Bruno e Bernardo, boa noite. Na verdade, pode considerar essa tabela como sendo um exemplo concreto. O problema que tenho é que o modelo de dados não está com as tabelas disponíveis diretamente, é uma conexão direta a um modelo na nuvem da azure, eu não tenho ela disponível para reduzir ou para fazer atualização incremental. Eu também não consigo gerar o pbix com uma conexão direta, pois é da companhia e sigiloso. Só precisaria de uma fórmula dax mais eficiente para avaliar a linha seguinte de uma tabela filtrada pelo veículo, que está exatamente no molde que enviei na foto.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Veja se ajuda @renanvg7

Peso próxima viagem v1 = 
    VAR vFrota = MAX('Página1'[Veículo])
    VAR vData = MAX('Página1'[Data início viagem])
    VAR vTab = 
        FILTER(
                ALL('Página1'),
                'Página1'[Data início viagem] > vData && 
                'Página1'[Veículo] = vFrota
            )
    VAR vMenorData = 
        CALCULATE(
            MIN('Página1'[Data início viagem]),
            vTab
        )
RETURN
    CALCULATE(
        MAX('Página1'[Peso inicial]),
        FILTER(
            vTab,
            [Data início viagem] = vMenorData && 
            [Veículo] = vFrota
        )
    )

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Em 13/10/2022 em 18:15, Bruno Abdalla de Souza disse:

Veja se ajuda @renanvg7

Peso próxima viagem v1 = 
    VAR vFrota = MAX('Página1'[Veículo])
    VAR vData = MAX('Página1'[Data início viagem])
    VAR vTab = 
        FILTER(
                ALL('Página1'),
                'Página1'[Data início viagem] > vData && 
                'Página1'[Veículo] = vFrota
            )
    VAR vMenorData = 
        CALCULATE(
            MIN('Página1'[Data início viagem]),
            vTab
        )
RETURN
    CALCULATE(
        MAX('Página1'[Peso inicial]),
        FILTER(
            vTab,
            [Data início viagem] = vMenorData && 
            [Veículo] = vFrota
        )
    )

 

@Bruno Abdalla de Souza infelizmente não funcionou... acredito que o uso do ALL pode ser pesado demais para essa base...

Se não houver alternativa, acredito que eu vá ter que solicitar a disponibilidade dessa informação na forma de colunas para a equipe de desenvolvimento global, mas estava esgotando as possibilidades antes com o DAX.

image.png.2cad71787551e388a89d0d3e2bfcf386.png

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