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

  1. İ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.
  2. 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 TABLE yazmanıza gerek yoktur).
  3. 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);

Qlik Sense Veri Bağlantıları Ekranı

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

Qlik Sense Veri Bağlantıları Ekranı

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

Qlik Sense Veri Bağlantıları Ekranı

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

  1. 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 ...
  2. Ç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 ApplyMap kullanmak kod tekrarı yaratır. Böyle bir durumda (ve anahtarların tekil olduğundan eminseniz) LEFT JOIN veya modele yeni bir boyut (Dimension) tablosu eklemek (Star Schema) daha mantıklıdır.
  3. İ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.

Qlik Sense Veri Bağlantıları Ekranı

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