14 Mart 2017 Salı

Current Selection'da Bazı Alanlarım Gözükmesin!

Qlikview'de çalışırken mevcut olan filtrelerinizi görüntülemek için iki yol olduğunu biliyorsunuz:
-Standard araç çubuğunda Current Selection butonuna tıkladıktan sonra açılan pencere ile
-Sayfaya Current Selections Box objesi eklemek
Bu mevcut filtrelerinizi görebildiğiniz seçeneklerde bazı alanların gözükmemesini istiyorsanız yapmanız gereken, script kısmına (Edit Script butonu veya Ctrl+E kısayoluyla erişebilirsiniz) veriyi aktaran sorgunuzdan önce aşağıdaki gibi bir satırı ilave etmek:

İlla "*" (yıldız) koymak zorunda değilsiniz; "~" gibi başka bir sembolü de kullanabilirsiniz. Satırı ilave ettikten sonra gizlemek istediğiniz alanın isminin başına "*" (veya kullandığınız sembolü) ekleyerek ismini değiştirin. Artık filtreleme yaptığınızda Current Selections'da o alan gözükmeyecektir.

İyi çalışmalar,

Ufak bir not: Bundan sonraki çalışmalarımda Qlikview üzerindeki sekmelerin sadece İngilizce karşılıklarını söyleyeceğim çünkü şuanki imkanlarımda hem İngilizce hem Türkçe kurulumuna sahip değilim. Saygılar.

23 Ağustos 2015 Pazar

Alternatif Durumlar

QlikView raporunuzun arayüzündeki objeleri gruplayarak bir grupta yapılan seçimin sadece o grupta yer alan objeleri etkilemesini sağlayabilirsiniz. Örneğimizdeki Ay-Liste1'de yapılan seçimin sadece Grafik1'i etkilemesini istiyoruz.
Ayarlar|Belge Özellikleri...|Alternatif Durumlar...'da Ekle diyerek arayüzdeki objeleri kaç gruba ayıracak isek o kadar grup belirliyoruz; bizim örneğimizde iki tane:
Sonrasında Uygula|Tamam diyoruz. Akabinde Grup1'e dahil etmek istediğimiz arayüzdeki objeler olan Ay-Liste1 ve Grafik1 üzerinde sağ tıklayıp Özellikler|Genel sekmesinde Alternatif Durum kısmında dahil etmek istediğimiz grubu (yani Grup1'i) seçiyoruz. Grup2'ye dahil etmek istediğimiz objelerde de aynı işlemi yapıyoruz (objeler üzerinde sağ tıklayıp Özellikler|Genel sekmesinde Alternatif Durum kısmında Grup2'yi seçiyoruz). Ve Uygula|Tamam:
Ay-Liste1'de NISAN ayını seçtiğimizde Grafik1 grafiğinde sadece seçtiğimiz ay olan NISAN verisi görülüyor, diğer objelerde ise herhangi bir değişiklik olmuyor:
Çalışma dosyasına buradan erişebilirsiniz.

İyi çalışmalar..

Hesapları Renklendirmek

Raporunuzda hesap ettiğiniz alanı, belirli aralıklarla renklendirebilirsiniz. Örneğin elinizde resimdeki gibi aya göre satış miktarları olsun. Ve ortalama satış miktarına göre performansı düşük ayları belirlemek istiyorsunuz. Yani AYA GORE SATISLAR grafiğinde satış miktarılarını son sütundaki ortalama satış miktarı ile kıyaslayarak aşağısında/üstünde olarak renklendirmenin peşindesiniz. Bunun iki yolu var. Her ikisini de anlatacağım. Öncelikle birinci yol.
Grafiğin üzerinde sağ tıklayıp Özellikler|İfadeler'de formulü yazdığımız yerin hemen sağındaki kısımda formulümüzün adının yanındaki artı işaretine tıkladığımızda bir liste açılıyor. Bu listeden Arka Plan Rengi seçiyoruz. Sonrasında sol tarafta Tanım hücresine formulümüzü yazıyoruz:
Yazdığımız bu formüle göre hücrelerin arka planlarını; eğer satış adedi ortalamaya eşit veya üstünde ise grafiğimizi Sütun Grafiği yaptığımızda Renkler sekmesindeki renklerden birincisi ile, değilse ikincisi ile boya diyoruz. Ve Tamam dediğimizde sonuç:
Sütun Grafiği'nde de aynısını yapabilirsiniz. Ayrıca grafiğe burada eklediğimiz ortalama için çizgi çizdirebilirsiniz. Öncelikle grafiğimizi kopyalayıp kopyaladığımız grafik üzerinde sağ tıklayıp Özellikler|Genel sekmesinde Sütun Grafiği seçerek grafiğimizi Sütun Grafiği'ne çevirelim. Sütunların renklendirilmesi aynı şekildedir. Her ayda ortalama sütunu olmaması için İfadeler'den AVG(TOTAL SATIS) ifadesini silmeyi unutmayın. Ortalama çizgisi çizmek için Özellikler|Sunum sekmesindeki sağ altı köşedeki Referans Çizgileri'ne Ekle diyelim. Karşımıza çıkan ekranın etiket kısmına grafikte gözükmesini istediğimiz etiketi (ben ortalama diyorum) yazıp Grafikte Etiketi Göster kutucuğunu tıklıyoruz. Akabinde İfade kısmına ortalama çizgimizin değerinin formulünü yazıyoruz:
Sonrasında grafiğin Özellikler|Sırala sekmesinde Y-Değeri kutucuğuna tıklayıp Artan'ı seçiyoruz. Ve sonuç:

II.Yol

Birinci yoldan yaptık. İkinci yol ise, grafiğin üzerinde sağ tıklayıp Özellikler|Görsel İpuçları kısmında renklendireceğimiz hesabı seçtikten sonra alt kısımdaki hücrelere kıyaslama noktalarımızı yazmak:
Ve Tamam sonrası sonuç:
Çalışma dosyasına buradan erişebilirsiniz.

İyi çalışmalar..

22 Ağustos 2015 Cumartesi

QlikView Scripting 9: Geliştiriciler İçin İpuçları

  • One of the most important design considerations is consistency. It allows users to learn how to navigate the application faster, be more efficient, and focus more on the data rather than the interface. Once consistency has been established, users can readily transfer that knowledge of application navigation and data interpretation to other applications and contexts.
  • Maintain consistent color in sheets and chart objects.
  • Use the same font colors and sizes in similar areas of the application.
  • In charts, keep the title bar in the same format and look, and keep the legend or axis title in the same area on all charts, if possible.
  • Avoid crowded objects and charts. Some UI experts suggest no more than 6 to 8 charts for a QlikView desktop application (per sheet).
  • Don't use red and green on the same chart or sheet, to avoid the red-green color blindness issue.
  • Avoid using too many colors, and avoid randomly assigned colors. Colors should have meaning. Use the Persistent Colors feature in the chart's Colors tab, in the Chart Properties dialog.
  • Use line charts or bar charts for comparing a dimension over time, and use stacked bar charts and pie charts for comparing parts to a whole.
  • Some experts advise not to use more than 10 sheets in your QlikView application.
  • When the charts are finished or you have a draft version, uncheck Allow Move/Size in the Layout tab of the Chart Properties dialog to limit inadvertent movement of charts in the application.
  • The use of macros in a QlikView application can slow down performance.
  • Note that all visible charts and objects on a graph take up RAM for the active sheet, and even objects not visible take up some amount of RAM.
  • Limit the number of records displayed in a table by imposing a calculation condition, if possible.
  • Use charts instead of text objects when you want to display the result of complex expression calculations.
  • The date(Now) function requires much more calculation overhead (it calculates every second of the day) than the data function today(). Use today() if you need to calculate the current date.
  • Reduce the number of fields in memory by limiting use of SQL select all (*) in scripts. Choose the fields you need rather than all of them. Also, drop tables in the script when they are not needed.

17 Ağustos 2015 Pazartesi

QlikView Scripting 8: Hata Ayıklama

  • Dosya|Kod Düzenle...| Hata Ayıkla aracı ile çalışırken sorgunuzda problem oluşturacak hataları tespit edebilir, sorgunuzun ve değişkenlerin nasıl çalıştığını gözlemleyebilirsiniz.
  • Main ekranında görünen sorguyu çalıştırırken durmasını istediğiniz satırın numarasına tıkladığınızda görünen kırmızı yuvarlak noktalar ile Kesme Noktaları (Breakpoints) belirleyebilirsiniz.
  • Hata Ayıkla ekranında görünen butonların işlevleri:
    • Kesme Noktaları kısmında yer alan Temizle, sorgunuzdaki tüm kesme noktalarını temizler.
    • Hata Ayıkla kısmında yer alan Çalıştır, başladığı noktadan bir hataya, kesme noktasına denk gelene kadar, denk gelmezse sorgunun sonuna kadar sorguyu çalıştırır.
    • Hata Ayıkla kısmında yer alan Animasyon Oynat, adım adım sorgunuzu çalıştırır. Böylece sorgunuzun çalışma sürecini izlemeniz kolaylaşır.
    • Hata Ayıkla kısmında yer alan Adım, tek tek sorgunun satırlarını çalıştırır. Bir sonraki satıra geçmek için tekraradn Adım'a tıklamanız gerekmektedir.
    • Sınırlı Yükleme'de belirleyeceğiniz satır sayısı kadar her tablodan veri yüklenecektir.
    • Burada Sonlandır ile hata ayıklayıcının çalışmasını sonlandırıp ekranı kapatabilirsiniz. Sonlandırdığınız ana kadar yüklenen veri raporda kalır.
    • İptal, çalışan hata ayıklayıcını iptal edip ekranı kapatabilirsiniz. İptal ettiğiniz ana kadar yüklenen veri de rapordan silinir.
    • Kapat ile direk hata ayıklayıcıyı kapatırsınız.
  • Hata Ayıkla ekranındaki pencereler:
  • Kesme noktalarının dışında sorguyu durdurmak istediğiniz kısımlara EXIT SCRIPT komutunu eklemeniz yeterlidir. Hata ayıklanırken buralara geldiğinde duracaktır.
  • Ayarlar|Belge Özellikleri ekranın Genel sekmesinde Günlük Dosyası Oluştur'u seçerseniz raporu her çalıştırmanızda raporunuzun yer aldığı dosyada otomatik olarak bir log dosyası oluştur. Bu log dosyasını açıp incelediğinizde raporunuzun hangi satırda neden dolayı hata verdiğini bulabilirsiniz. Sonrasında raporunuzun sorgusunun hata veren kısmından hemen sonrasına EXIT SCRIPT komutunu ekleyip çalıştırırsanız, hatayı daha kolay izole edebilirsiniz.
  • Bir değişiklik sonrası tüm veriyi yüklemek yerine Dosya|Kısmi Yeniden Yükleme (veya Ctrl+Shift+R kısayoluyla) ile sadece sonradan eklediğiniz kısmı yükleyebilirsiniz. Yapmanız gereken; eğer yeni bir veri ekliyorsanız yeni verinin sorgusunun başına ADD LOAD komutunu eklemek, aynı veriyi bir daha yüklemek istiyorsanız bu verinin sorgusunun başına REPLACE LOAD komutunu ekledikten sonra Kısmi Yeniden Yükleme yapmak.
  • Kısmi yüklemede aynı verinin bir daha yüklenmesini istemiyorsanız sorgunuzun sonuna WHERE satırını ekleyip NOT EXISTS fonksiyonunu kullanmanız gerekir.
İyi çalışmalar..

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

QlikView Scripting 5: Temel Veri Modeli

  • Raporunuza yüklediğiniz tabloların alacakların şekillerin birbirleriyle kıyaslanması:


  • Kaynak tüketimi, kullanıcı memnuniyeti, model esnekliği ve çalışma süresini göz önüne alınarak değerlendirme yapınca verinin yer aldığı tabloları yandaki gibi yıldıza benzer şekilde yani Star şema formatında rapora yüklemek daha doğru bir tercih oluyor. Star şemanın merkezinde tüm alanları veriyle birlikte içeren ana bir tablo yer alır. Yüklenen açıklamalarının yer aldığı tablolar, ID'ler üzerinden ana tablo ile bağlantı kurar. Böylece  ve denormalize olarak yüklenmiş oluyor.
  • Yüklediğiniz tablolardaki alanlardan birden fazlası aynı isimde ise QlikView otomatik olarak aynı alan isimlerine sahip bu tablolar arasında bağlantı kurabilmek için Sentez anahtarları oluşturur. Ve bu anahtarları oluşturduğı Sentez tablolarında (raporda $Syn adıyla yer alırlar) toplar. Bu istenen bir durum değildir çünkü bu durum hem kötü bir data modeline sebep olmakta hem de raporun performansını düşürmektedir. Sentez anahtar ve tablolarından kurtulmanın yolu, aynı alan isimlerini farklı isimlendirmek veya QUALIFY komutunu kullanmak ve aralarında bağlantı kurulmak istenen tabloların üzerinden bağlantı kurulacak alanlar için AUTONUMBER komutunu kullanarak tek satır özgün bir anahtar alan oluşturmak.
  • Tablo Görüntüleyicisi'nde tabloda bir alanın üzerine fareyi getirerek o alanın ne kadar dolu olduğunu (Bilgi yoğunluğu) ve alanların ne kadar özgün olduklarını (Altküme oranı) görebilirsiniz.
  • Tablo Görüntüleyicisi'nde tablo üzerinde sağ tıklayıp Ön İzleme ile tabloda yer alan ilk 1000 kaydı görebilirsiniz. QVD dosyalarını aktarmadan bunu yapabilmek için QViewer'ı kurmanız gerekmektedir.
  • Ayarlar|Belge Özellikleri...|Tablolar ekranında tabloda yer alan alanların etiketlerini ayarlayabilirsiniz.
İyi çalışmalar..