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

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

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

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

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.

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