Genel · Qlik · Tableau

Tableau vs Qlik Sense

Veriye dayalı stratejiler izleyerek öne geçmek isteyen şirketler, doğru belirlenmiş iş zekası ve raporlama teknolojilerine ihtiyaç duyarlar. Tableau ve Qlik Sense gibi çok sayıda bulunan iş zekası yazılımlarından doğru olanı seçmek başarı için kritik bir noktadır. Gereksinimler ve öncelikler göz önüne alınarak değerlendirildiğinde iş zekası yazılımlarının birbirinden nasıl farklılaştığı ortaya çıkar.

İş zekası alanının iki popüler aracı olan Tableau ve Qlik Sense her ne kadar aynı amaca hizmet ediyor gibi görünse de aralarında ciddi farklılıklar barındırır. İkisi de self servis raporlamayı hedef alırken Tableau veri görselleştirmesine, Qlik Sense ise veri yönetimine daha çok ağırlık vermiştir. Son kullanıcı, veri noktaları arasındaki ilişki keşfine odaklanırken beklentisini de göz önünde bulundurarak iki yazılımı da rahatlıkla kullanabilir.

Peki Tableau ve Qlik Sense arasındaki belirgin farklılar nelerdir?

  • Tableau, veriye hem canlı hem de bellek içi bağlanabilir. Qlik Sense ise yalnızca bellek içi bağlanır.
  • Qlik Sense’in associative engine sayesinde ortaya daha esnek bir yapı koymasına karşılık Tableau sorgu tabanlı (query-based) bir yaklaşım izler. Her iki yaklaşımında doğru olmasıyla beraber aslında ikisi de birbirinden oldukça farklıdır. Qlik Sense’in özellikle veri yönetimi konusunda sunduğu esneklik, performans konusunda bir adım önde olmasını sağlar.
  • Tableau’da grafikler, son kullanıcı tarafından sürükle bırak ile yapılırken Qlik Sense bu grafikleri hazır olarak sunar. Böylece Qlik Sense’te son kullanıcının sıfırdan grafik oluşturmasına gerek yoktur. Tabii bu durum grafik konusunda ciddi bir sınırlama getirir.
  • Tableau’nun genel olarak tüm ürünlerinin arayüzü oldukça anlaşılır ve öğrenmesi kolaydır. Qlik Sense’te yeni özellikler arttıkça tasarım sıkışmaya başlar. Ayrıca Qlik Sense’in server yönetimi Tableau’ya göre daha karmaşıktır.
  • Belirli analizleri yapmak için Qlik Sense’te script yazmak gerekirken Tableau’da bir çok analiz ve hesaplama hazır olarak bulunur.
  • Qlik Sense’in içerisinde veriyi düzenlemek mümkündür. Tableau’da bunu yapmak için Tableau Prep adında ayrı bir araç kullanılması gerekir.
  • Qlik Sense’te bulunan ilişkisellik modeli Tableau’da yoktur.
  • Alternate States ile Qlik Sense’te kolaylıkla boyutlar arası karşılaştırma yapılabilir. Aynı karşılaştırmayı Tableau’da yapabilmek için hesaplama yazmak gerekir.
  • Tableau’da, Qlik Sense’teki gelişmiş arama özelliği gibi kapsamlı bir arama bulunmaz.
  • Tableau’da formatlama sınırsızken, Qlik Sense’de oldukça sınırlıdır. Detaylara müdahale edebilmek için farklı bir program kullanmak gerekir.
  • Tableau’da tooltip’ler düzenlenebilir; hatta içerisine birbirinden farklı grafikler eklenebilir. Ancak Qlik Sense’te tooltip’ler otomatiktir ve düzenlenemez.
  • Qlik Sense’te script yazılarak her noktaya müdahale edilebilirken Tableau kullanıcılara sunduğu arayüz dışında müdahaleye izin vermez.
  • Qlik Sense’te bulunan pivot tablo yapısı Tableau’da bulunmaz.
  • Bir dashboard’un mobildeki veya tabletteki tasarımı, Tableau’da aynı uygulama içinde otomatik düzenleme dahil her noktasına müdahele edilerek yapılabilir. Ancak Qlik Sense grafikleri kullanılan ekrana göre otomatik dizerek sürükle bırak ile ayrı bir tasarım yapılmasına izin vermez.
  • Tableau’nun içinde herhangi bir uzantıya gerek olmadan web sayfaları kolaylıkla çalıştırılabilir. Qlik Sense’in temelinde böyle bir özellik mevcut değildir.
  • Tableau’da hem grafikler hem de panolar arasında kapsamlı bir aksiyon kullanımı bulunur. Qlik Sense’te aksiyon kullanımı “tıkla ve filtrele” ile sınırlıdır.
  • R ve Python entegrasyonu, Tableau’da oldukça kolay ve optimize çalışır. Bu entegrasyonlar, Qlik Sense’te oldukça meşakkatli yapılmaktadır.
  • Tableau Desktop’taki tüm özellikler Tableau Server’da bulunmaz. Qlik Sense Server’da ise kapsamlı bir şekilde rapor tasarlanabilir.
  • Her iki ürünün de destek kısmı oldukça gelişmiştir. Buna ek olarak Qlik’in Türkçe destek bölümü vardır.
  • Tableau’nun ürünlerinde Türkçe dil desteği şuanda mevcut değildir. Qlik Sense Türkçe olarak kullanılabilir.

Sonuç olarak her iki yazılım içinde iş zekası dünyasında büyük bir potansiyele sahip olduğunu söylemek adil olacaktır.

Qlik

Qlik Sense Ders 31: Pivot/Tablo Renklendirme

Bir pivot tablodaki veya tablodaki hücrelerin arka planını renklendirmek için eklediğimiz hesaplamaya tıklayarak Arka plan rengi ifadesini seçelim.

wqfmişlkf

Not: Örnekler kar oranına göre yapılmıştır. Kar oranı için sum(Kar)/sum(Tutar) hesaplaması kullanılmıştır.

2’li renk vermek için:

if(rowNo()/2=floor(rowNo()/2),RGB(179,102,82),RGB(255,136,105))

işlkişkişk

Belirttiğimiz boyut verisine göre renklendirmek için:

pick(match([Bölge Adı], 'Avrupa', 'Güney Amerika', 'İskandinavya',
'Kuzey Amerika'), brown(), yellow(), magenta(), blue())

wşlkfşelwki

Maksimum ile minumum değer arasında renk geçişi yapmak için:

ColorMix1( rank(total Sum(Kar)/Sum(Tutar)) / NoOfRows(TOTAL),
rgb(230,94,127), rgb(230,204,69))

ş6lk7i6ş

Pivot tablodaki toplamları da renklendirmeye dahil etmek için aşağıdaki ifadeyi kullanabiliriz.

colorMix1(sum(Kar)/sum(Tutar)/Max(TOTAL Aggr(sum(Kar)/sum(Tutar),
[Bölge Adı], [Kategori Adı])),rgb(102,31,153), rgb(229,202,211))

wwrtir3qjqj

Qlik

Qlik Sense Ders 30: Boyut ve Hesaplama Renklendirme

Boyut Renklendirme

Ana öğeler -> Boyutlar -> Yeni Oluştur diyerek bir boyut oluşturalım.

Tüm boyut alanlarının tek bir renkte görünmesini istiyorsak aşağıdaki şekilde Boyut rengi belirleyebiliriz.

rlişwjieşgj

Eğer her boyut alanı için farklı bir renk vermek istiyorsak aşağıdaki şekilde oluşturduğumuz boyutun üzerine sağ tıklayarak Düzenle diyelim ve Değer renkleri sekmesine tıklayalım.

ilkişlqkk

Boyut alanlarının karşısındaki renk kutucuklarına tıklayarak buradan istediğimiz renkleri boyuta atayabiliriz.

Hesaplama Renklendirme

Ana öğeler -> Hesaplamalar -> Yeni Oluştur diyerek bir hesaplama oluşturalım.

Hesaplama alanının tek bir renkte görünmesini istiyorsak aşağıdaki şekilde Hesaplama rengi belirleyebiliriz.

lklk

Eğer hesaplamadaki boyutları, hesaplama aralığına göre renklendirmek istiyorsak Segment renkleri sekmesine tıklayalım.

Buradan bir şablon düzeni seçtikten sonra renk skalasındaki renklerin üzerine tıklayarak istediğimiz ayarlamaları yapalım.

ilkişk

Ayrıca renkler arasına sınır ekleyebilir veya eklediğimiz sınırları kaldırabiliriz. Sınır belirlemek için renklerin altındaki yuvarlak işaretlerin üzerine tıklayarak oradaki kutucuğa istediğimiz sınır değerlerini yazabiliriz.

Verdiğimiz renkleri Görünüş bölümündeki Renkler ve gösterge kısmından Hesaplamaya göre diyerek kullanabiliriz.

lkjiljşl

Diyelim ki hem tek bir hesaplama rengi hem de segment renkleri tanımladık.

şykş5w4ky

Bu durumda hesaplama, boyutlarla kullanılırken verilen renk skalasıyla; tek başına kullanılırken de tanımladığımız renk ile gösterilecektir.

şkşlkaşlkrei

Qlik Sense üzerinden boyutlar ve hesaplamalar için otomatik renklendirmeleri bu şekilde rahatlıkla tanımlayabiliriz.

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 28: Hiyerarşi ve Dinamik Başlık Yapısı

4HI9JLAaAd

Ay-yıl ve gün bilgisini içeren örnek bir drill down yaralım.

şlkişk

Grafikler -> Filtre Bölmesini ekrana sürükleyip bırakalım.

şlkşşiklkşlj

Boyut olarak aşağıdaki ifadeyi kullanalım.

=if(GetSelectedCount(Date(monthstart([Sipariş Tarihi]), 'MMMM YYYY'))=1 or 
Count(DISTINCT Date(monthstart([Sipariş Tarihi]), 'MMMM YYYY'))=1, 'Gün', 
'Ay')

Böylece ekrana GetSelectedCount fonksiyonun da yardımıyla ay-yıla 1 kere tıklayarak ‘Gün’, tıklamayarak ‘Ay’ yazdırmış olduk.

Qlik

Qlik Sense Ders 27: Önceki Zamana göre Değişimin Oklarla Gösterimi

Bir önceki yıla, aya veya güne göre hesaplamanızdaki değişimi oklar yardımıyla ifade ederek renklendirebilirsiniz.

Bunu yapmak Tableau’daki kadar kolay olmasa da Qlik’te de kolaylıkla yapmak mümkün. Tableau’da nasıl yapıldığını görmek için buraya tıklayabilirsiniz.

Gelelim nasıl yapıldığına.

Aşağıdaki ekran görüntüsünde de görüldüğü gibi bir tabloya sırasıyla ayı, hesaplama bilgisini sum(Tutar), bir önceki satırdaki hesaplama bilgisini above(sum(Tutar)) ve oklar için aşağıdaki ifadeyi ekleyelim.

Not: Buradaki 9650 yukarı ok için karakter kodu, 9660 aşağı ok için karakter kodudur.

if(above(sum(Tutar))<sum(Tutar), chr(9650), chr(9660))

Okların arka planını renklendirmek için ifadenin üzerine tıklayalım ve Metin rengi ifadesi bölümüne aşağıdaki kodu yazalım.

if(above(sum(Tutar))<sum(Tutar), 'Green', 'Red')

Sonuç

şlklkşk900

Not: Buradan yola çıkarak above(sum(Tutar),2) ifadesi de 2 satır önceki değeri vereceğinden 2 yıl, ay veya gün öncesine ait satışı da bu şekilde bulabiliriz.

ikrksiegi

Eğer sonraki satır ve satırlardaki değeri görmek istiyorsak o zaman aynı şekilde above fonksiyonu yerine below fonksiyonunu kullanabiliriz.

Qlik

Qlik Sense Ders 26: Sıralama Sorunu

Diyelim ki elimizde içinde bir sürü alanı olan ve farklı ifadelere göre sıralanmış bir pivot tablo var. Pivotun içindeki alanlardan biri + sıralama için kullandığımız alanlardan biri hafta olsun.

Bu pivot tablonun hiçbir filtreden etkilenmemesi için 2 seçeneğimiz var. Ya hesaplamanın içine {1} yazarız ya da Alternatif durum (Alternate States) kullanırız. 

  1. Örnek: sum({1} Tutar)
  2. Menüdeki Ana öğeler -> Alternatif durumlar kısmından bir Alternatif durum yarattıktan sonra grafiğe gelerek Görünüş -> Alternatif durumlar kısmından yarattığınız durumu seçebilirsiniz. Böylece grafiğiniz normal şartlarda hiçbir filtreden etkilenmeyecektir.

Ancak bunu yaptığımızda grafiğimizdeki değerler filtrelerden etkilenmiyor olsa da ay, hafta gibi zamansal bir filtre seçtiğimizde yaptığımız haftalık sıralama değişebilir.

İşte bunun olmaması için sıralamadaki ifadeyi Minstring fonksiyonu ile yazmamız gerekir.

Örnek:

MinString({1} [Sipariş_Tarihi_Hafta])

Bu şekilde çözümünü göstermemi istediğiniz sorunları yazının altına yorum olarak bırakabilirsiniz.✎

Qlik

Qlik Sense Ders 25: QVD Oluşturma ve Veri Okuma

QVD Dosyası Oluşturma

QVD‘nin açılımı QlikView Data‘dır. Qlik Sense uygulamasındaki veriyi dışarı aktardığımızda qvd dosyası yani .qvd uzantısıyla bir dosya elde ederiz. Datayı sıkıştırılmış olarak saklayan QVD’nin veri okuma hızı, diğer veri kaynaklarına göre 10 ila 100 kat arası daha hızlıdır.

Veriyi QVD‘ye basmak için script tarafına giderek aşağıdaki kodu çalıştırmanız yeterlidir.

Store * from TabloAdı into [lib://DosyaBağlantısı/örnek.qvd];
Store AlanAdı1 as a, AlanAdı2 as b from TabloAdı into [lib://DosyaBağlantısı/örnek.qvd];

Aynı zamanda veriyi dışarıya txt ve csv dosya formatında da alabilirsiniz.

Store TabloAdı into [lib://DosyaBağlantısı/örnek.txt] (txt);
Store TabloAdı into [lib://DosyaBağlantısı/örnek.csv] (txt);

QVD Dosyasından veri okuma

Aşağıdaki kodu çalıştırarak QVD dosyasından veri okuyabilirsiniz.

Load * from [lib://DosyaBağlantısı/örnek.qvd] (qvd);
Qlik

Qlik Sense Ders 25: Buton ile Boyut ve Hesaplama Seçimi

zF9i7jULzy

Boyut ve hesaplama isminde birer değişken oluşturalım ve içine 1 yazalım.

işkişk4i3şk

Özel Nesneler -> Qlik Dashboard Bundle -> Variable input nesnesini ekrana sürükleyip bırakalım. Görünüş bölümündeki Variable kısmında bulunan Name için Boyut‘u; Show as için Buttons‘u seçelim.

eregg

Kullanmak istediğimiz boyutlar için (Bölge, Ülke ve Şehir) Value kısmına sırayla 1, 2 ve 3 yazalım.

jg5jl54

Aynı şekilde bir tane daha Variable input alalım. Görünüş bölümündeki Variable kısmında bulunan Name için Hesaplama‘yı; Show as için Buttons‘u seçelim.

Kullanmak istediğimiz hesaplamalar için (Satış ve Kar) Value kısmına sırayla 1 ve 2 yazalım.

jfrşklj4

Değişkenleri kullanmak için Grafikler -> Ağaç Haritası grafiğini seçelim.

Boyut olarak;

=$(=Pick(Match($(Boyut),1,2,3),'[Bölge Adı]','Ülke','Şehir'))

Hesaplama olarak;

Pick(Match($(Hesaplama),1,2),
Pick(Match($(Boyut),1,2,3),
aggr(Sum(Tutar),[Bölge Adı])
,aggr(Sum(Tutar),Ülke)
,aggr(Sum(Tutar),[Şehir])
)
,
Pick(Match($(Boyut),1,2,3),
aggr(Sum(Kar),[Bölge Adı])
,aggr(Sum(Kar),[Ülke])
,aggr(Sum(Kar),[Şehir])
))

ifadelerini kullanalım.

Ta Taa

ref3f

Qlik

Qlik Sense Ders 24: Zamansal İfadeler

String tipindeki tarih alanınızı tarihinizi aşağıdaki şekilde gün, ay ve yıla bölebilirsiniz.

Gün

= subfield([Sipariş Tarihi],'/',2)

Ay

=subfield([Sipariş Tarihi],'/',1)

Yıl

= subfield([Sipariş Tarihi],'/',3)

Bugüne göre Önceki Ay

Month(AddMonths(Today(),-1))

Bugüne göre Önceki Yıl

Year(AddMonths(Today(),-1))

Şuanki Ay

Month(Today())

Şuanki Yıl

Year(Today())

Verinizdeki tarihin son gününü ve o güne ait satış tutarını bulmak için aşağıdaki ifadeleri kullanabilirsiniz.

Son Gün

=max(total [Sipariş Tarihi])

Son Gün Satış

=sum({<[Sipariş Tarihi] = {'$(=max(date([Sipariş Tarihi])))'}>} Tutar)

Tarihinizi ay ve yıl olarak Mart 2020 formatında aşağıdaki ifadeyle yazabilirsiniz.

Ay Yıl

=(Date(monthstart([Sipariş Tarihi]), 'MMMM YYYY'))

Ay yıl için 03/2020 formatını kullanmak isterseniz aşağıdaki ifadeyi kullanabilirsiniz.

Ay Yıl

=(Date(monthstart([Sipariş Tarihi]), 'MM/YYYY'))

Şuanki Yılın İlk Günü

=date(floor((YearStart(Today()))))

Önceki Yılın İlk Günü

=date(floor((YearStart(Today()-1))))

İstenilen Yılın İlk Günü

=makedate(2020)

String tipindeki ve YYYYMMDD (20200120) formatındaki tarih alanını date tipine gün/ay/yıl olarak çevirebilirsiniz.

String’ten DD/MM/YYYY formatında Date’e çevirme

=Date(Date#(TARIH,'YYYYMMDD'),'DD/MM/YYYY')

Aklıma geldikçe yeni ifadeler eklemeye devam edeceğim. Siz de “nasıl yapılır?” dediğiniz sorularınızı iletin yanıtlarını burada birlikte inceleyelim.