Qlik

Qlik Sense Ders 23: Zaman Analizleri

Bugün size Qlik Sense’teki -Tableau’da parametre olarak isimlendirdiğimiz- değişkenlerin (variable) kullanımından bahsedeceğim.

  • Tableau’da zaman analizlerinin nasıl yapıldığını öğrenmek için buraya tıklayabilirsiniz.

Qlik Sense’te satışlarımızın günlük, aylık ve yıllık gösterimini görelim.

1J5iX8q04f

Öncelikle en sol alttaki değişken işaretine tıklayarak (1) ve ardından Yeni oluştur diyerek (2) bir değişken yaratalım.

Değişkenin ismine Tarih diyerek içerisine kullanacağımız günlük, aylık veya yıllık ifadelerinden birini yazalım ve kalem işaretine tıklayarak kaydedelim. Buraya yazdığımız ifade default olarak dashboard’u görüntülediğimizde ortaya çıkan ifade olacak. Örnek; Day([Sipariş Tarihi]) 

flk2ş3lj6

Soldaki menüden Özel Nesneler -> Qlik Dashboard Bundle -> Variable input nesnesini ekrana sürükleyip bırakalım. Görünüş bölümündeki Genel kısmından başlığı kapatıp açabilirsiniz.

Variable kısmındaki Name için oluşturduğumuz değişken olan Tarih‘i; Show as için de Buttons‘u seçelim.

f43f

Values kısmına geldiğimizde Add Alternative diyerek günlük, aylık ve yıllık ifadelerimizi sırayla ekleyelim.

=Day([Sipariş Tarihi])
=Month([Sipariş Tarihi])
=Year([Sipariş Tarihi])

İfadelerimiz aşağıdaki şekilde görünecektir.

şl23kltşk

Örnek olarak çizgi grafiği eklemek için Grafikler -> Çizgi Grafiği ekrana sürükleyip bırakalım. Boyut olarak =$(Tarih) diyelim ve hesaplamamızı seçelim.

şlkişkl

Bitti diyerek grafiğinizin son halini görüntüleyebilir ve değişken seçiminizi yapabiliriz.

Eğer script ile çalışıyorsanız değişkenleri arka tarafta da tanımlayabilirsiniz.

LOAD
*,
Month([Sipariş Tarihi]) as Ay,
Year([Sipariş Tarihi]) as Yıl,
Day([Sipariş Tarihi]) as Gün,
MonthName([Sipariş Tarihi]) as AyYıl,
'Q'& Ceil(Month([Sipariş Tarihi])/3) as Çeyrek from blabla;

Tanımlamayı yaptıktan sonra Variable input‘taki Values kısmına değişken isimlerini eklememiz yeterlidir.

ewçmf4

Not:  Günü 1, 2, 3 gibi değil de 1/10/2020 şeklinde görmek isterseniz Date fonksiyonunu, ay ve yıl olarak 05/2020 şeklinde görmek isterseniz Date(monthstart([Sipariş Tarihi]), ‘MM-YYYY’) ifadesini kullanabilirsiniz.

Opsiyon 1: Bu ifadeleri grafiğinize alternatif boyut olarak ekleyebilir; dashboard’un son halini görüntülediğinizde grafik üzerinden boyutunuzu seçerek değiştirebilirsiniz.

fşqkif

şrkil34

Seçilen boyut bazında aşağıdaki şekilde çalışabilirsiniz.

k3şkşl64kişk

Opsiyon 2: Yeni bir boyut yaratarak detaya in (drill down) oluşturabilir böylece grafik üzerinde tıklayarak gün bazına kadar inebilirsiniz.

Buradan konuyla ilgili videoyu izleyebilirsiniz.

3lk2liki5

Aşağıda görünen şekilde grafiğin üzerine tıklayarak ilgili tarihi seçtiğinizde sırasıyla yıl, ay ve günü görebilirsiniz.

Bu slayt gösterisi için JavaScript gerekir.

Not: Sütun ve çizgi grafiklerde kullanabildiğimiz aşağıdaki özellik ile grafiğinizin üzerinde belirttiğiniz aralığa göre filtreleme yapabilirsiniz. Bunun için grafiğin sayısal veriler bulunan eksenine tıklayıp sağa veya sola çekmeniz yeterlidir.

hşkjklj8

Not 2: Buradan kopyala yapıştır yaptığınız hesaplamalar için bir hata ile karşılaşmanız durumunda öncelikle ‘ ‘ gibi işaretleri kontrol ediniz.

Qlik

Qlik Sense Ders 22: Gruplama

Qlik Sense’te gruplama yapmak Tableau’daki kadar basit değil. Bunun için minik bir hesaplama yazmamız gerekiyor.

Wildmatch, match veya mixmatch fonksiyonlarını kullanarak veri kolonunun içindeki alan isimlerini aşağıdaki şekilde gruplayabiliriz.

Not: Gruplamak istediğimiz alanı şu harf ile başlayan, biten veya içinde şu harf, kelime geçen şeklinde kullanmak istiyorsak aşağıdaki ilk örnekte olduğu gibi ” * ” işaretini kullanmamız gerekir. ” * ” gibi özel işaretleri kullandığımızda ve büyük/küçük harf duyarlılığını göz önünde aldığımızda eşleştirmeyi yapmak için wildmatch fonksiyonundan yararlanırız. Eğer yalnızca büyük/küçük harf duyarlılığını göz önüne alacaksak mixmatch fonksiyonunu, sıradan eşleştirmeler için ise match fonksiyonunu tercih ederiz.

Wildmatch fonksiyonunu Kullanarak Gruplama

Kategori adlarını gruplayarak oluşturduğumuz yeni kategori boyutunda artık aşağıdaki ekran görüntüsünde yer alan veri alanları bulunacaktır.

=if(wildmatch([Kategori Adı],'Kadın*'),'Kadın Giyim', //Kadın ile başlayan
if(wildmatch([Kategori Adı],'*Giysileri'),'Çocuk Giyim',
if(wildmatch([Kategori Adı],'Erkek*'),'Erkek Giyim','Diğer')))

Sonuç

ewllwflriwk34

Mixmatch fonksiyonunu Kullanarak Gruplama

=if(mixmatch([Kategori Adı],'Bebek giysileri'),'Bebek Giysileri',
if(mixmatch([Kategori Adı],'Çocuk Giysileri'),'Çocuk Giysileri','Diğer'))

Sonuç

ktiş

Match fonksiyonunu Kullanarak Gruplama

=if(match([Kategori Adı],'Bebek Giysileri'),'Bebek Giysileri',
if(match([Kategori Adı],'Çocuk Giysileri'),'Çocuk Giysileri','Diğer'))

Sonuç

wqf32şifki3şk

Eğer bir boyut değil de hesaplama gruplamak istersek class fonksiyonunu kullanabiliriz.

Örneğin; Tutar bilgisini 100’er aralıklarla 20’den başlayacak şekilde ve ismine Ciro diyerek gruplandıralım.

=class([Tutar],100,'Ciro',20)

Sonuç

ş3l2ki

Bu şekilde basit ifadeler yazarak gruplamalarınızı kolaylıkla yapabilirsiniz.

Qlik

Qlik Sense Ders 20: Performans İyileştirmesi

Qlik Sense’te daha hızlı çalışmak için;

  1. Çok büyük veri setleriyle çalışılıyor ise bağlantı sayısının fazlalığı özellikle grafiksel hesaplamalarda performansı etkiler bu nedenle veriyi olabildiğince normalize tutun. Snowflake gibi (ürün ürün kategori vb.)
  2. Veri modelinde syntetic key ve circular reference oluşmamasına dikkat edin.
  3. Kullanılmayan alanları modelde tutmayın.
  4. Kompozit anahtar alan yaratırken string işlem değil autonumber() kullanın. Örneğin; bölge& ‘-‘ &yıl yerine autonumber(bölge,yıl) gibi.
  5. Çok büyük fact tablolarınız varsa başlık ve detay join‘i performansı arttıracaktır.
  6. Geçmiş yıl verileriniz değişmeyeceği için qvd‘ye basın. Mevcut yıl verilerinizi yine canlı veri kaynağınızdan alarak kullanabilirsiniz. Qvd dosyaları sıkıştırılmış olduğu için daha hızlı çalışacaktır.
  7. Arama performansını iyileştirmek için akıllı aramada (smart search) görmek istemediğiniz alanları belirtin.
  8. TimeStamp verinizi tarih ve saat olarak parçalayın. Gerek olmayan timestamp alanlarını kullanmayın.
  9. Qvd oluşma aşamasında fonksiyonlarınızı yazın. Qvd dosyalarını optimized load olarak kullanın.
  10. Ana öğeleri (master items) ve değişkenleri kullanın.
  11. Sayfa tasarımlarında çok fazla obje kullanmayın (10+).
  12. Set analizleri dahil string ifade karşılaştırmaları yapmamaya çalışın flag alanları kullanın.
  13. Tablolarda 15’ten fazla alan kullanacaksanız koşullu seçimlerle kurgulayın.
  14. Mümkün olduğunca set analizlerini kullanın. Konuyla ilgili yardım almak için buraya tıklayarak videolarımızdan yararlanabilirsiniz.
  15. Karışık hesaplamalarınızı yükleme sürecinde hazırlayın.
  16. Rapor tasarım ekranında hesaplanmış boyut oluşturmamaya ve aggr fonksiyonunu kullanmamaya çalışın.
  17. İç içe if hatta if kullanımını minimumda tutarak bunun yerine mapping tablolarını kullanın.
  18. Yavaş açılan bir rapor söz konusuyla seçim imini (bookmark) kullanarak raporun o filtreyle açılmasını sağlayabilir veya eklentiler bölümündeki veri işleme seçeneğinde istediğiniz koşulu belirterek raporu açabilirsiniz. Örneğin; veri işleme sekmesine getselectedcount(müşteriadı)>0 hesaplamasını yazıp görüntülenen mesajda “En az 1 müşteri seçimi yapmadan rapor görüntülenemez” yazısını gösterebilirsiniz. Böylece rapor 1 veya 1’den çok müşteri seçilerek çalışacak seçim yapılmadığında çalışmayacaktır.
  19. Son olarak uygulama üzerinde yapılan yüksek aktivitelerin RAM ve CPU kullanımına yansıyacağını unutmayın.
Qlik

Qlik Server Ders 4: Veri Yenileme

Veri yenilemek için QMC‘den (yönetim konsolu) görev tanımı yapmamız gerekir.

Bunun için QMC’ye girdikten sonra Task bölümüne gelerek Create New diyelim.

wu5ururrtyjt76e.png

Oluşturduğumuz göreve bir isim vererek verisini yenilemek istediğimiz uygulamayı seçelim.

gq3ggq4.png

Execution bölümünde Task session timeout‘ta veri yenilemenin kaç dakika sonra zaman aşımına uğrayacağını, Max retries‘ta en fazla kaç deneme olacağını belirtebilirsiniz.

Ardından Actions‘a gelerek tetikleyici zamanını seçelim.

Örneğin, veriyi saatlik olarak yenileyelim.

Bunun için Create New Hourly trigger‘ı seçelim ve trigger’ın üzerine çift tıklayarak ayarlarını yapalım.

Açılan ekrandan tetikleyiciye bir yeni bir isim verebilir zaman dilimi vb. ayarlayabiliriz.

Veri yenilemesinin başlayacağı tarihi saat ile birlikte belirttikten sonra kaç saat ve dakikada bir yenilenmesini istediğimizi girelim. (Schedule)

Son olarak veri yenilemesinin biteceği tarih ve saati yazalım. (End)

Eğer burayı Infinite olarak bırakırsak belirttiğimiz maksimum deneme süresi kadar veri yenilenmesi devam eder.

wrfwgggg.png

Ok diyerek görevi oluşturalım.

Eğer görevin o an çalışmasını isterseniz görevi seçtikten sonra Start butonuna tıklayabilirsiniz.

Qlik

Qlik Server Ders 3: Yeni Klasör Oluşturma

Qlik Server’da klasör (stream) yaratmak için QMC‘den (yönetim konsolu) Streams‘e geliyoruz.

Açılan ekrandan Create New diyoruz.

wefgfwf.png

Klasöre bir isim verdikten sonra Apply butonuna tıklıyoruz. (isterseniz TAGS ile etikette verebilirsiniz)

2r42rr.png

Açılan ekrandan oluşturduğunuz klasörün Security Rule‘larını seçebilir ya da yazabilirsiniz.

r2r2r2r2r-e1562065872114.png

Apply diyerek klasörünüzü oluşturabilirsiniz.

Qlik

Qlik Server Ders 2: Uzantıyı İçeri/Dışarı Aktarma

Uzantıların nereden indirildiğini, ne işe yaradığını ve nasıl kullanıldığını buradaki yazımda sizinle paylaşmıştım.

Peki Qlik Server’a bu uzantıları nasıl ekliyoruz ya da var olan uzantıları dışarı nasıl aktarıyoruz?

Bir uzantıyı içeri aktarmak için QMC (Qlik Management Console) ekranına gelerek sol taraftaki menüden Manage Resource‘in altındaki Extensions‘ı seçelim.

fwegwgfr

Aşağıdaki ekrandan Import butonuna tıklayalım.

efr2.png

İçeri aktarmak istediğimiz uzantıyı zip dosyası olarak seçelim.

fewqf

Import butonuna basarak uzantıyı içeri aktaralım.

Uzantıyı dışarı aktarmak için dışarı aktarmak istediğiniz uzantıyı sistemden seçtikten sonra Export butonuna basmanız yeterlidir.

Qlik

Qlik Server Ders 1: Uygulamayı İçeri/Dışarı Aktarma

Bir .qvf (qlik uygulama dosya uzantısı) dosyasını Qlik Server‘a yüklemek için QMC (Qlik Management Console) ekranına gelerek sol taraftaki menüden Manage Content‘in altındaki Apps‘i seçelim.

shjytjtjek.png

Açılan ekrandan Import butonuna tıklayalım.

wrqqwgw.png

Server’a eklemek istediğimiz uygulamayı seçerek bir isim verelim.

rwttwet.png

Eklediğiniz uygulamayı, var olan bir uygulamayla değiştirmek için Replace existing app diyebilirsiniz.

Burada bilmemiz gereken sarı uyarıda da görüldüğü gibi mevcut veri bağlantısının adı ile içeri aktarılan uygulamadaki veri bağlantısının adı aynı ise içe aktarım olmaz.

Aynı şekilde bir uygulamayı dışarı aktarmak için Apps-> More Actions -> Export diyoruz.

kljljijijişl.png

Dışarı aktarmak istediğimiz uygulamayı ister içerisindeki veri ile isterseniz Export app with data seçeneğini işaretlemeyerek verisi olmadan dışarı aktarabilirsiniz.

lkşKş.png

Ongoing transports bölümünde işlem sonucunu ve süresini görebilirsiniz.

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.

Qlik

Qlik Sense Ders 18: Web’te Arama

Raporda üzerine tıkladığımız veri bilgisini web üzerinde nasıl kullanırız?

Örnek; Google.

Çok basit bir tablo oluşturuyorum.

yqryy

Buradaki Bilgi alanını aşağıdaki ifadeyi yazarak oluşturuyoruz.

='https://www.google.com.tr/#q='&[Ülke]

Parametre alan istediğimiz bir linki kullanarak istediğimiz veriyi browser’dan aratabiliriz.

rgwgqg.png

Etiket ismini düzenledikten sonra Sunum‘u, URL seçerek URL etiketine, google’da aratmak istediğimiz alan ismini yazıyoruz.

Böylece raporun üzerinde oluşturduğumuz alana tıkladığımızda ülke isimleri google’da aratılacaktır.