# 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:

Tabela de dados originais

| Ano | T1 | T2 | T3 | T4 |
| --- | --- | --- | --- | --- |
| 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:

Tabela após aplicação de prefixo Crosstable

| 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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/work-with-cross-tables.htm) e [Crosstable](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/crosstable.htm).

## 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:

Tabela genérica com três campos

| 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:

![Modelo de dados genérico.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/ex_gen_GenericDatabase_300x300.png)

Para saber mais sobre como dados genéricos, consulte [Bancos de dados genéricos](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataSource/generic-databases.htm) e [Generic](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm).

## 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:

Tabela de nós adajcentes

| 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

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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataSource/hierarchies.htm) e [Hierarchy](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Hierarchy.htm).

## 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 em 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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/use-QVD-files-incremental-load.htm).

## 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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm).

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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/use-mapping-as-alternative-join.htm).

## 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).

Tabela de valores numéricos discretos (EventEvent)

| Hora | 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 |

Tabela com intervalos (StartStart e End End)

| 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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/matching-intervals-to-discrete-data.htm).

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.

Tabela com carimbo de data/hora de alteração

| Moeda | Alterar dados | Taxa |
| --- | --- | --- |
| 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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/create-date-interval-from-single-date.htm).

## 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.

Tabela 1

| País | Região |
| --- | --- |
| US | Maryland |
| US | Idaho |
| US | Nova York |
| US | Califórnia |

Table 2

| 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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/data-cleansing.htm).

## 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.

Tabela 1

| Tipo | Preço |
| --- | --- |
| único | 23 |
| duplo | 39 |

Tabela 2

| Tipo | Cor |
| --- | --- |
| Única | Vermelho |
| Única | Azul |
| Duplo | Branco |
| Duplo | Preto |

Ação proposta

Se você carregou os dados com Adicionar dados, pode corrigir isso no gerenciador de dados.

Faça o seguinte:

1. No gerenciador de dados, abraTable2 no editor de tabela.

2. 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.

3. Crie um campo calculado usando a expressão `Lower(Table2.Type)` e nomeie-o Type.

4. 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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/add-calculated-field.htm).

Para saber mais sobre capitalização, consulte [Capitalize Função de script e de gráfico](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Capitalize.htm), [Lower Função de script e de gráfico](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Lower.htm) e [Upper Função de script e de gráfico](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Upper.htm).

## 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](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/Map/load-map-data.htm).