Limpeza de dados
Ao carregar dados de tabelas diferentes, observe que os valores de campo que denotam a mesma coisa nem sempre estão nomeados de forma consistente. Além de inconveniente, a falta de consistência impede associações, sendo necessário resolver esse problema. Isso pode ser feito de uma maneira organizada e simples, criando uma tabela de mapeamento para a comparação dos valores de campo.
Tabelas de mapeamento
As tabelas carregadas usando mapping load ou mapping select são tratadas de forma diferente de outras tabelas. Elas serão armazenadas em uma área separada da memória e usadas somente como tabelas de mapeamento durante a execução do script. Depois da execução do script, serão automaticamente eliminadas.
Regras:
- A tabela de mapeamento deve ter duas colunas: a primeira contendo valores de comparação e a segunda, os valores de mapeamento desejados.
- As duas colunas devem ser nomeadas, mas os nomes não têm relevância neles mesmos. Os nomes de coluna não têm conexão com os nomes de campo nas tabelas internas normais.
Usando uma tabela de mapeamento
Ao carregar diversas tabelas que listam países, é possível descobrir que o mesmo país tem vários nomes diferentes. Nesse exemplo, os EUA são listados como US, U.S. e United States.
Para evitar a ocorrência de três registros diferentes que denotem os Estados Unidos na tabela concatenada, é possível criar uma tabela semelhante à mostrada e carregá-la como uma tabela de mapeamento.
O script inteiro teria a seguinte aparência:
CountryMap:
Mapping LOAD x,y from MappingTable.txt
(ansi, txt, delimiter is ',', embedded
labels);
Map Country using CountryMap;
LOAD Country,City from CountryA.txt
(ansi, txt, delimiter is ',', embedded labels);
LOAD Country, City from CountryB.txt
(ansi, txt, delimiter is ',', embedded labels);
O comando mapping carrega o arquivo MappingTable.txt como uma tabela de mapeamento com o rótulo CountryMap.
O comando map habilita o mapeamento do campo Country usando a tabela de mapeamento CountryMap carregada anteriormente.
Os comandos LOAD carregam as tabelas CountryA e CountryB. Essas tabelas, que serão concatenadas devido ao fato de conterem o mesmo conjunto de campos, incluem o campo Country, cujos valores de campo serão comparados aos da primeira coluna da tabela de mapeamento. Os valores de campo US, U.S. e United States serão encontrados e substituídos pelos valores da segunda coluna da tabela de mapeamento, isto é, USA.
O mapeamento automático ocorre por último na cadeia de eventos que leva ao campo armazenado na tabela do Qlik Sense. Em um comando LOAD ou SELECT típico, a ordem dos eventos será aproximadamente a seguinte:
- Avaliação de expressões
- Renomeando campos por as
- Renomeação de campos por alias
- Qualificação do nome da tabela, se aplicável
- Mapeamento de dados em caso de correspondência dos nomes de campo
Isso significa que o mapeamento não é feito sempre que um nome de campo é encontrado como parte de uma expressão, mas quando o valor está armazenado sob o nome de campo na tabela do Qlik Sense.
Para desabilitar o mapeamento, use o comando unmap.
Para mapeamento no nível da expressão, use a função applymap.
Para mapeamento no nível da subcaractere, use a função mapsubstring.