sexta-feira, 13 de setembro de 2013

Modelagem QlikView - Chaves Sintéticas

Desafios típicos

  • Quais os desafios que você encontrou na modelagem de dados básico em QlikView?
  • Os mais comuns são:

                 –Chave sintética
                 –Referência circular

CHAVES SINTÉTICAS

•Quando existe mais do que um campo em comum entre tabelas


Se carregar como está, então…

 QlikView criará chaves sintéticas

O que é uma chave sintética?

  • É um campo que contém todas as combinações possíveis de campos comuns entre as tabelas

A chave sintética é ruim?

  • Não, mas tente evitá-lo. Ela é gerada pelo QlikView. Isso significa que você pode perder o controle sobre ele quando você tem muitas delas.

Quantas maneiras existem de resolver uma chave sintética?


  1. Um ANSI JOIN
  2. Uma chave concatenada
  3. Tabelas Concatenadas
  4. Uma tabela de Link

Como evitar as chaves sintéticas?

  • Juntar as tabelas pelos campos comuns
Usando o nosso exemplo:

Sales:

Load
Year,
Month,
[Customer Number],
[Sales Amount]
FROM Sales;

LEFT JOIN Load 

Year,
Month,
[Customer Number],
[Budget Amount]
FROM Budget;

Customer:
Load
[Customer Number],
[Customer Name]
FROM Customer;

Problema!
  • Não obtendo todos os dados da tabela do Budget de resultando em que faltam meses para o resto do ano
  • Mesmo se juntar a tabela de vendas à tabela do Budget, ainda faltam atividades dos clientes que não estão orçados
  • Pode se tornar um problema se as tabelas não tem um "um-para-um".


Como evitar as chaves sintéticas?

  • Crie uma chave própria concatenando os campos comuns

Year & '_' & Month & '_' & [Customer Number] as Key


Mesmo problema de antes!

Como evitar as chaves sintéticas?
  • Combinar (concatenar) as tabelas para ter todos os valores possíveis

Sales:
Load
Year,
Month,
[Customer Number],
[Sales Amount],
Null() as [Budget Amount]
FROM Sales;

Budget:
Load
Year,
Month,
[Customer Number],
Null() as [Sales Amount],
[Budget Amount]
FROM Budget;


Nota:
  • Quando QlikView encontra várias tabelas com exatamente os mesmos campos, ele os combina em uma tabela automaticamente.
  • Criar campos vazios (campos fictícios) usando a função null() para que faltam em cada tabela

O que é Forced Concatenate?
  • QlikView cria campos vazios automaticamente portanto não há necessidade de criar campos fictícios manualmente


Sales:
Load 
Year, 
Month, 
[Customer Number],
[Sales Amount]
FROM Sales;

Budget:
CONCATENATE Load 
Year,
Month,
[Customer Number],
[Budget Amount]
FROM Budget;
Nota:
  • Este script vai acabar com duas tabelas. É a mesma estrutura do método Auto-Concatenate

Qual é o benefício de combinar as tabelas em ums?
  • Garantia de manter todos os dados em uma tabela.

Qual é o benefício de usar Auto-Concatenate?
  • Quando alguns campos são erros ortográficos, ou quando alguns campos são deixados de fora por engano, então eles poderiam ser facilmente identificados (chaves sintéticas irão aparecer).

Usamos o método de concatenação com frequencia?
  • Sim. É o método QlikView mais utilizado para resolver as chaves sintéticas.

Existe uma maneira de evitar a concatenação automática?
  • Sim. Use a sintaxe "Load Noconcatenate" em vez de "Load". Permite melhor controle.


Continua...



Nenhum comentário:

Postar um comentário