Czyszczenie danych
Podczas ładowania danych z różnych tabel często zdarza się, że wartości pól opisujące tę samą rzecz mają różne nazwy. Takie niespójności nie tylko są irytujące, ale również utrudniają kojarzenie pól, więc konieczne jest ich korygowanie. Elegancką metodą rozwiązania tego problemu jest utworzenie tabeli mapowania używanej do porównywania wartości pól.
Tabele mapowania
Tabele załadowane instrukcją mapping load lub mapping select są traktowane odmiennie od innych tabel. Są one przechowywane w odrębnym obszarze pamięci i używane wyłącznie jako tabele mapowania podczas wykonywania skryptu. Po wykonaniu skryptu są automatycznie usuwane.
Reguły:
- Tabela mapowania musi zawierać dokładnie dwie kolumny, z których pierwsza zawiera wartości sprawdzane, a druga pożądane wartości docelowe mapowania.
- Obie kolumny muszą mieć nazwy, ale same nazwy nie mają żadnego znaczenia. Podane tu nazwy kolumn nie są w żaden sposób związane z nazwami pól zwykłych tabel wewnętrznych.
Korzystanie z tabeli mapowania
Podczas ładowania kilku tabel z listami krajów może się okazać, że ten sam kraj występuje pod różnymi nazwami. W tym przykładzie USA występuje między innymi jako US, U.S. i United States.
Aby uniknąć występowania w konkatenowanej tabeli trzech różnych rekordów odpowiadających USA, należy utworzyć tabelę podobną do następującej i załadować ją jako tabelę mapowania.
Cały skrypt powinien wyglądać następująco:
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);
Instrukcja mapping ładuje plik MappingTable.txt jako tabelę mapowania z etykietą CountryMap.
Instrukcja map pozwala na mapowanie pola Country za pomocą wcześniej załadowanej tabeli mapowania CountryMap.
Instrukcje LOAD ładują tabele CountryA i CountryB. Tabele te, które zostaną konkatenowane ze względu na fakt, że zawierają identyczny zestaw pól obejmują pole Country, którego wartości będą porównywane z wartościami w pierwszej kolumnie tabeli mapowania. Wartości pól US, U.S. i United States zostaną znalezione i zastąpione wartościami z drugiej kolumny tabeli mapowania, czyli w tym przypadku USA.
Mapowanie automatyczne jest wykonywane jako ostatnia z operacji prowadzących do zapisania pola w tabeli programu Qlik Sense. Kolejność działań w przypadku typowej instrukcji LOAD lub SELECT jest mniej więcej następująca:
- obliczenie wartości wyrażeń,
- zmiana nazw pól z użyciem as,
- zmiana nazw pól z użyciem alias,
- kwalifikacja nazwy tabeli (jeśli ma zastosowanie),
- mapowanie danych w przypadku zgodnych nazw pól,
Oznacza to, że mapowanie nie jest wykonywane przy każdym napotkaniu nazwy pola w wyrażeniu, a jedynie podczas zapisywania wartości pod daną nazwą pola w tabeli programu Qlik Sense.
Mapowanie można wyłączyć za pomocą instrukcji unmap.
Do mapowania na poziomie wyrażenia służy funkcja applymap.
Do mapowania na poziomie fragmentu tekstu służy funkcja mapsubstring.