Перейти к основному содержимому

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

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

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

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

See also