Qlik

Qlik Sense Ders 29: İleri Set Analizi

Temel set analizi örneklerini buraya tıklayarak inceleyebilirsiniz.

İleri set analizi örneklerine otomatik set analizi ekleyerek başlayalım.

Filtreden seçimi yaptıktan sonra ifade düzenleyicisine gelerek Alan seçimleri yapıp Ekle butonuna tıkladığımızda ifade otomatik olarak yazılır.

Örneğin; birim fiyatı 400’den küçük olan satış değerlerinin toplamını görmek istiyorum ve filtreden seçiyorum. Bu durumda, KPI objesinin içine ifadeyi aşağıdaki şekilde yazdırabilirim.

3zkeBDuwAd

2015 dışındaki yıllarda satış yapılan müşteri sayısı

Count({<[Sipariş Tarihi.autoCalendar.Year]={*}-{'2015'}>} 
distinct [Cari Kod])

Satış Değeri 1000 TL’nin üzerinde olan müşteri sayısı

Count({<Tutar={">1000"} >}distinct [Cari Kod])

Toplam Satış Değeri 1000 TL’nin üzerinde müşteri sayısı

Count({<[Cari Kod] = {"=sum(Tutar)>1000"} >}distinct [Cari Kod])

Bebek Giysileri kategorisinden alışveriş yapan müşterilerden elde edilen toplam Satış

sum({<[Cari Kod]=P({<[Kategori Adı]={'Bebek Giysileri'}>} [Cari Kod])>}
Tutar)

Hiç Bebek Giysileri kategorisinden alışveriş yapmamış müşterilerden elde edilen toplam Satış

sum({<[Cari Kod]=E({< [Kategori Adı]={'Bebek Giysileri'}>} [Cari Kod])>} 
Tutar)

3Wzyh027UW

Yukarıdaki şekilde filtrelerden seçilen durumlar için;

2015 yılında Çocuk Giysilerinden alışveriş yapan müşterilerden elde edilen toplam Satış (Kesişim) (P fonksiyonu, possible)

sum({<[Cari Kod]=P({Durum1} [Cari Kod])*P({Durum2} [Cari Kod])>} Tutar)

2016 yılında alışveriş yapan ama İskandinavya bölgesinden alışveriş yapmayan müşterilerden elde edilen toplam Satış (Fark) (E fonksiyonu, excluded)

sum({<[Cari Kod]=P({Durum1} [Cari Kod])-P({Durum2} [Cari Kod])>} Tutar)

Not: Alternatif durumlarda tek yapılan, 2 tane alternatif durum oluşturduktan sonra birinci filtre bölmesine ilk alternatif durumu, ikinci filtre bölmesine de diğer alternatif durumu tanımlamaktır. Sayıların gösterildiği tabloda ifadenin dışında bir alternatif durum tanımlanmamıştır.

Kesişim durumuyla benzer

sum( {$<[Cari Kod] = P({1<[Kategori Adı]={'Bebek Giysileri'}>})>} Tutar)

Seçim imi (Bookmark) tanımlayalım. Örneğin; Avrupa ve İskandinavya bölgesini filtreye attıktan sonra bu iki bölge için seçim içi oluşturuyorum.

Avrupa bölgesi ile filtreden seçtiğimiz alanın kesişimi

sum({$*Avrupa} Tutar)

Avrupa bölgesi ile filtreden seçtiğimiz alanın birleşimi

sum({$+Avrupa} Tutar)

Seçim imi oluşturduğumuz için artık bu alanları direk set analizinin içine yazabiliriz.

Avrupa ve İskandinavya bölgelerindeki toplam Satış

sum({Avrupa+İskandinavya} Tutar)
Qlik

Qlik Sense Ders 19: Set Analizi

QlikView.jpg

Set analizi, belirli seçimlerle tanımlanan veri değerleri grubu oluşturulmasına denir.

Set ifadesi aşağıdaki bölümlerin bir birleşiminden oluşur:

  • Tanımlayıcılar: Set ifadesi ile ifadenin geri kalanında değerlendirilen öğe arasındaki ilişki bir veya daha fazla tanımlayıcı ile tanımlanır. Basit bir ifade tek bir tanımlayıcıdan (geçerli seçimdeki tüm kayıtlar anlamına gelen {$} işareti gibi) oluşur.

  • İşleçler: Birden fazla tanımlayıcı varsa tanımlayıcıların temsil ettiği veri kümelerinin örneğin bir alt küme veya üst küme oluşturmak üzere nasıl birleştirildiğini belirtmek suretiyle veri kümesini daraltmak için işleç veya işleçler kullanılır.

  • Değiştiriciler: Seçimi değiştirmek için küme ifadesine değiştirici veya değiştiriciler eklenebilir. Bir değiştirici kendi başına kullanılabileceği gibi bir tanımlayıcıyı değiştirerek veri kümesine filtre uygulamak için de kullanılabilir.

Yukardaki yazının tamamını okumak için buraya tıklayabilirsiniz.

Bilmemiz gerekenler:

  1. Qlik, BNF (Backus-Naur formalism) formatında script dili kullandığı için { } ve < > ile bol bol karşılaşacağız.
  2. Set ifadelerini toplama fonksiyonlarının içinde kullanacağız ve daima { } içerisinde yazacağız.
  3. Eğer bir değişken çağrıyorsak başına $ koyacağız. Aynı zamanda $ yaptığımız seçimlerin kümesini gösteriyor.
  4. Set ifadesinin içinde belirttiğiniz koşul, ifadenin içerisinde kullanılan boyut filtresinden etkilenmez. Örneğin, Sum({<Yıl={2019}>} Tutar) ifadesi, yıl filtresinden etkilenmeyecektir.

    Sum({<Yıl={2019}>} Tutar) set analizi, {<Yıl={2019}>} set ifadesidir.

Örnekler:

Dimensions

Sadece Avrupa ve İskandinavya bölgeleri

=Aggr(only ({<[Bölge Adı]={"Avrupa","İskandinavya"}>} [Bölge Adı]), 
[Bölge Adı])

Avrupa ve İskandinavya bölgesine ait müşteriler

=Aggr(only ({<[Bölge Adı]={"Avrupa","İskandinavya"}>} [Cari Adı]), 
[Cari Adı])

Measures

2019 yılı Satış

Sum( {< Yıl={2019} >} Tutar)

2018 ve 2019 yılı Satış

Sum( {< Yıl={2018,2019} >} Tutar)

Filtre bağımsız 2019 yılı Satış

Sum( { 1 <Yıl={2019} >} Tutar)

Eğer süslü parantezin yanına 1 yazdıktan sonra set ifadesini yazarsak bu ifade, hiçbir filtreden etkilenmez.

Seçilen filtre hariç 2019 yılı Satış

Sum( {1-$ <Yıl={2019} >} Tutar)

Filtre bağımsız Satış

Sum( {1} Tutar)

Belirtilen ifadenin hiçbir filtreden etkilenmesini istemiyorsak ifadenin başına yalnızca {1} yazıyoruz.

Ocak 2014 Satış

Sum( {< Ay={01} , Yıl={2014} >} Tutar)

2019 yılında Amerika hariç Satış

Aşağıdaki ifade yıl ve ülke filtrelerinden etkilenmeyerek devamlı olarak 2019 yılı Amerika hariç satışı gösterir.

Sum( {< Yıl={2019}, Ülke=-{'USA'} >} Tutar)

Buradaki ülke isminin önündeki – işaretini aşağıdaki şekilde ülkeden sonra kullanırsak ifade yine yıl filtresinden etkilenmez fakat ülke filtresinden etkilenerek seçilen ülkenin satışını gösterir. Tabii tek bir şartla. Amerika hariç🙂

Sum( {< Yıl={2019}, Ülke-={'USA'} >} Tutar)

Çeyrek filtresi bağımsız 2019 yılı Satış

Sum( {< Yıl={2019}, Çeyrek={*} >} Tutar)

2015 – 2018 arası Satış

Sum( {< Yıl={">=2015 <=2018"} >} Tutar)

Aynı ifadeyi tarih alanınızdan üretilen otomatik yıl ile aşağıdaki şekilde yazabilirsiniz.

Sum( {<[Sipariş Tarihi.autoCalendar.Year]={"<=$(=MakeDate(2018)) 
>=$(=MakeDate(2015))"} >} Tutar)

Yıl filtresinden seçilen yıllar arasındaki Satış

Sum( {< Yıl={">=$(=Min(Yıl)) <=$(=Max(Yıl))"} >} Tutar)

Aynı ifadeyi tarih alanınızdan üretilen otomatik yıl ile aşağıdaki şekilde yazabilirsiniz.

Sum( {<[Sipariş Tarihi.autoCalendar.Year]=
{">=$(=Min([Sipariş Tarihi.autoCalendar.Year])) 
<=$(=Max([Sipariş Tarihi.autoCalendar.Year]))"}> } Tutar)

Yıl filtresiyle değişen dinamik başlık vermek için aşağıdaki ifadeyi yazabilirsiniz.

='>=$(=year(Min([Sipariş Tarihi.autoCalendar.Year]))) 
<=$(=year(Max([Sipariş Tarihi.autoCalendar.Year])))'

Aynı ifadeyi (filtreden seçilen yıllar arasındaki satış) değişken tanımlayarak aşağıdaki şekilde yazabiliriz.

Sum( {< Yıl={">=$(=vMin) <=$(=vMax)"} >} Tutar)

Değişkenden sonra = koymak zorunda değilsiniz fakat program çok nadiren de olsa bu noktada mızmızlanabiliyor.

Değişkenleri aşağıdaki şekilde oluşturarak max ve min yılı kullanabilirsiniz.

wqf

Aynı ifadeyi tarih alanınızdan üretilen otomatik yıl ile aşağıdaki şekilde yazabilirsiniz.

Sum({<[Sipariş Tarihi.autoCalendar.Year]={">=$(vMin) <=$(=vMax)"}>} Tutar)

Yıl filtresiyle değişen dinamik başlık vermek için aşağıdaki ifadeyi yazabilirsiniz.

='Değişken >=$(=Year(vMin)) <=$(=Year(vMax))'

Buradaki değişkenler = Max([Sipariş Tarihi.autoCalendar.Year]) şeklindedir.

Bölge Adı dışındaki filtreler bağımsız Satış

Bir hesaplamanın spesifik bir boyut filtresi dışında hiçbir filtreden etkilenmemesi için kullanmamız gereken ifade şekli aşağıdaki gibidir.

Sum({1<[Bölge Adı] = $::[Bölge Adı]>} Tutar)

Bölge Adı bağımsız olarak diğer tüm filtrelerden etkilenen Satış

sum( {<[Bölge Adı]= >} Tutar)

Ka ile başlayan kategorilerin Satışı

sum( {< [Kategori Adı]={"Ka*"} >} Tutar)

Son olarak otomatik set ifadesini nasıl oluşturduğumuzdan bahsetmek istiyorum.

Diyelim ki filtreden çeşitli seçimler yaptınız ve ifade düzenleyicisinin içine girdiniz.

qregeg.png

Sağ bölmede yer alan İfade Ayarla bölümünden Geçerli seçimleri kullan diyerek filtreden seçim yaptığınız değerleri otomatik olarak yazdırabilirsiniz.

Bonus: Footnote yani alt başlık için önceki yıl ile satış farkını aşağıdaki şekilde kullanabilirsiniz. (Otomatik yılı kullanarak)

Şuanki yıl ile önceki yıl Satış farkı

=’Fark: ‘&num(Sum({<[Sipariş Tarihi.autoCalendar.Year] = {“$(=Max(year([Sipariş Tarihi])))”} >} Tutar)-Sum({<[Sipariş Tarihi.autoCalendar.Year] = {“$(=Max(year([Sipariş Tarihi]))-1)”} >} Tutar),’#,##0.00′)

++ Script tarafında ay yıl vs kendiniz oluşturabilirsiniz ya da tarih alanından otomatik olarak üretilen ay, yıl gibi tarih alanlarını kullanabilirsiniz.

Year(Tarih) as Yıl,
Month(Tarih) as Ay,
Week(Tarih) as Hafta,
WeekDay(Tarih) as Haftanın Günleri,
Day(Tarih) as Gün,
'Q' & Ceil(Month(Tarih) / 3) as Çeyrek,
Date(monthstart(Tarih), 'MM-YYYY') as AyYıl

Set analizi için temelde göstereceğim ifadeler bu şekildeydi.

İleri set analizlerini buraya tıklayarak inceleyebilirsiniz.