Skip to main content
Announcements
Qlik Community Office Hours, March 20th. Former Talend Community users, ask your questions live. SIGN UP
cancel
Showing results for 
Search instead for 
Did you mean: 
rbarbosa
Contributor III
Contributor III

Estratégia de Extração

Bom dia pessoal tudo bem?

Tenho um SQL hoje que carrega a partir de 19 tabelas uma espécie de dataware house, porém isso demora muita.

Cerca de 30 horas pra carregar 3 meses, acredito que isso tem gerado um impacto negativo em meu banco de dados e no processo de BI como um todo.

Pensei em mudar minha estratégia, gerando um qvd para cada tabela dessa e depois fazendo esse "data-warehouse" direto no qlikview, através dos scripts.

Eu teria um ganho real de performance trabalhando assim?

Rodolfo Barbosa
Labels (3)
1 Solution

Accepted Solutions
Marcio_Campestrini
Specialist
Specialist

Bom dia Rodolfo.

O seu problema pode ser relacionado aos joins.

O uso do JOIN simples fará com que as linhas da segunda tabela (do JOIN) que não tem correspondentes na primeira tabela sejam combinadas com TODAS as linhas.

Basicamente:

JOIN: combina as linhas com os campos com os mesmos valores e as demais linhas da segunda tabela serão combinadas com todas as linhas da primeira tabela (produto cartesiano)

LEFT JOIN: combina as linhas da segunda tabela com as correspondentes da primeira tabela. Aquelas que não tiverem correspondência serão desprezadas

OUTER JOIN: liga as linhas correspondentes e acrescenta na primeira tabela as linhas que não tem correspondência

INNER JOIN: somente mantém as linhas que tem correspondência nas duas tabelas.

Para complementar:

Joins and Lookups

Márcio Rodrigo Campestrini

View solution in original post

14 Replies
jonas_rezende
Specialist
Specialist

Olá, Rodolfo Barbosa.

Permita-me entender.

Você tem um SQL unindo 19 tabelas? Ou ele é condicionado para carregar a partir de 19 tabelas?

Vale lembrar que o data warehouse (DW) é uma estrutura de armazenamento (repositório de dados para dar suporte as suas aplicações), ou seja, o conglomerado de seus Data Marts.

rbarbosa
Contributor III
Contributor III
Author

O SQL Une as 19 tabelas, ele é bem complexo o que dificuldade qualquer mudança.

Comecei o processo mas estou com dificuldades em reescrever as funções, será possível reeescreve-las no click?

Rodolfo Barbosa
Clever_Anjos
Employee
Employee

Possivel sim, mas talvez demore ainda mais.

Recomendo extrair por "pedaços" e salvando em QVD´s (QVD diario, semanal ou mensal)

rbarbosa
Contributor III
Contributor III
Author

Então, fiz QVD por QVD, um por tabela, pra depois juntar e fazer o "Tabelão" como era feito no SQL, estou com dúvidas em como transcrever as functions do PL/SQL para o Qlikview, se realmente vale a pena

As tabelas separadas já fiz todas as consultas / QVD's o mais demorado deu 10 minutos, é uma vitória. Rs,

Rodolfo Barbosa
Clever_Anjos
Employee
Employee

Bom, as funções teríamos que saber quais você tem duvida

rbarbosa
Contributor III
Contributor III
Author

Opa Clever, desculpem a demora em responder, ontem consegui reescrever quase todas, as que não o fiz criei tabelas virtuais com load inline pra poder fazer o "decode" do oracle.

Mas muito obrigado

Rodolfo Barbosa
rbarbosa
Contributor III
Contributor III
Author

Boa tarde pessoal, tem sido um sucesso a estratégia porém estou tendo alguns problemas:

A nível de informação a carga que no oracle demorava no minimo 5 horas para cada mês hoje consigo extrair os dados de todos os perídios em menos de 30 minutos.

Estou fazendo o join dos QVDs pra gerar o DW que igual usava antes, sem necessidade de mudar a estrutura do meu BI original(isto é ter os mesmos campos).

Porém, acho que meus joins não estão indo dar formata correta, usei apenas JOIN, sem dizer se é inner ou left, porém a memória do servidor foi no talo 32gb. Vou tentar seguir o mesmo que o oracle, pensei em repartir em mais etapas, mas acredito que isso vá aumentar a complexidade.

i208^cimgpsh_orig.png

Rodolfo Barbosa
Marcio_Campestrini
Specialist
Specialist

Bom dia Rodolfo.

O seu problema pode ser relacionado aos joins.

O uso do JOIN simples fará com que as linhas da segunda tabela (do JOIN) que não tem correspondentes na primeira tabela sejam combinadas com TODAS as linhas.

Basicamente:

JOIN: combina as linhas com os campos com os mesmos valores e as demais linhas da segunda tabela serão combinadas com todas as linhas da primeira tabela (produto cartesiano)

LEFT JOIN: combina as linhas da segunda tabela com as correspondentes da primeira tabela. Aquelas que não tiverem correspondência serão desprezadas

OUTER JOIN: liga as linhas correspondentes e acrescenta na primeira tabela as linhas que não tem correspondência

INNER JOIN: somente mantém as linhas que tem correspondência nas duas tabelas.

Para complementar:

Joins and Lookups

Márcio Rodrigo Campestrini
Clever_Anjos
Employee
Employee

Como eu disse anteriormente, acredito que seja melhor manter os joins no banco (RDBMS foram feitos para isso) e extrair por partes.

Revisar as queries, verificando se estão usando os índices corretos

"Possivel sim, mas talvez demore ainda mais.

Recomendo extrair por "pedaços" e salvando em QVD´s (QVD diario, semanal ou mensal)"