Очистка данных
При загрузке данных из разных таблиц обратите внимание на то, что значения полей, обозначающие одно и то же, не всегда имеют одинаковые имена. Поскольку такая разнородность не только раздражает, но и препятствует связыванию, подобную проблему необходимо решать. Это можно сделать достаточно просто, создав таблицу сопоставления для сравнения значений полей.
Таблицы сопоставления
Таблицы, загружаемые с помощью оператора mapping load или mapping select, обрабатываются отлично от других таблиц. Они сортируются в отдельной области памяти и используются только в качестве таблиц сопоставления в ходе выполнения скрипта. После выполнения скрипта они автоматически исключаются.
Правила:
- Таблица сопоставления должна состоять из двух столбцов, первый из которых содержит значения, используемые для сравнения, а второй — желаемые значения для сопоставления.
- Двум столбцам следует присвоить имена, но имена сами по себе не важны. Имена столбцов не связаны с именами полей в обычных внутренних таблицах.
Использование таблиц сопоставления
При загрузке нескольких таблиц, содержащих список стран, можно обнаружить, что одна и та же страна имеет разные названия. В этом примере США указано как US, U.S. и United States.
Чтобы избежать трех разных записей, обозначающих США в объединенной таблице, создайте таблицу, подобную показанной, и загрузите ее в качестве таблицы сопоставления.
Скрипт должен выглядеть следующим образом:
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);
Оператор mapping загружает файл MappingTable.txt в качестве таблицы сопоставления с меткой CountryMap.
Оператор map разрешает сопоставление поля Country с помощью ранее загруженной таблицы сопоставления CountryMap.
Операторы LOAD загружают таблицы CountryA и CountryB. Эти таблицы, которые будут объединены вследствие того, что имеют одинаковый набор полей, включают поле Country, значения которого будут сравниваться со значениями в первом столбце таблицы сопоставления. Будут найдены значения полей US, U.S. и United States и заменены значениями из второго столбца таблицы сопоставления, т. е. USA.
Автоматическое сопоставление в цепочке событий, заканчивающейся сохранением поля в таблице программы Qlik Sense, выполняется в последнюю очередь. Примерный порядок событий для стандартных операторов LOAD или SELECT показан ниже:
- Расчет выражений.
- Изменение имен полей с помощью оператора as.
- Изменение имен полей с помощью оператора alias.
- Квалификация имени таблицы, если применимо.
- Сопоставление данных, если совпадает имя поля.
Таким образом, сопоставление выполняется не при каждом появлении имени поля как части выражения, а тогда, когда значение сохраняется в таблице программы Qlik Sense под определенным именем поля.
Чтобы отключить сопоставление, используйте оператор unmap.
Для сопоставления на уровне выражения используйте функцию applymap.
Для сопоставления на уровне подстроки используйте функцию mapsubstring.