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

Örnekler:

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(2015)) >=$(=MakeDate(2013))"} >} 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.

Ka ile başlayan kategori adları

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 hazırladığım ifadeler şimdilik bu şekilde ilerleyen derslerde de script yazmaya devam edeceğiz.

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.