Práticas recomendadas para a modelagem de dados
Esta seção descreve várias maneiras diferentes de carregar seus dados em um aplicativo Qlik Sense, dependendo de como os dados são estruturados e de qual modelo de dados você deseja obter.
Convertendo colunas de dados em linhas
Provavelmente, meus dados estão parecidos com isso e quero os números de vendas em um campo separado:
Ano | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
2013 | 34 | 54 | 53 | 52 |
2014 | 47 | 56 | 65 | 67 |
2015 | 57 | 56 | 63 | 71 |
Ação proposta
Use o prefixo Crosstable ao carregar a tabela.
O resultado será semelhante a este:
Year | Quarter | Sales |
---|---|---|
2013 | Q1 | 34 |
2013 | Q2 | 54 |
2013 | Q3 | 53 |
2013 | Q4 | 52 |
2014 | Q1 | 47 |
... | ... | ... |
Para saber mais sobre crosstables, consulte Trabalhando com tabelas cruzadas no script de carregamento de dados e Crosstable.
Convertendo linhas de dados em campos
Eu tenho uma tabela genérica com três campos semelhantes a isso, e quero que cada atributo seja uma tabela separada:
Object | Attribute | Value |
---|---|---|
ball | color | red |
ball | diameter | 25 |
ball | weight | 3 |
box | color | 56 |
box | height | 30 |
box | length | 20 |
box | width | 25 |
Ação proposta
Crie um modelo de dados genérico usando o prefixo de carregamento Generic.
O resultado será um modelo de dados parecido com esse:
Para saber mais sobre como dados genéricos, consulte Bancos de dados genéricos e Generic.
Carregando dados organizados em níveis hierárquicos, por exemplo, um esquema de organização
Meus dados são armazenados em uma tabela de nós adjacentes parecida com isso:
NodeID | ParentNodeID | Title |
---|---|---|
1 | - | General manager |
2 | 1 | Country manager |
3 | 2 | Region manager |
Ação proposta
Carregue os dados com o prefixo Hierarchy para criar uma tabela de nós expandidos
NodeID | ParentNodeID | Title | Level1 | Level2 | Level3 |
---|---|---|---|---|---|
1 | - | General manager | General manager | - | - |
2 | 1 | Country manager | General manager | Country manager | - |
3 | 2 | Region manager | General manager | Country manager | Region manager |
Para saber mais sobre níveis hierárquicos, consulte Carregando dados da hierarquia e Hierarchy.
Carregando apenas registros novos e atualizados de um grande banco de dados
Tenho um banco de dados com um grande número de registros e não quero carregar todo o banco de dados para atualizar os dados no meu aplicativo. Quero carregar apenas registros novos e atualizados e remover registros excluídos do banco de dados.
Ação proposta
Implemente uma solução de carga incremental usando arquivos QVD.
Para obter mais informações, consulte Carregando registros novos e atualizados com carregamento incremental.
Combinando dados de duas tabelas com um campo comum
O Qlik Sense associará automaticamente tabelas com um campo em comum, mas quero controlar como as tabelas serão combinadas.
Ação proposta : Join / Keep
Você pode combinar duas tabelas em uma única tabela interna com os prefixos Join ou Keep.
Para obter mais informações, consulte Combinando tabelas com Join e Keep.
Ação proposta : Mapeamento
Um alternativa para fundir tabelas é usar o mapeamento, que automatiza a pesquisa por valores associados em uma tabela de mapeamento. O que pode reduzir a quantidade de dados para carregar.
Para obter mais informações, consulte Usando o mapeamento como uma alternativa à junção.
Combinando um valor discreto com um intervalo
Tenho uma tabela de valores numéricos discretos (Event), e quero combiná-la em um ou mais intervalos (Start e End).
Time | Evento | Comentário |
---|---|---|
00:00 | 0 | Começo do turno 1 |
01:18 | 1 | Parada de linha |
02:23 | 2 | Reinício da linha 50% |
04:15 | 3 | Velocidade da linha 100% |
08:00 | 4 | Começo do turno 2 |
11:43 | 5 | Fim da produção |
Iniciar | Fim | Ordem |
---|---|---|
01:00 | 03:35 | A |
02:30 | 07:58 | B |
03:04 | 10:27 | C |
07:23 | 11:43 | D |
Ação proposta
Use o prefixo IntervalMatch para vincular o campo Time com o intervalo definido pelo Start e End.
Para obter mais informações, consulte Correspondendo intervalos a dados discretos.
Se o intervalo não for explicitamente definido com início e término, apenas com uma mudança na data e hora como na tabela abaixo, será preciso criar uma tabela de intervalos.
Moeda | Alterar dados | Rate |
---|---|---|
EUR | - | 8.59 |
EUR | 28/01/2013 | 8.69 |
EUR | 15/02/2013 | 8.45 |
Dólar americano | - | 6.50 |
Dólar americano | 10/01/2013 | 6.56 |
Dólar americano | 03/02/2013 | 6.30 |
Para obter mais informações, consulte Criando um intervalo de datas a partir de uma única data.
Manuseando valores de campo inconsistentes
Meus dados contêm valores de campo em tabelas diferentes que não têm o mesmo nome. Por exemplo, uma tabela contém o valor US em País, enquanto outra tabela contémUnited States. Essa situação impedirá associações.
País | Região |
---|---|
US | Maryland |
US | Idaho |
US | Nova York |
US | Califórnia |
Country | Population |
---|---|
United States | 304 |
Japan | 128 |
Brazil | 192 |
China | 1333 |
Ação proposta
Limpe os dados usando uma tabela de mapeamento, que compara valores de campo e permite associações corretas.
Para obter mais informações, consulte Limpeza de dados.
Manuseando capitalização de valor de campo inconsistente
Meus dados contêm valores de campo em tabelas diferentes que não têm o mesmo formato. Por exemplo, uma tabela contém o valor single em Type enquanto outra tabela contém Single no mesmo campo. Essa situação impedirá associações, pois o campo Type conterá ambos os valores single e Single, diferenciando a capitalização.
Tipo | Preço |
---|---|
único | 23 |
duplo | 39 |
Tipo | Cor |
---|---|
Única | Vermelho |
Única | Azul |
Duplo | Branco |
Duplo | Black |
Ação proposta
Se você carregou os dados com Adicionar dados, pode corrigir isso no gerenciador de dados.
Faça o seguinte:
- No gerenciador de dados, abraTable2 no editor de tabela.
-
Renomeie o campo Type para Table2.Type.
Se você tiver acabado de adicionar a tabela com Adicionar dados com a análise de dados habilitada, o campo já pode ter sido nomeado como Table2.Type para impedir associação automática. Nesse caso, esse procedimento associará as duas tabelas.
- Crie um campo calculado usando a expressão Lower(Table2.Type) e nomeie-o Type.
- Clique em Carregar dados.
Table1 e Table2 agora devem ser associados pelo campo Type, que só contém valores em minúscula, como single e double.
Se quiser usar uma capitalização diferente, também é possível usar procedimentos semelhantes, mas lembre-se que as tabelas serão associadas usando os campos com o mesmo nome.
- Para que todos os valores estejam em maiúscula, como Single, crie o campo calculado Type em Table1 em vez disso, e use a expressão Capitalize(Table1.Type).
- Para que todos os valores estejam em maiúsculas, como SINGLE, crie o campo calculado Type em ambas as tabelas e use as expressões Upper(Table1.Type) e Upper(Table2.Type) respectivamente.
Para saber mais sobre campos calculados, consulte Usando campos calculados.
Para saber mais sobre capitalização, consulte Capitalize – função de script e gráfico, Lower – função de script e gráfico e Upper – função de script e gráfico.
Carregando dados geoespaciais para visualizar dados com um mapa
Tenho dados que gostaria de visualizar usando um mapa, por exemplo, dados de vendas por país ou por loja. Para usar a visualização em mapa, preciso carregar dados de área ou ponto.
Ação proposta
Você pode carregar os dados de área ou ponto que combinem locais de valor de dados de um arquivo KML ou um arquivo Excel. Além disso, você precisa carregar o verdadeiro mapa de fundo.
Para obter mais informações, consulte Carregando seus próprios dados de mapa.