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

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

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

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

OrdersOrders data table

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

| CustomerID | Name | Country | ... |
| --- | --- | --- | --- |
| 1 | DataSales | Spain | ... |
| 2 | BusinessCorp | Italy | ... |
| 3 | TechCo | Germany | ... |
| 4 | Mobecho | France | ... |

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

CountryCountry mapping table

| CustomerID | Country |
| --- | --- |
| 1 | Spain |
| 2 | Italy |
| 3 | Germany |
| 4 | France |

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

```
     MapCustomerIDtoCountry:      Mapping LOAD CustomerID, Country From Customers ;      
```

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

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

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

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

Result mapping table

| 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/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Scripting/MappingFunctions/ApplyMap.htm)
* [Mapping](https://help.qlik.com/ru-RU/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptPrefixes/Mapping.htm)