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

Использование сопоставления как альтернативы соединению

Префикс Join в программе Qlik Sense является мощным инструментом для объединения нескольких таблиц данных в модель данных.

Единственным недостатком является то, что объединенные таблицы могут оказаться большими, из-за чего могут возникнуть проблемы при выполнении. Альтернативой соединению Join в ситуациях, когда необходимо найти одиночное значение в другой таблице, является сопоставление. В этом случае не будут загружены ненужные данные, которые могли бы замедлить вычисления и создать ошибки при вычислениях, поскольку при соединении может измениться число записей в таблицах.

Таблица сопоставления состоит из двух столбцов: поле сравнения (входные данные) и поле со значением сопоставления (выходные данные).

В этом примере у нас есть таблица с заказами (Orders). Нам необходимо узнать страны клиентов, которые указаны в таблице клиентов (Customers).

Таблица данных Orders
OrderID OrderDate ShipperID Freight CustomerID
12987 2007-12-01 1 27 3
12988 2007-12-01 1 65 4
12989 2007-12-02 2 32 2
12990 2007-12-03 1 76 3
Таблица данных Customers
CustomerID Name Country ...
1 DataSales Spain ...
2 BusinessCorp Italy ...
3 TechCo Germany ...
4 Mobecho France ...

Чтобы найти страну (Country) клиента, нам нужна таблица сопоставления, которая выглядит следующим образом:

Таблица сопоставления
CustomerID Country
1 Spain
2 Italy
3 Germany
4 France

Таблица сопоставления, которую мы назвали MapCustomerIDtoCountry, определена в скрипте следующим образом:

MapCustomerIDtoCountry: Mapping LOAD CustomerID, Country From Customers ;

Далее мы применим сопоставление с помощью функции ApplyMap при загрузке таблицы с заказами:

Orders: LOAD *, ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country From Orders ;

Третий параметр функции ApplyMap используется, чтобы определить, какие значения вернуть. Если значение в таблице сопоставления не найдено, возвращается значение Null().

Результирующая таблица будет выглядеть так:

Результирующая таблица
OrderID OrderDate ShipperID Freight CustomerID Country
12987 2007-12-01 1 27 3 Germany
12988 2007-12-01 1 65 4 France
12989 2007-12-02 2 32 2 Italy
12990 2007-12-03 1 76 3 Germany

Подробнее

 

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!