Qlik Sense Ders 56: Başlıkta Filtre Seçimini Gösterme

Başlığında filtre ismini göstermek istediğimiz grafiği seçerek Genel -> Başlık bölümüne filtredeki alan adını ve ardından & ‘Görünen Başlık Adı’nı aşağıdaki yazıyoruz.

Böylece filtreden bölge seçimi yaptığımızda seçilen bölge ismini grafik başlığına yazdırmış oluyoruz.

Qlik Sense Ders 55: Negatif Değerlerin Sıfır Olarak Gösterimi

Eğer hesaplamanız negatif değerler içeriyorsa ve siz bu negatif değerlerin grafikte sıfır olarak görünmesini istiyorsanız ifadenizi aşağıdaki şekilde düzenleyebilirsiniz.

  • 1. Yöntem
    Rangemax(sum(Value),0)
  • 2. Yöntem
    if(sum(Value)>0, sum(Value),0)

Tutar bilgisi üzerinden örneklediğimizde sonuç aşağıdaki şekilde görüntülenir.

Qlik Sense Ders 59: Master Calender

Master Calendar oluşturarak verinizdeki başlangıç ve bitiş tarihi arasında kalan eksik günleri tamamlayabilirsiniz.

Aşağıdaki Master Calendar kodlarını, verinizdeki tarih adıyla değiştirerek kullanabilirsiniz.

Kodları kolayca kopyalayabilmeniz için aşağıya bırakıyorum.

MinMax:
Load min(Tarih) as MinTarih, //Buraya Tarih yerine kendi verinizdeki tarih alanının ismini yazın
max(Tarih) as MaxTarih
Resident Sipariş; //Sipariş tablosu yerine kendi tablonuzun ismini yazın

let vMinDate=peek('MinTarih',0,'MinMax');
let vMaxDate=peek('MaxTarih',0,'MinMax');

// peek komutu bir kolonun n. sıradaki değerini döndürür.
// 0 ilk satır, 1 ikinci satır, -1 son satır
// peek('KolonAdı', SatırSayısı,'TabloAdı')

drop table MinMax;

TempTakvim:
load Date($(vMinDate)+IterNo()-1) as Tarih
AutoGenerate(1) while $(vMinDate)+IterNo()-1 <= $(vMaxDate);

MasterCalendar:
Load
Tarih as "Sipariş Tarihi",
Year(Tarih) as Tarih.Yıl,
'Q'&ceil(month(Tarih)/3) as Tarih.Çeyrek,
Week(Tarih) as Tarih.Hafta,
Month(Tarih) as Tarih.Ay,
Day(Tarih) as Tarih.Gün,
Date(monthstart(Tarih), 'MMM YYYY') as Tarih.AyYıl,
WeekDay(Tarih) as Tarih.Günİsim
Resident TempTakvim
Order By Tarih ASC;

Drop Table TempTakvim;
//Verideki ilk tarihten başlayarak aradaki boş tarihleri günlük olarak doldurur.

Qlik Sense Ders 58: Mapping

Mapping, alan değerlerini veya adlarını değiştirmek için kullanılan eşleme tablosunu oluşturmak için vardır.

Mapping tabloları;

  • Çok hızlı çalışır.
  • Script çalıştıktan sonra otomatik olarak silinir.
  • İki adet kolon ile yazılır.
  • Main tablosunun altında Applymap fonksiyonundan önce kullanılır. Sonradan farklı bir bölüme eklendiyseişareti ile main tablosunun altına sürükleyip bırakabilirsiniz.

Mapping tablosuyla birlikte kullanılan Applymap fonksiyonu, ifadeyi önceden yüklenmiş eşleme tablosu ile eşleştirmek için kullanılır.

Örneğin, Id ve Personel Adı bilgisine sahip Personel adında bir inline tablo yaratalım ve oluşturacağımız tabloda Id bilgisi yer almazken Personel Adı ve sorumlu oldukları Şehir bilgisini gösterelim.

Map:
mapping LOAD *
Inline [
Id, Şehir
1, İstanbul
2, İzmir
3, Ankara ];
Personel:
LOAD *,
ApplyMap('Map', Id,'Diğer') As Şehir
//ApplyMap(Mapping tablosunun adı, eşleştirilen alan adı, eşleşmeyen şehir adlarının yerine görünecek kelime)
Inline [
Id, Personel Adı
1, Ali
2, Emel
3, Alya
4, Peri
5, Melissa
6, Doruk
7, Derya ];

Drop Field Id;

Burada Id’leri eşlemek için Applymap fonksiyonunu kullanırırız. Ardından Id’nin görünmesini istemediğimiz için Id bilgisini silebiliriz.

Mapping tablosu, script çalıştıktan sonra otomatik olarak silineceği için veri modelinde sadece Personel tablosunu görünür.

Kullanılan iki tabloda da 1, 2 ve 3 numaralı Id bilgileri ortak olduğundan tabloda Id ile eşleşen şehir adları görünürken kalan Id bilgilerine ait personellerin sorumlu olduğu şehir adları ‘Diğer’ olarak görünecektir.

Qlik Sense Ders 57: Join

Kod düzenleyici üzerinden tablolar alt alta yazıldığında aynı alan adları üzerinden ilişki kurulur ve tablolar arasında full natural outer join yapısı simüle edilir. Right, left, inner gibi join türünü belirtmek istersek join yapmak istediğimiz tabloların arasına giderek join ifadesini yazarız.

Örneğin, iki tabloyu inner join ile birleştirmek istediğimizde bu iki tablonun arasına yalnızca “join” yazmak yeterlidir. Eğer right veya left join yapmak istersek join ifadesini birleştirmek istediğimiz kod bloğunun üzerine yazdıktan sonra birleştirilecek tablo adını parantez içinde join’de belirtiriz.

Aşağıda verilen örnekte Sipariş tablosuna, SipToplam tablosu left join ile bağlanmıştır.

Böylece, Sipariş ve SipToplam tek bir tablo olmuş ve Sipariş_Detay tablosuyla arasında ilişki kurulmuştur.

Not: Preceding Load (öncelikli yükleme), diğer yüklemeden önce gerçekleşir. Yukarıdaki örnekte görüldüğü gibi işlemleri preceding load‘ta hesaplatırsanız kodunuz daha hızlı çalışacaktır.

Hatırlatma: Kod düzenleyicideki bölümler yukarıdan aşağı, bölümlerin içerisindeki script ise aşağıdan yukarı çalışır.

Qlik Sense Ders 56: Exists Fonksiyonu

Exists fonksiyonu, bir alan değerinin kod dosyasında yüklü olup olmadığını belirler. Sonucu, true veya false döner. Where ile birlikte where Exists (Sipariş); olarak kullanılabilir. Tersi, where not Exists (Sipariş); şeklindedir.

Aşağıdaki örnekte Müşteri ve Personel olmak üzere iki tablo oluşturulmuş olup Exists fonksiyonu kullanılarak Müşteri tablosundaki CariKod ile Personel tablosundaki Sicil karşılaştırılacak ve ortak alanlar üzerinden Sicil ve Şehir bilgisi gösterilecektir. Ardından Müşteri tablosuna ihtiyaç olmadığı için bu tablo silinebilir.

Müşteri:
Load * inline [
CariKod, Bölge, Ülke
1, Avrupa, İtalya
2, Güney Amerika, Brezilya
3, İskandinavya, Danimarka ];  

Personel:
Load * inline [
Sicil, Şehir
1, Sicilya
2, Sao Paulo]
where Exists("CariKod","Sicil");

Drop table Müşteri;

Çıktı olarak sicil numarası 1 ve 2 olan personel için şehir bilgisine ulaşırız.

Qlik Sense Ders 55: Qualify Fonksiyonu

Qualify fonksiyonu, alan adının başına tablo adını ön ek şeklinde ekler. Qualify fonksiyonundan sonra diğer alanların başına tablo adının eklenmemesi için tersi olan Unqualify fonksiyonunu kullanırız.

Bir tablonun üzerine Qualify *; yazıldığı takdirde yeni alan adı TabloAdı.AlanAdı şeklinde görüntülenir.

Unqualify fonksiyonu bir alan adının başına yazıldığında o alan adının başından tablo adı kaldırılır. Eğer Unqualify *; dersek tüm alan adlarının başından tablo adları silinecektir.

Aşağıdaki örneği açıklamalarıyla birlikte inceleyelim.

Nasıl göründüğüne bakmak için Veri modeli görüntüleyicisini açalım.

Görüldüğü gibi Tedarikçi hariç Stok Kodu ve Sipariş Miktarı alanlarının başına Ürün tablosunun adı eklenmiştir.

Qlik Sense Ders 54: Inline Tablo

Bir veri kaynağına gerek olmadan el ile tek tek yazarak oluşturduğumuz tablolara inline tablo denir.

Örneğin; Id, Kategori ve Hedef sütunları bulunan bir tablo oluşturalım.

InlineTablo:
load * Inline [
Id, Kategori, Hedef
1, Masa, 4000
2, Telefon, 10000
3, Bilgisayar, 20000  ];

Verileri yükle dediğimizde tablo oluşmuş olacaktır. Eğer istersek inline tabloları kendisinden beslenen bir hedef tablo oluşturmak için de kullanabiliriz. Böylece artık inline tabloya gerek kalmaz ve tablo silinebilir. Ardından oluşturulan hedef tablo ile veri modelimizi örmeye devam edebiliriz.

Tabloları alt alta yazdığımız vakit otomatik birleşmeyi engellemek için iki tablo arasında NoConcatenate komutunu kullanabiliriz.

Inline tablodan; Id, Kategori ve Hedef bilgisini kullanarak hedefin 5 katına Kota diyelim.

Buradaki load, select ve resident, from olarak düşünebilirsiniz.

NoConcatenate

HedefTablo:
load Id, Kategori, Hedef*5 as Kota resident InlineTablo;

drop table InlineTablo;

Sayfaya geçtiğimizde hedef tabloyu aşağıdaki şekilde görüntüleyebiliriz.

Qlik Sense Ders 53: Sentetik Tablo

İki veya daha fazla ortak alana sahip olan iki veya daha fazla tablo arasında ilişki kurulduğunda sentetik tablo (synthetic table) ve sentetik (yapay) anahtar oluşur. Yapay anahtarların fazla olması yanlış veri yapısının bir göstergesi olabilir. Sentetik tabloları veri modelini karıştırdığı, veri yüklenme zamanını arttırdığı ve fazla bellek kullanarak uygulamayı yavaşlattığı için veri modelinde kullanmak istemeyiz.

Sentetik tabloları ortadan kaldırmak için tablolardan birinde aynı isimde olan alan adını değiştirebilir, aynı olan alanları birleştirerek tek satır haline getirebilir veya Qualify() fonksiyonunu kullanarak tablo adını, alan adının başına ekleyebiliriz.

Örnek olarak excelde tutulan Sipariş ve Ürün tablomuzda Stok Adı ile Stok Kodu ortak alanlar olsun.

Bu durumda iki ortak alan olduğundan verileri yüklediğimizde yapay tablo ve anahtar oluştuğunu görebiliriz.

Veri modeli görüntüleyicisini yeni bir sekmede açarak yapay tablonun modelde nasıl göründüğüne bakalım.

Aşağıda görüldüğü şekilde Syn Table ve $Syn 1 veri modelinde oluşturulmuştur.

Oluşan bu yapay tabloyu ortadan kaldırmak için Stok Adı ve Stok Kodu alanlarını birleştirerek SipKey adında tek bir alan yaratalım ve bu iki tabloyu SipKey üzerinden ilişkilendirelim.

Verileri yükle dediğimizde artık yapay tablo ve anahtar oluşmayacaktır.

Veri modeline geçtiğimizde Ürün ve Sipariş tablosunun arada başka bir tablo olmadan doğru olarak ilişkilendirildiğini görebiliriz.

Qlik Sense Ders 52: Column Fonksiyonu

Column() fonksiyonu, tablodaki veya pivottaki boyut sütunlarını göz ardı ederek uzun hesaplama ifadelerini tekrar yazmaya gerek kalmadan yeni bir hesaplama sütunu oluşturmamızı sağlar.

Örneğin; tablodaki 2. sütun değerlerini, 1. sütun değerlerine bölerek yeni bir sütun yaratabiliriz. Bunu yapmak için ifadeyi Column(ColumnNo/Hesaplama sütun numarası) şeklinde düzenlemek gerekir.

Kar oranını, Column() fonksiyonunu kullanarak hesaplayalım.

Kar oranı: sum(Kar)/sum(Satış) ✩ Column(1): sum(Satış) ✩ Column(2): sum(Kar)

%d blogcu bunu beğendi: