16 Ağustos 2015 Pazar

QlikView Scripting 6: Gelişmiş Sorgu Yazma ve Veri Modeli İyileştirmesi

  • Rapora yüklediğiniz tablolar birbirleriyle bağlantı kurarak döngü (loop) oluşturabilir. Raporunuzun çalışması için bu döngüyü kırmanız gerekmektedir. Döngüyü kırabilmek için CONCATENATE komutu yardımıyla birkaç tabloyu tek bir tabloda toplayabilirsiniz. CONCATENATE komutuyla birleştireceğiniz tablolar, aynı sayıda ve aynı isimde alanlara sahip olması gerekmektedir.
  • Bir önceki yazıda bahsettiğimiz raporumuzun performansını olumsuz etkileyen Sentez anahtarlarından kurtulabilmek için HASH128 ve AUTONUMBER komutlarından faydalanabiliriz. Örneğin raporumuzun veri modeli aşağıdaki gibi olsun.
$Syn 1 Table isimli Sentez tablosundan kurtulmak için birbirleriyle bağlantı kuran Forecast ve Actual tablolarımızda HASH128 komutunu kullanarak üzerinden bağlantı kurulan BrokerID ve BondID alanlarından özgün bir alan oluşturarak bu alan üzerinden bağlantı kurmaya zorlamalıyız. Bunun için öncelikle her iki tabloda HASH128 komutuyla bu iki alandan oluşan ActualForecastID ismiyle özgün yeni bir alan oluşturuyoruz. Sonrasında her iki tabloda yer alacak bu özgün alanla birlikte üzerinden bağlantı kurduğumuz iki alanı yani BrokerID, BondID ve ActualForecastID alanlarından oluşan ActualForecastBridgeKey ismini verdiğimiz bir tablo oluşturuyoruz. Bu yeni tablomuz, bir açıklama tablosu olacağından diğer tablolarımızdan BrokerID ve BondID alanlarını siliyoruz. Ve veri modelimizde artık Sentez tablosuna yer bulunmamaktadır:
Yaptığımız tüm bu hamleler çalışma dosyamızın sorgu kısmında Main 6 sekmesinde yer almaktadır.
  • Aynı isimli alanlara sahip tabloları raporunuza yüklediğinizde QlikView CONCATENATE komutu varmışcasına otomatik olarak ikinci tabloyu ilk tablo ile birleştirir ve raporunuzda veri tek tabloda toplanır. Eğer bunu engellemek istiyorsanız ikinci tablonuzu yükleyen sorgunun başına NOCONCATENATE komutunu eklemeniz gerekmektedir.
  • Aynı sayıda alana sahip olmayan iki tabloyu birleştirmek istiyorsanız daha az alanı olan ikinci tabloyu yükleyen sorgunun başına CONCATENATE komutunu eklemeniz gerekmektedir. Toplamda her iki tablonun toplam satır sayısı kadar veriniz olur fakat ikinci tabloda olmayan alan, ikinci tablodan gelen veriler yanında NULL (boş) olarak yer alır. QlikView buna force concatenate diyor.
  • Test sonuçları gibi aralıklı açıklama için QlikView'in kullanabileceğimiz bir özelliği var: INTERVALMATCH fonksiyonu. Söz dizimi şu şekildedir:
INTERVALMATCH(aralıkta kontrol edilecek verinin olduğu sütun)LOAD (aralığın başlangıç noktası), (aralığın bitiş noktası)FROM (kaynak)
Örneğin elimizde satış elemanlarına gelen arama sayıları olsun. Arama miktarını aşağıdaki gibi belli aralıklarla performans olarak nitelediğimizi düşünelim:
Satış elemanlarının performanslarını, bu tabloya bakarak kendilerine gelen arama sayılarına göre nitelendirmek istiyoruz. İşte burada devreye INTERVALMATCH fonksiyonu giriyor. Verimizi rapora yükledikten sonra fonksiyonumuzu kullanıyoruz ve çıkan sonuç:
Çalışma dosyasına buradan erişebilirsiniz.
  • Raporunuzda oluşturduğunuz grafikte değerlerin belli formatlarda gösterilmesini isteyebilirsiniz. Örneğin elinizde hergünün arama miktarları var. Kullanıcının seçtiği niteliğe göre (üretkenlik, toplam süre, toplam miktar) grafikte gün kırılımında değerler görünecek. Bunun için QlikView'in data island dediği kavramı kullanıyoruz. Formatlarımızı tutan bir tablo oluyor ve grafiğimizin İfade kısmında bu formatlara göre Set Analysis kuralı yazarak grafğimizi oluşturuyoruz:
If (Metrics = 'Call Quantity', sum(calls), if (Metrics = 'Call Duration', sum(call_time_minutes), sum(calls)/sum(call_time_minutes)))
Çalışma dosyasına buradan erişebilirsiniz.
  • Bir değişken tanımlayarak QVD dosyanızı kaydettiğiniz yeri esnek yapıya dönüştürebilirsiniz. Örnek:
set vSaveQVD = C:\QlikView\QVDs\;STORE Sales into $(vSaveQVD)Sales.qvd(qvd);
  • QVD dosyalarının avantajları:
    • Diğer veri kaynaklarına göre büyük veri setleri için daha hızlı yükleme
    • Increment yüklemeye olanak sağlaması
    • Veri ambarını daha az yorması
    • Tüm QlikView uygulamarı/raporları tarafından  kullanılabilmesi
    • Veri kaynağına göre daha az yer kaplaması
  • QlikView uygulamasını açtıktan sonra Yardım|Başlangıç Sayfasını Göster ekranının En Son kısmında açmak istediğiniz raporun üzerinde sola tıklayıp Veri Olmadan Aç diyerek açmak istediğiniz raporun verisinin memory'ye dolmasını beklemeden yani raporunuzu veri içermeden açabilirsiniz.
İyi çalışmalar..

Hiç yorum yok:

Yorum Gönder