Очистка данных

При загрузке данных из разных таблиц обратите внимание на то, что значения полей, обозначающие одно и то же, не всегда имеют одинаковые имена. Поскольку такая разнородность не только раздражает, но и препятствует связыванию, подобную проблему необходимо решать. Это можно сделать достаточно просто, создав таблицу сопоставления для сравнения значений полей.

Таблицы сопоставления

Таблицы, загружаемые с помощью оператора 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 показан ниже:

  1. Расчет выражений.
  2. Изменение имен полей с помощью оператора as.
  3. Изменение имен полей с помощью оператора alias.
  4. Квалификация имени таблицы, если применимо.
  5. Сопоставление данных, если совпадает имя поля.

Таким образом, сопоставление выполняется не при каждом появлении имени поля как части выражения, а тогда, когда значение сохраняется в таблице программы Qlik Sense под определенным именем поля.

Чтобы отключить сопоставление, используйте оператор unmap.

Для сопоставления на уровне выражения используйте функцию applymap.

Для сопоставления на уровне подстроки используйте функцию mapsubstring.