Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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?
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:
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.
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?
Possivel sim, mas talvez demore ainda mais.
Recomendo extrair por "pedaços" e salvando em QVD´s (QVD diario, semanal ou mensal)
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,
Bom, as funções teríamos que saber quais você tem duvida
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
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.
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:
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)"