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

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

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

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

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

Таблица данных OrdersOrders

| 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 |

Таблица данных CustomersCustomers

| 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 |

## Подробнее

* [ApplyMap Функция скрипта](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/MappingFunctions/ApplyMap.htm)
* [Сопоставление](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Mapping.htm)