Ir para conteúdo
  • 0

Capturar código mais novo


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

Pergunta

10 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Oi Bruno é exatamente o que eu preciso muito obrigado.

Mas tem um probleminha minha base de dados tem 3milhões de linhas e eu gastei mais de 1h pra rodar essa transformação. Fora que estou consumindo dados da nuvem e tenho receio de ficar muito caro, será q teria uma transformação mais otimizada?

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Bruno Abdalla de Souza ainda ficou muito lento, to achando que talvez a melhor forma e tentar fazer essa transformação no bigquery antes de levar p power bi.

 

Aproveitando gostei muito da sua solução mas não entendi a 2° etapa, conseguiria me explicar como vc pensou por favor?

 

Obrigado pela ajuda!

 

= Table.AddColumn(AlteraTipoDados, "Cod_Perfil_Ajustadov1", each let
                    vCodCarga = _[Cod_Carga],
                    vDataMax = Table.SelectRows(AgrupaPorCodCargaDataMax, each ([Cod_Carga] = vCodCarga))[MES_MAX]{0},
                    vCodPerfil = AlteraTipoDados{[MES = vDataMax, Cod_Carga = vCodCarga]}[Cod_Perfil]

                in
                    vCodPerfil
                )

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Veja se esta solução com DAX melhora a performance.

Cod_Perfil_Ajustado_DAX = 
VAR vDataMax = 
    CALCULATE(
        MAX(Tabela_ComDAX[MES]), 
        ALLEXCEPT(Tabela_ComDAX, Tabela_ComDAX[Cod_Carga])
    )
VAR vCod_Perfil = 
    CALCULATE(
        MAX(Tabela_ComDAX[Cod_Perfil]),
        FILTER(
            ALLEXCEPT(Tabela_ComDAX, Tabela_ComDAX[Cod_Carga]),
            Tabela_ComDAX[MES] = vDataMax
        )
    )
RETURN
    vCod_Perfil

 

20230122_CapturarCodigoDataMaisRecente_v2.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Esta etapa do PowerQuery abaixo faz o seguinte:

Table.AddColumn(
	AlteraTipoDados, 
	"Cod_Perfil_Ajustadov1", 
	each 
		let
			vCodCarga = _[Cod_Carga],
			vDataMax = Table.SelectRows(AgrupaPorCodCargaDataMax, each ([Cod_Carga] = vCodCarga))[MES_MAX]{0},
			vCodPerfil = AlteraTipoDados{[MES = vDataMax, Cod_Carga = vCodCarga]}[Cod_Perfil]
		in
			vCodPerfil
)

 

A partir da Tabela (etapa) AlteraTipoDados, cria uma coluna chamada Cod_Perfil_Ajustadov1. Para cada linha (each), ela guarda em uma váriavel vCodCarga o código carga daquela linha.

Na variável vDataMax, ela faz uma seleção de linhas na tabela AgrupaPorCodCargaDataMax, onde a coluna Cod-Carga da tabela AgrupaPorCodCargaDataMax deve ser igual à vari[avel vCodCarga. COmo ela retorna a tabela toda, depois eu trado apenas a coluna MES_MAX e a linha 0 (primeira e única linha da tabela retornada pelo Table.SelectRows).

Na sequência, a varável vCodPerfil irá armazenar o código do perfil para a data máxima. Para isso, ela procura na tabela AlteraTipoDados, filtrando o mês pela variável vDataMax e o código de carga pela variável vCodCarga. NO final, retorna apena a coluna [Cod_Perfil] do registro retornado.

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