Opção para não utilizar Subquery (Qlikview ou Banco de Dados) | Left Join

Ĉ¿

Em banco de dados ou qlikview, quando trabalhamos com um volume grande de registros; temos que analisar o desempenho em utilizar a subquery.

Conforme o exemplo abaixo:

Em uma tabela com +- 12.000.000 (12 milhõres)  de registro, com a seguinte estrutura.

IDDT SOLICITAÇÃODT AGENDAMENTOID ORIGEM
10001/10/201401/12/201410
1001/01/201401/09/2014
10110/10/201410/10/201450
5005/02/201420/09/2014

Precisamos que a estrutura fique da seguinte forma, SEM UTILIZAR SUBQUERY

IDDT SOLICITAÇÃODT AGENDAMENTOID ORIGEMDT SOLIC. ORIGEMDT AGEND. ORIGEM
10001/10/201401/12/20141001/01/201401/09/2014
10110/10/201410/10/20145005/02/201420/09/2014

A solução que utilizei foi:




//CRIA TABELA TEMPORARIA SOMENTE COM REGISTROS BASE
SELECT 
  ID
 ,DT_SOLICITACAO
 ,DT_AGENDAMENTO
 ,ID_ORIGEM
 INTO #ORIGEM
FROM
 TABELA
WHERE
 TABELA.ID_ORIGEM IS NULL
 
//CRIA TABELA TEMPORARIA COM REGISTROS RELACIONADOS 
SELECT 
  ID
 ,DT_SOLICITACAO
 ,DT_AGENDAMENTO
 ,ID_ORIGEM
 INTO #ATUAL
FROM
 TABELA
WHERE
 TABELA.ID_ORIGEM IS NOT NULL
 
 
//REALIZA RELACIONAMENTO ENTRE AS TABELAS, ADICIONANDO AS COLUNAS NECESSÁRIAS  
SELECT 
  #ATUAL.ID
 ,#ATUAL.DT_SOLICITACAO
 ,#ATUAL.DT_AGENDAMENTO
 ,#ATUAL.ID_ORIGEM
 ,#ORIGEM.DT_SOLICITACAO AS [DT SOLIC. ORIGEM]
 ,#ORIGEM.DT_SOLICITACAO AS [DT AGEND. ORIGEM]
FROM 
 #ATUAL
LEFT JOIN 
 #ORIGEM  ON #ATUAL.ID_ORIGEM = #ORIGEM.ID 



Abaixo segue exemplo do Qlikview

Tabela1:
LOAD * INLINE [
Chave, A
1, A1
2, A2
3, A3
];
Tabela2:
LOAD * INLINE [
Chave, C
1, C1
2, C2
4, C4
];
view rawgistfile1.txt hosted with ❤ by GitHub
Tabela 1
ChaveA
1A1
2A2
3A3
Tabela 2
ChaveC
1C1
2C2
4C3

Left Join

  • Left irá retornar as linhas da tabela da esquerda e os campos da tabela da direita.
Left Join (Tabela1)
LOAD
Chave,
C
Resident Tabela2;
view rawgistfile1.txt hosted with ❤ by GitHub
Tabela 1
ChaveAC
1A1C1
2A2C2
3A3
Artigo originalmente publicado em 11 de setembro de 2012 por Pedro Elsner: Entendendo Join, Keep e Concatenate no QlikView

Comandos git do dia a dia

Ĉ¿ #Criando um projeto do zero echo "# UBBOAT_App" >> README.md git init git add README.md git commit -m "first commi...