
Qlik Sense Dersleri: ApplyMap ve Mapping Nedir, Nasıl Kullanılır? (Detaylı Rehber)
1. Mapping ve ApplyMap Kavramlarına Derinlemesine Bakış
Mapping Nedir?
Mapping, bir tabloyu ana veri modeline doğrudan eklemeden (veri modelinde bir tablo olarak göstermeden), sadece belirli alanları eşleştirmek amacıyla arka planda belleğe yükleme işlemidir.
Mapping Yüklemelerinin Altın Kuralları:
- İki Sütun Kuralı: Mapping tabloları istisnasız iki sütundan oluşmalıdır. Birinci sütun aranan anahtar kelimeyi (Key), ikinci sütun ise eşleşecek değeri (Value) temsil eder. Eğer tablonuzda 3 veya daha fazla sütun varsa, Qlik Sense sadece ilk iki sütunu dikkate alır, diğerlerini yok sayar.
- Bellekte Yaşar ve Ölür: Mapping tabloları veri modelinize yansımaz. Script çalışması bittiğinde, Qlik Sense bu geçici tabloları otomatik olarak bellekten temizler. (Özel olarak
DROP TABLEyazmanıza gerek yoktur). - Tekil Anahtarlar: Anahtar (Key) sütunundaki değerlerin tekil olması (duplicate olmaması) en sağlıklı senaryodur. Aynı anahtardan birden fazla varsa, Qlik Sense genellikle okuduğu son değeri hafızada tutar.
Örnek bir Mapping yapısı:
Map_SaticiBolge:
Mapping LOAD
SaticiKodu,
BolgeAdi
FROM [lib://VeriKaynaklari/Saticilar.xlsx]
(ooxml, embedded labels, table is Saticilar);

*Görsel Tablo 1:
ApplyMap Fonksiyonu ve Sözdizimi (Syntax)
ApplyMap, yukarıdaki Mapping anahtar kelimesi ile tanımlanan geçici tabloyu çağırarak, elimizdeki bir değeri oradaki karşılığıyla değiştirir veya yeni bir alan olarak ekler.
Kullanım Formatı:
ApplyMap('MappingTabloAdi', AranacakAlan, ['Varsayılan_Değer'])
- ‘MappingTabloAdi’: Mutlaka tek tırnak (
' ') içerisinde yazılmalıdır. - AranacakAlan: Hangi sütun üzerinden eşleştirme yapacağımızı belirtir.
- ‘Varsayılan_Değer’: (Opsiyonel) Eğer aradığımız değer Mapping tablosunda bulunamazsa (null dönerse) ne yazılacağını belirleriz. Boş bırakılabilir ancak veri kalitesi için her zaman doldurulması tavsiye edilir.

*Görsel Tablo 3:
2. Adım Adım Gerçek Hayat Senaryosu
İş zekası projelerinde, devasa boyutlardaki bir “Satış Hareketleri” (Fact) tablosuna, başka bir dosyadan sadece tek bir açıklama veya kategori bilgisi çekmek sıkça rastlanan bir durumdur.
Örneğin, satış veri setimizde sadece SaticiID var, ancak biz raporlarımızda satıcının Bölgesini de göstermek istiyoruz.
Adım 1: Mapping Tablosunu Yükleme
Öncelikle Bölge bilgilerini içeren dosyamızı Mapping ile alıyoruz.

*Görsel Tablo 3:
// 1. Aşama: Satıcıların bölgelerini eşleme tablosu olarak hafızaya alıyoruz.
Map_SaticiBolge:
Mapping LOAD
SaticiID,
Bolge
FROM [lib://DataFiles/Satici_Bilgileri.xlsx]
(ooxml, embedded labels, table is Sayfa1);
(Bu kod çalıştığında Qlik Sense bunu veri şemasında göstermez, sadece arka planda tutar.)
Adım 2: Ana Tabloya Bilgiyi Çekme
Şimdi milyonlarca satırlık ana satış tablomuzu yüklerken, satır satır bölge bilgisini ekleyelim.
// 2. Aşama: Ana satış veri setini yüklüyoruz ve ApplyMap kullanıyoruz.
Satislar:
LOAD
SiparisNo,
Tarih,
SaticiID,
Tutar,
// İşte burası sihrin gerçekleştiği yer:
ApplyMap('Map_SaticiBolge', SaticiID, 'Bölge Tanımsız') AS SaticiBolgesi
FROM [lib://DataFiles/Satis_Verileri.qvd] (qvd);
Ne oldu?
Qlik, ana tablodaki her bir SaticiID değerini aldı, görünmez Map_SaticiBolge tablosuna sordu. Eşleşme varsa SaticiBolgesi adıyla veriyi yazdı. Eğer o satıcı henüz eşleme dosyasında yoksa, hücreye boş (null) bırakmak yerine ‘Bölge Tanımsız’ yazdı.
3. Neden JOIN Yerine ApplyMap Tercih Edilmelidir?
Qlik Sense’te tabloları birleştirmenin bir diğer yolu LEFT JOIN kullanmaktır. Peki, aynı işlemi LEFT JOIN ile yapabilecekken neden ApplyMap kullanmalısınız?
| Özellik | ApplyMap | Left Join |
|---|---|---|
| Satır Çoğalması (Cartesian Product) | Kesinlikle olmaz. Ana tablonuz 1 milyon satırsa, işlem sonunda yine tam 1 milyon satır kalır. | Eşleşen tabloda aynı anahtardan birden fazla varsa, satır sayınız kontrolsüzce artabilir ve satış tutarlarınız dublike olabilir (mükerrer veri riski). |
| Sistem Performansı ve Hız | Bellekte çok daha az yer kaplar ve okuma-yazma süresi JOIN’e göre çok daha hızlıdır. | Tabloları RAM üzerinde birleştirmek işlemciyi ve belleği yorar, rapor yenileme (reload) süresini uzatır. |
| Hata Yönetimi (Varsayılan Değer) | Eşleşmeyen kayıtlar için 3. parametre ile “Bilinmiyor”, “Diğer” gibi etiketler atanabilir. | Eşleşmeyen kayıtlar doğrudan Null (boşluk) olarak kalır ve raporlarda “-” (çizgi) olarak görünür. |
| Kod ve Model Temizliği | Sentetik anahtar (Synthetic Key) oluşumunu engeller. Veri modeli diyagramını temiz ve sade tutar. | Gereksiz yere veri modeli şemasında kalabalık yaratabilir. |
4. İleri Düzey İpuçları ve En İyi Uygulamalar (Best Practices)
- Birden Fazla Alan (Composite Key) Eşleştirmek:
ApplyMap sadece iki sütunla (1 Anahtar, 1 Değer) çalıştığı için, bazen iki sütunu birleştirerek arama yapmanız gerekebilir.
Mapping LOAD Yil & '-' & Ay AS YilAy, HedefTutar FROM ... - Çoklu Sütun İhtiyacı:
Eğer ana tablonuza satıcı dosyası üzerinden hem Bölge hem de Satıcı Adı hem de Satıcı Grubu gibi 3-4 farklı sütun çekecekseniz, o zaman
ApplyMapkullanmak kod tekrarı yaratır. Böyle bir durumda (ve anahtarların tekil olduğundan eminseniz)LEFT JOINveya modele yeni bir boyut (Dimension) tablosu eklemek (Star Schema) daha mantıklıdır. - İsimlendirme Standardı:
Mapping tablolarınıza her zaman
Map_gibi bir ön ek (prefix) verin. Bu sayede kodunuz binlerce satıra ulaştığında bile, ApplyMap içinde hangi tablonun çağrıldığını anında anlayabilirsiniz.

*Görsel Tablo 4:
✅ Özet Sonuç
Qlik Sense’te veri modelleme (Data Modeling) ve zenginleştirme (Data Enrichment) işlemlerinde Mapping ve ApplyMap fonksiyonları, geleneksel birleştirme (JOIN) yöntemlerinin ötesine geçen oldukça profesyonel bir tekniktir.
Özellikle milyonlarca satırlık işlem (Fact) tablolarınıza kategori, açıklama veya bölge gibi tekil metin değerleri eklemek istiyorsanız ilk tercihiniz her zaman ApplyMap olmalıdır. Hem veri güvenliğinizi (satır çoğalması riskini) sağlar, hem modelinizi hafifletir, hem de eşleşmeyen veriler üzerindeki kontrolünüzü artırır.
Bir sonraki Qlik Sense teknik analiz dersimizde görüşmek üzere!