# Birleştirmeye alternatif olarak eşlemeyi kullanma

Qlik Sense içindeki Join öneki, veri modelinde çeşitli veri tablolarını birleştirmenin güçlü bir yoludur.

Bir dezavantajı ise birleştirilen tabloların büyük olabilmesi ve performans sorunları yaratabilmesidir. Başka bir tablodan tek değeri aramanız gerektiği durumlarda Join yönteminin bir alternatifi de eşlemeyi kullanmaktır. Birleştirme işlemleri tablolardaki kayıtların sayısını değiştirebildiğinden, bu yöntem, hesaplamaları yavaşlatan ve potansiyel olarak hesaplama hatalarına yol açabilen gereksiz verileri yüklemekten kurtulmanızı sağlayabilir.

Eşleme tablosu iki sütundan oluşur: bir karşılaştırma alanı (giriş) ve bir eşleme değeri alanı (çıkış).

Bu örnekte elimizde bir sipariş tablosu (Orders) var ve müşteri tablosunda (Customers) depolanan müşterilerin ülkelerini öğrenmemiz gerekiyor.

OrdersOrders veri tablosu

| Sipariş Kimliği | OrderDate | GönderenKimliği | Freight | MüşteriKimliği |
| --- | --- | --- | --- | --- |
| 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 veri tablosu

| MüşteriKimliği | Ad | Ülke | ... |
| --- | --- | --- | --- |
| 1 | DataSales | İspanya | ... |
| 2 | BusinessCorp | İtalya | ... |
| 3 | TechCo | Almanya | ... |
| 4 | Mobecho | Fransa | ... |

Bir müşterinin ülkesini (Country) aramak için şuna benzer bir eşleme tablosuna gerek duyarız:

Eşleme tablosu

| MüşteriKimliği | Ülke |
| --- | --- |
| 1 | İspanya |
| 2 | İtalya |
| 3 | Almanya |
| 4 | Fransa |

MapCustomerIDtoCountry olarak adlandırdığımız eşleme tablosu kodda şöyle tanımlanır:

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

Bir sonraki adım, sipariş tablosunu yüklerken ApplyMap fonksiyonunu kullanarak eşlemeyi uygulamaktır:

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

ApplyMap fonksiyonunun üçüncü parametresi, değerin eşleme tablosunda bulunamaması durumunda döndürülecek sonucu tanımlamak için kullanılır (bu örnekte Null()).

Sonuçta elde edilen tablo şöyle görünür:

Sonuç tablosu

| Sipariş Kimliği | OrderDate | GönderenKimliği | Freight | MüşteriKimliği | Ülke |
| --- | --- | --- | --- | --- | --- |
| 12987 | 2007-12-01 | 1 | 27 | 3 | Almanya |
| 12988 | 2007-12-01 | 1 | 65 | 4 | Fransa |
| 12989 | 2007-12-02 | 2 | 32 | 2 | İtalya |
| 12990 | 2007-12-03 | 1 | 76 | 3 | Almanya |

## Daha fazla bilgi

* [ApplyMap Komut dosyası fonksiyonu](https://help.qlik.com/tr-TR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/MappingFunctions/ApplyMap.htm)
* [Eşleme](https://help.qlik.com/tr-TR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Mapping.htm)