Qlik Sense'te set analizi yazmak: tanımlayıcı, değiştirici ve örnekler
Beceri rehberi

Qlik Sense'te set analizi yazmak: tanımlayıcı, değiştirici ve örnekler

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 6 dk okuma

Qlik Sense set analizinin söz dizimi, seçimi yok sayma, P() ve E() kullanımı ve sık hatalar. Kopyalayıp deneyebileceğiniz ifade örnekleriyle.

Set analizi neden gerekir?

Qlik Sense'te bir grafik ya da KPI kutusu, varsayılan olarak ekrandaki seçimlere göre hesaplanır. Kullanıcı bir bölge seçtiğinde toplam satış o bölgeye daralır. Çoğu zaman tam da istenen budur. Ancak bir rapor "geçen yıla göre değişim", "seçimden bağımsız toplam içindeki pay" ya da "yalnızca iade edilmemiş siparişler" gibi ölçüler istediğinde, seçimlerin dışına çıkan bir hesap gerekir.

Set analizi, bir ifadenin hangi kayıt kümesi üzerinde hesaplanacağını açıkça tanımlamanıza izin verir. Aynı ifade içinde hem kullanıcının seçtiği bölgeyi hem de seçimden bağımsız genel toplamı yan yana kullanabilirsiniz. Bu yüzden pay hesapları, yıllık karşılaştırmalar, hedef-gerçekleşen oranları ve "tüm müşteriler arasında yalnızca aktif olanlar" gibi koşullu ölçüler set analiziyle yazılır.

Alternatifi, ifade içinde If() ile satır satır koşul yazmaktır. Bu çalışır ama büyük veride genellikle daha yavaştır ve seçimleri yok sayamaz. Set analizi veri modelinin ilişkisel yapısını kullandığı için büyük veri kümelerinde daha öngörülebilir davranır.

Söz diziminin parçaları

Bir set ifadesi küme parantezi içinde yazılır ve bir toplulaştırma fonksiyonunun (Sum, Count, Avg, Max gibi) hemen başına konur. Üç parçadan oluşur: küme tanımlayıcısı, değiştiriciler ve isteğe bağlı operatörler.

Küme tanımlayıcısı hangi kayıtlarla başlanacağını söyler. Qlik yardım belgesindeki başlıca tanımlayıcılar şunlardır:

  • 1: seçimleri tamamen yok sayar, bütün kayıtlar.
  • $: mevcut seçim. Küme ifadesi hiç yazılmamış gibidir.
  • Önceki seçim ve ileri alınan seçim için ayrı sıralı tanımlayıcılar.
  • Yer imi adı ya da alternatif durum adı.

Değiştirici, açılı parantez içinde başlangıç kümesini değiştirir: bir alanın değerlerini sabitler, kaldırır ya da başka bir ifadeden türetir. Yalnızca değiştirici yazarsanız başlangıç kümesi mevcut seçim olarak kabul edilir.

Örnekler:

Sum({1} Sales) Sum({$<Region={"Marmara"}>} Sales) Sum({$<Region=>} Sales) Sum({1<Region={"Marmara"}>} Sales)

İlk satır seçimden bağımsız toplam satıştır. İkincisi mevcut seçimleri koruyup bölgeyi Marmara ile değiştirir. Üçüncüsü bölge alanındaki seçimi kaldırır, diğer seçimler geçerli kalır. Dördüncüsü bütün seçimleri yok sayıp yalnızca Marmara'yı hesaplar. Bu kalıplar, günlük işte yazacağınız set ifadelerinin büyük kısmının temelidir.

Adım adım: seçimden bağımsız pay hesabı

Yaygın bir rapor ihtiyacı, seçili bölgenin toplam satış içindeki payını göstermektir. Yaklaşım şu adımlarla kurulur.

Birinci adım: Payda için seçimi yok sayan bir ölçü yazın. Sum({1} Sales) bütün veriyi kapsar. Seçim ne olursa olsun değişmez.

İkinci adım: Pay için seçime duyarlı normal ifadeyi kullanın. Sum(Sales) kullanıcının daralttığı veri üzerinde hesaplanır.

Üçüncü adım: İkisini bölün: Sum(Sales) / Sum({1} Sales). Sayı biçimini yüzde olarak ayarlayın.

Dördüncü adım: Yalnızca tek alanın seçimini yok saymak istiyorsanız, bütün seçimleri değil o alanı sıfırlayın. Sum({$<Region=>} Sales) bölge dışındaki filtreleri korur. Örneğin kullanıcı yıl ve ürün grubunu filtrelemişse, payda yine o yıl ve ürün grubuna bağlı kalır ama bölgeler arasında toplam alınır. Raporlarda "bu bölgenin kendi filtremiz içindeki payı" sorusu çoğunlukla budur.

Kontrol: Tek bir bölge seçip pay değerinin hesap makinesiyle bölünen sayılarla örtüştüğünü doğrulayın. Hiçbir seçim yokken payın tamamı göstermesi beklenir.

Operatörler ve önceki seçim

Küme tanımlayıcıları operatörlerle birleştirilir: artı birleşim, eksi fark, çarpı kesişim, bölü ise simetrik farkı verir. Belgedeki örnek, {1-$} ifadesinin mevcut seçimin dışında kalan kayıtları ifade ettiğidir.

Pratik kullanım: Kullanıcı bir bölge seçmişse, "seçili olmayan bölgelerin toplamı" için Sum({1-$} Sales) yazabilirsiniz. Bu, seçili bölgeyle diğerlerini karşılaştıran grafiklerde işe yarar.

Önceki seçim tanımlayıcısı, kullanıcının bir filtreden diğerine geçişinde durumları karşılaştırmak için kullanılabilir, ancak bu davranış kullanıcının tıklama sırasına bağlıdır. Raporun anlamı kullanıcının hangi sırayla tıkladığına bağlı kalmamalıdır. Bu nedenle üretim raporlarında genellikle sabit bir kural tercih edilir: yer imi ya da değiştiriciyle açıkça tanımlanmış dönem.

Bir sınır daha: Değiştiriciler yalnızca tanımlayıcılara uygulanır, operatörlü ifadeye değil. {1-$<Region={"Marmara"}>} ifadesinin değiştiricisi yalnızca $ tarafına bağlanır. Beklenmedik sonuç görürseniz önce ifadeyi parçalara ayırıp her parçayı ayrı bir tabloda deneyin.

P() ve E() ile alanlar arası koşul

Bazı sorular tek alanla çözülmez: "geçen yıl alışveriş yapıp bu yıl hiç alışveriş yapmayan müşteriler". Burada bir alanın değerleri, başka bir alanın koşuluna göre belirlenir. Qlik bunun için eleman kümesi fonksiyonlarını sunar: P() olası değerleri, E() ise dışlanan değerleri döndürür.

Yardım belgesindeki mantıkla bir örnek: Sum({<Customer=P({1<Year={$(=Max(Year)-1)}>} Customer)>} Amount). Bu ifade geçen yıl işlem yapmış müşterileri bulur ve onların tutarını toplar. Dikkat: Bu ifade tutarı yalnızca geçen yılla sınırlamaz. Müşteri listesi geçen yıldan gelir, tutar ise mevcut seçime göre hesaplanır. Kaybedilen müşteri analizinde E() ile bu ters çevrilir.

Önemli sınırlama: P() ve E() içinde yalnızca doğal kümeler kullanılabilir. Yani basit bir seçimle tanımlanabilen kayıt kümeleri. Operatörlü, doğal olmayan bir kümeyi buraya koymak beklenmedik sonuç verebilir. Bu fonksiyonlar başka ifadelerin içinde değil, set değiştiricisinin içinde kullanılır.

Dolar işareti genişletmesi ile dinamik değerler

Değiştiriciye sabit bir değer yazmak yerine, bir ifadenin sonucunu koymak isteyebilirsiniz. Örneğin en son yılı hep otomatik bulmak için: Sum({$<Year={$(=Max(Year))}>} Sales). Dolar işareti genişletmesi ifade ayrıştırılmadan önce hesaplanır ve sonucu ifadenin içine metin olarak yerleştirilir.

Burada sık yapılan hata, genişletmenin kullanıcının seçimlerinden etkilenmesidir. Kullanıcı başka bir alanda seçim yaptıysa Max(Year) daralmış veriden hesaplanır. Bunu önlemek için genişletmenin içinde de küme kullanın: Max({1} Year). Bir önceki yıl için: Sum({$<Year={$(=Max({1} Year)-1)}>} Sales).

Metin sonuçlarda tırnak şarttır. Sonuç bir ad ise çift tırnakla sarılmazsa söz dizimi hatası alırsınız. Sayısal sonuçlarda ise genişletmenin alanın biçimiyle uyuşması gerekir. Tarih alanlarında biçim farkı yüzünden filtre boş küme döndürebilir.

Bir diğer kural: Genişletmenin dışındaki küme ifadeleri, genişletmenin içindeki hesabı etkilemez. Dışarıdan yazdığınız küme, içerideki toplamı daraltmaz. İçerideki hesabın kapsamını içeride tanımlayın.

Sık yapılan hatalar ve kontrol listesi

  • Alan adı yazımı: Alan adları büyük küçük harfe duyarlıdır. Year ile year farklı alanlardır. Boş sonuç görürseniz önce alan adını veri modeli görüntüleyicisinden kopyalayın.
  • Değer tırnağı: Boşluk ya da özel karakter içeren değerler çift tırnakla yazılır. Joker karakter içeren aramalar (örneğin M ile başlayan bölgeler) de çift tırnak içinde yazılır.
  • Küme yok sayma: {1} bütün seçimleri siler, filtre bölmesindeki kullanıcı beklentisini bozabilir. Yalnızca gereken alanı sıfırlayın.
  • Çift sayım: Aynı fonksiyonda hem sol hem sağ tablo ilişkisi bozuk bir veri modeli varsa, set analizi hatayı gizlemez, çoğaltır. Önce modeli doğrulayın.
  • Performans: Çok sayıda iç içe P() ve dolar genişletmesi büyük uygulamalarda yavaşlatır. Tekrar eden hesapları veri yükleme betiğinde bayrak alanı olarak hazırlamak daha ucuzdur.
  • Okunabilirlik: Uzun set ifadelerini ana ölçü kütüphanesine bir kez yazıp değişkenle çağırın. Aynı mantığı onlarca grafikte kopyalamak bakımı zorlaştırır.

Bir ölçüyü yayınlamadan önce: seçim yokken, tek seçimle ve çelişen seçimlerle (örneğin hiç satış olmayan bir kombinasyon) denenmiş olmalıdır.

Mindset programlarında nerede çalışılır?

Qlik Sense Temelleri eğitimi, iş analitiği ekiplerinde rapor geliştiren ve uygulama sahibi olan analistler için tasarlanmıştır. Müfredatında "Gelişmiş İfade Dili ve Set Analizi" modülü ayrı bir başlık olarak yer alır. Bunun yanında "Veri Modeli Tasarımı ve Performans Optimizasyonu" modülü, set ifadelerinin doğru çalışması için gereken veri modeli temelini ele alır.

Kurumsal ekiplerde bu bilgi, finans raporlamasında dönemsel karşılaştırma panolarını standartlaştırmak ya da satış operasyonunda hedef-gerçekleşen panolarını tek bir ölçü kütüphanesinde toplamak için uygulanır. Eğitimin ayrıntıları eğitim sayfasında yayımlanır.

İlgili Mindset programı

Qlik Sense Temelleri

Sık sorulanlar

Sık sorulan sorular

Set analizi ile If() ifadesi arasındaki fark nedir?

If() ifadesi her satır için koşulu ayrı ayrı değerlendirir ve mevcut seçimlerin içinde çalışır. Set analizi ise toplulaştırmadan önce hangi kayıt kümesinin kullanılacağını belirler ve seçimleri yok sayabilir. Büyük veride set analizi genellikle daha öngörülebilir çalışır, seçimden bağımsız toplam gerektiğinde ise doğal yoldur.

Set analizinde dolar işareti ile eşittir işareti birlikte neden kullanılır?

Dolar işareti genişletmesi, içindeki ifadeyi hesaplayıp sonucu metin olarak yerleştirir. Başına eşittir koymak bunun bir formül olduğunu bildirir. Böylece Max(Year) gibi bir hesabın sonucu, değiştiricide sabit değer yerine geçer ve rapor her yeni veriyle kendini günceller.

Seçimi yok saymak raporu bozar mı?

Kullanıcı filtre yaptığında bazı ölçülerin değişmemesi, yanlış anlaşılabilir. Bu yüzden seçimden bağımsız ölçüleri grafik başlığında ya da etiketinde belirtmek iyi uygulamadır. Yalnızca gereken alanı sıfırlayan değiştirici, bütün seçimleri silen tanımlayıcıdan daha az sürpriz üretir.

Set analizi Qlik Sense'e özgü müdür?

Küme tabanlı ifade sözdizimi Qlik'in ilişkisel çıkarım motorunun bir parçasıdır ve QlikView'da da benzer biçimde bulunur. Diğer araçlarda eşdeğer işi başka yöntemler yapar, örneğin Power BI'da DAX filtre fonksiyonları. Mantık benzer, söz dizimi ve davranış ayrıntıları farklıdır.

Set ifadesi boş döndüğünde nereden başlamalı?

Önce alan adını ve değer yazımını kontrol edin, sonra tırnakları doğrulayın. Ardından ifadeyi basit bir tabloda parçalara ayırıp her parçanın tek başına ne döndürdüğüne bakın. Dolar işareti genişletmesi varsa onu ayrı bir ölçü olarak hesaplayıp sonucunu görün.

Qlik Sense Set Analizi Nasıl Yazılır? Örneklerle