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

15 Ağustos 2015 Cumartesi

QlikView Scripting 4: Sorgu Özellikleri ve Fonksiyonları

  • Yeni QlikView oluşturduğunuzda Kod Düzenle ekranında değerlerin (numara, para değeri, tarih) formatı belirlenir. Satır başındaki çekiç işaretine tıklayarak isterseniz bu değerleri değiştirebilirsiniz.
  • Her başarılı bağlantı, kendisinden önceki bağlantıyı keser. Başarılı bir başka bağlantı öncesi bağlantıyı kesmek isterseniz sorgunun kesmek istediğiniz anına denk gelen satırına DISCONNECT komutunu yazmanız yeterlidir.
  • Sorgular, en üstten aşağı ve en sol sekmeden sağa doğru çalışır.
  • Rapora yüklediğiniz iki farklı tabloda aynı isimle alanlar var ise bu iki tablo arasında bu iki alan üzerinden bağlantı kurulur. Bağlantı kurulmasını istemiyorsanız bu tablolardan birinde yer alan ve bağlantı kuran alanın ismini değiştirmeniz gerekmektedir.
  • Eğer aynı alan ismini birden fazla tabloda kullanmakta ısrarcıysanız QUALIFY komutunu kullanabilirsiniz. 
Aşağıdaki sorgu sonucunda yandaki gibi alan isimlerine sahip bir tablo oluşacak:
QUALIFY *;
UNQUALIFY Priority, Stage;
DefectTable:
LOAD * INLINE [
Defect, Group, Priority, Stage
1, Reports, High, Queued
2, Data, Low, Reported
3, Data, High, Closed
4, Object, Medium, Rejected
5, Security, High, Reported
6, System, Medium, Rejected
7, Security, High, Closed];
Bu sayede alan isimleri başında tablo ismiyle birlikte yer alacağından bir başka tablodaki aynı isimli alanla bağlantı kurmayacak.
  • Raporunuza birden fazla tablo yüklemiş ve her birinin alan ismini değiştirmekle uğraşmak istemiyor veya değiştirmek istediğiniz alanlar ile yeni alan isimlerini bir yerde toplayıp alan isim değişikliği yapmak istiyorsanız QlikView'in MAPPING özelliğini RENAME FIELD komutuyla kullanarak hızlı çözüm üretebilirsiniz.

Raporumuza yüklediğimiz tablolardaki tüm alanların isimlerini ayrı bir tabloda topladık ve karşılarına yeni isimlerini yazdık. Sonrasında bu tabloyu raporumuza yükleyip RENAME FIELD komutunu kullanarak tek seferde istediğimiz alan isimlerini verebiliriz:
Map_Table:
MAPPING LOAD 
DATA_FIELD_NAME, 
DISPLAY_FIELD_NAME
FROM Mapping_Fields.QVD (QVD);
RENAME FIELDS USING Map_Table;
  • QlikView'de sorgular üzerinde kullanabileceğiniz bazı komutlar:
    • if…then…elseif…else…end if
    • For…next
    • For each…next
    • Do…loop
    • Switch…case…default…end switch
    • Exit script
    • Sub…end sub
    • Call
İyi çalışmalar..

Standart Tabloları: Bir Sütundaki Değerleri Ayrı Sütunlara Çevirmek


Elimizdeki veri ile uğraşırken zaman zaman sütun başlıklarını satıra, satırlarının her birini ayrı bir sütuna dönüştürme ihtiyacı duyuyoruz. Sütun başlıklarını satıra çevirmek için bir önceki yazımda anlattığım Dosya Sihirbazı'nı kullanabiliyoruz. Fakat sütunda yer alan değerlerin her birini ayrı bir sütuna çevirmek için orijinal adıyla Generic table veya diğer ismiyle Standard table'lar oluşturmamız gerekiyor.

Örneğin elimizde yukarıdaki resimdeki gibi bir veri olsun. Ve biz Stage sütununu satırlara çevirmek (yani tabloya beş yeni sütun -queued, reported, closed, rejected ve verified- eklemek) istiyoruz. Yani elimizdeki veriyi aşağıdaki tabloya dönüştüreceğiz.

Elimizdeki veriyi raporumuza ekleyelim. Tablonun INLINE sorgusu aşağıdaki gibidir:
DefectTable:
LOAD * INLINE [
Defect, Group, Priority, Stage
1, Reports, High, Queued
2, Data, Low, Reported
3, Data, High, Closed
4, Object, Medium, Rejected
5, Security, High, Reported
6, System, Medium, Rejected
7, Security, High, Closed
8, Object, Low, Queued
9, Data, Medium, Closed
10, Requirements, Medium, Verified];

Veriyi aktardıktan sonra satırlara çevireceğimiz sütunun her değeri için ayrı bir tablo oluşturuyoruz. Bunun için  QlikView'in GENERIC LOAD özelliğini kullanacağız.
QlikView GENERIC LOAD'un sözdizimi şu şekildedir:
GENERIC LOAD 
   [diğer tablolarla bağlantı kurduracak anahtar alan],
   [değerleri sütunlara çevrilecek sütun adı],
   [yeni sütunların değerleri]
FROM/RESIDENT [kaynak]
Bizim verimize göre GENERIC LOAD sorgumuz şu şekilde olacak:
Workflow:
GENERIC LOAD 
   Defect, 
   Stage, 
   'x' 
RESIDENT DefectTable;
Sonrasında soldaki resimde olduğu gibi her bir sütun değeri için ayrı bir tablo olarak 5 artı kaynak tablomuz olmak üzere toplamda 6 tablomuz olacak.

Her bir sütun değerini ayrı bir sütun yapmak için yola çıkmıştık. Evet, şimdi her bir değerimizin yer aldığı tabloyu ana tablomuzla birleştirerek istediğimiz formatta tek bir tablo elde edeceğiz.
Bunun için tek tek her bir bir değer tablosunu ana tablomuz için LEFT JOIN yapıyoruz:
FOR t = 0 to NoOfTables()
TableList:
LOAD 
   TableName($(t)) as Tablename
   AUTOGENERATE 1
WHERE WildMatch(TableName($(t)), 'Workflow.*');
NEXT t
FOR t = 1 to FieldValueCount('Tablename')
LET vTable = FieldValue('Tablename', $(t));
LEFT JOIN (DefectTable) 
LOAD * 
RESIDENT $(vTable);
DROP TABLE $(vTable);
NEXT t
DROP TABLE TableList;
Ve istediğimiz gibi, en başta elimizdeki verinin Stage sütununda yer alan her bir değeri ayrı bir sütuna çevirmeyi başardık!

İyi çalışmalar..

QlikView Scripting 3: Dışarıdan Yüklenen Verinin Dönüşümü

Bildiğiniz gibi QlikView raporunuza XLS, XLSX, CSV, TXT XML ve HTML formatındaki bir dosyada yer alan veriyi aktarabilirsiniz. Bu veriyi aktarırken gereksiz kısımları silmek veya verinin şekil formatını değiştirmek gibi bazen veride dönüşüm yapmaya ihtiyacınız oluyor. Dosya Sihirbazı ekranı, yüklediğiniz dosyada yapmak istediğiniz tüm bu değişiklikler için size imkan veriyor.
Peki dosyayı nasıl yükleyecek ve bu ekrana nasıl ulaşacağız? Kod Düzenle ekranının alt kısmında yer alan panelin Veri sekmesinde Tablo Dosyaları...'na tıklayarak yüklemek istediğimiz dosyayı seçeriz.
Dosyayı seçip tamam dediğimizde Dosya Sihirbazı ekranı karşımıza çıkar. Karşımıza çıkan bu ilk ekrandaki kısımlarda yaptığımız seçimlerin yüklediğimiz tabloya etkisini de Dosya Sihirbazı ekranında görebiliyoruz.

  • Dosya Türü kısmında, yüklediğimiz dosyanın türünü bir daha bize teyit ettiriyor. 
  • Tablolar kısmında, dosyadaki hangi tabloyu yüklemek istediğimizi seçtiriyor. 
  • Üstbilgi Boyutu kısmında, seçtiğimiz tablonun üstten kaçıncı satır ile veri almaya başlamasını belirliyoruz.
  • Etiketler kısmında, sütunların isimlerinin ne olmasına (dosyada yer aldığı gibi mi yoksa sırasıyla rastgele başlık mi atansın) karar veriyoruz. Eklenmiş Etiketler'i seçersek dosyanın ilk satırını sütun isimleri olarak görüyor. Hiçbiri'ni seçersek ilk satırın üstüne bir satır daha ekleyip sırasıyla rastgele başlık atıyor ve tablonun ilk satırı, diğer satırlar gibi veri değerlerinin yer aldığı satır haline geliyor.
Akabinden Sonraki diyerek devam ediyoruz. Karşımıza çıkan ekranda Dönüştürme Adımını Etkinleştir'i seçerek yüklediğimiz verinin şeklinde yapmak istediğimiz değişiklikleri yapabileceğimiz ekrana ulaşıyoruz. Bu ekranda seçimler yaparak istediğiniz veya belli bir kurala uymayan satırları silebilir, veya belli bir kural ile boş kısımları doldurabilir, yeni sütun ekleyebilir veya tabloyu sağa/sola istediğiniz tarafa çevirebilirsiniz.
Sonraki diyerek devam ettiğimizde karşımıza çıkan ekranda tüm yaptıklarımız sonrasında yüklediğimiz tablonun durumunu kontrol edip yine Sonraki dediğimizde yaptığımız tüm değişiklikleri tabloya yansıtarak tabloyu raporumuza aktarmamızı sağlayacak sorguyla karşılaşırız. Son dediğimizde sorgu, raporumuzda Kod Düzenle ekranına eklendiğini görürüz.

İyi çalışmalar..

QlikView Scripting 2: Sorgu Yazmak

Merhaba,
Sorgu (terminolojide SQL), QlikView uygulamasının kalbidir. Kaynağınızdan veriyi sorgu yardımıyla raporunuza aktarırsınız. Kaynağınızın çeşidine (Oracle, Teradata, MS SQL Server, MS Access..) uygun sorgu yazmanız gerekmektedir; yani çalışmasını istediğiniz sorgu, veri tabanınızın SQL programında da çalışabilir olması gerekiyor. QlikView'in sorgu ekranını basit bir SQL programı olarak düşünebilirsiniz.
  • QlikView raporunuzun sorgusunu Kod Düzenle ekranından (Ctrl+E kısayoluyla da ulaşabilirsiniz) düzenleyebilirsiniz.
  • Kod Düzenle ekranını ilk açtığınızda default genel numara, para, zaman ve tarih genel ayarlarının kodları sizi karşılar.
  • Kullanıcılardan sorguyu gizlemenizi sağlayacak Gizli Kod özelliği var. Özellikle güvenlik kaygısıyla Section Access kodlarını gizlemek için kullanabilirsiniz.
    • Kod Düzenle ekranında Dosya|Gizli Kod Oluştur... ile gizlemek istediğiniz sorgular için bu özelliği kullanabilirsiniz.
    • Gizli Kod her zaman sekmelerin en solunda yer alır. Yani tüm diğer sekmelerden önce çalışır. Ayrıca çalışırken ekranda bu sorguya ait herhangi birşey göremezsiniz ve bu kısım loglanmaz.
    • Başka bir QlikView dosyasındaki veriyi Gizli Kod ile yüklemeyemezsiniz (Binary Load).
  • Kod Düzenle ekranında Dosya|Dış Kod Dosyası Aç'ı seçerek .qvs veya .txt formatında kaydedilmiş bir sorguyu raporunuzda açabilirsiniz.
  • Raporda Ayarlar|Kulllanıcı Tercihleri|Kaydet ekranında Yeniden Yüklemeden Önce Kaydet'i seçerek rapor her yüklemenizden önce otomatik olarak kaydedebilirsiniz.
  • Raporunuzda Dosya|Tablo Görüntüleyicisi'yi (Ctrl+T kısayoluyla da ulaşabilirsiniz) seçerek sorguyla oluşturduğunuz tabloları ve tabloların birbirleriyle ilişkilerini görebilirsiniz.
  • Kod Düzenle ekranında Düzenle|Yorum veya Düzenle|Yorumu Kaldır ile sorgudaki herhangi bir satırı hızlıca yoruma çekebilir veya yorumdan kaldırabilirsiniz.
  • Kod Düzenle ekranında Ekle|Ortam Değişkenleri ile yeni dosyanın sorgu kısmında default olarak gelen değerlerin formatlarını ekleyebilirsiniz.
  • Kod Düzenle ekranında Ekle|Include Deyimi ile tekrar tekrar kullanacağınız bir sorguyu sorgunuza ekleyebilirsiniz. Bunun güzelliği, eklediğiniz sorgunun kaynağını değiştirdiğinizde otomatik olarak bu sorgunuzda da değişecek.
  • Kod Düzenle ekranında Ekle|Yükle Deyimi ile var olan bir tablonuzu sorguya aktarabilir veya açılacak pencereyle excelde tablo oluşturur gibi sorgunuz için tablo oluşturabilirsiniz.
  • Kod Düzenle ekranında Ekle|Bölüm Erişimi ile raporunuza erişim güvenliği oluşturabilirsiniz. Bu kısmın özel bir adı var: Section Access. Bu konuyu bir başka yazımda daha detaylı inceleyeceğim.
  • QlikView'de farklı sekmelere yazdığınız sorgular sol baştan başlayarak çalışır.
  • Kod Düzenle ekranında Sekme|Öncekiyle Birleştir... ile iki farklı sekmedeki sorgunuzu önce olan sekmede bir araya getirip sonraki sekmeyi silmiş olursunuz.
  • Kod Düzenle ekranında Araçlar|Söz Dizimi Kontrolü ile sorgunuzu çalıştırmadan önce doğruluğunu kontrol edebilirsiniz.
  • Sorgu ekranın alt kısmında bulunan panelin Fonksiyonlar kısmında sorgunuzda kullanabileceğiniz tüm fonksiyonları kategorize edilmiş halde bulabilir ve kolayca sorgunuza kopyalayabilirsiniz. Fonksiyonların adlarının alt kısmında kullanım örnekleri bulunmaktadır.
  • Sizden sonra raporunuz üzerinde çalışanlara kolaylık olması için sorgunuza üç şekilde yorum ekleyebilirsiniz:
    • REM ve ; [noktalı virgül] arasına istediğiniz formatta yorumunuzu yazabilirsiniz
    • Yorumunuzu yazar, sonrasında yorumunuzun yer aldığı her satırının başına //  [iki taksim işareti] eklersiniz
    • Veya yorum olarak yazdığınız kısmı seçip Düzenle|Yorum ile kolayca yorum haline getirebilirsiniz
  • Sorgularınızı sekmelere ayırma kuralı size kalmış. Ben veri kaynağını ve raporun ara yüzünü esas alarak sorgumu sekmelere ayırıyorum.

21 Haziran 2015 Pazar

QlikView Scripting 1: Veri Kaynağına Bağlantı Kurmak

  • Öncesinde bazı kısaltmaları belirtelim:
    • QVW: QlikView Worksheet
    • OLE DB: Object Linking and Embedding Database
    • ODBC: Open Database Connectivity
  • Oluşturacağınız QlikView dosyasının uzantısı .qvw olacak.
  • Veri kaynağınızla bağlantısı kurabilmek için öncesinde database türünüzün driver'ının uygulamayı kullanacağınız makinaya kurulmuş olması gerekmektedir.
  • Denetim Masası|Yönetimsel Araçlar|ODBC Veri Kaynağı Yöneticisi'nden (OLE DB için Kullanıcı DSN, ODBC için Sistem DSN)takibini yapabilirsiniz. "ODBC" diye arayarak da hızlıca bulabilirsiniz. Bit versiyonunuza uygun Yöneticisi Araçlar'ıyla çalışmayı unutmayın.
  • OLE DB; hız, bağlantı ve performans bakımından ODBC'den daha iyidir.
  • ODBC ile çalışırken uygulamanın bit versiyonuna uygun olarak driver yüklemeyi unutmayın:
    • 32bit QV kullanıyorsanız sadece 32bit'lik driver'larla çalışabilirsiniz.
    • 64bit QV kullanıyorsanız hem 32 hem 64 bit'lik driver'larla çalışabilirsiniz. Ancak 64bit QV'yi 64 bit'lik driver ile çalıştırırsanız 32 bit'likten daha etkili performans elde edersiniz.
  • Tüm bunlardan sonra QlikView uygulamasında Kod Düzenle ekranında Veri kısmından bağlantınızı kurabilirsiniz.
  • Birden fazla database bağlantısı kurabilirsiniz fakat raporunuz çalışırken kurulan her başarılı bağlantı, kendisinden önceki kurulmuş bağlantıyı keser.
Merhaba
QlikView Scripting kitabı üzerinde aldığım notları konu konu burada sizlerle paylaşacağım. Umarım, notlar işinize yarar.
İyi çalışmalar..

23 Nisan 2015 Perşembe

Birden Fazla Boyutlu Grafikte Tek Boyutun İlk 5 Değerini Listeleme

QlikView'de oluşturacağınız tek boyutla oluşturduğunuz grafikte büyükten küçüğe sıralamasında ilk 5 değeri (list top 5 value based on one dimension on the chart) gösterebileceğiniz gibi birden fazla boyutla oluşturduğunuz grafikte de bir boyutun toplamı üzerinden büyükten küçüğe sıralamasında ilk 5 değeri (list top 5 value based on one dimension on the chart with multiple dimensions)  gösterebilirsiniz.

Örnek olarak aşağıdaki veriyi ele alalım. İl bazında dönemsel olarak çeşitli sebeplerden ötürü iptal edilen abone sayıları var:
İl, dönem ve sebep kırılımında ayrı ayrı iptal sayılarını bulalım ve iptal sayısına göre büyükten küçüğe sıralayalım:
Bu oluşturduğumuz üç grafikten herhangi birinde ilk 5 değeri göstermenin iki yolu var. Her iki yolu açıklama altına eklediğim videolarda "Sebep Kırılımda İptal Adetleri" isimli grafiğin benzerlerini oluşturup göstereceğim.
1. Yol: Önce Sırala (Sort) sekmesinde formulümüzü birinci sıraya taşıyıp azalana göre sıralama yapmak ve sonrasında Sunum (Presentation) sekmesinde kısıt koymak:
2. Yol: Boyut Sınırları (Dimension Limits) sekmesinde kısıt koymak. Eğer geri kalan değerleri de göstermek isterseniz değerlerinizi 5 yerine 6 ile kısıtlayıp Seçenekler (Options) kısmında diğerlerine isim vermeniz gerekiyor ki ben videoda "OTHERS" diyorum. Diğerlerini göstermeyecekseniz 5 ile kısıtlamanız gerekir. Videonun sonunda kontrol amaçlı sıralama yapıyorum:

Grafiğinizde birden fazla boyut var ise ve siz bunlardan birini esas alarak ilk 5 değeri göstermek istiyorsanız videoda gösterdiğim gibi 2.yoldan gidip sonrasında Seçenekler (Options) kısmında Global Gruplama Modu (Global Grouping Mode) kutucuğunu işaretlemeniz gerekmektedir. Sonuç olarak baktığımızda ilk 5 değere sahip değerlerin her il ve dönemdeki verisinin geldiğini göreceğiz:

Çalışma dosyasını buradan indirebilirsiniz.

İyi çalışmalar..

Kümülatif Tekil Saydırma

Bildiğiniz gibi QlikView'de raporun sorgusunda yapmak isteceğiniz bazı işlemleri set analysis yardımıyla önyüzde oluşturacağınız objeler üzerinde de yapabilirsiniz. Özellikle son kullanıcılar (end-users) için excel'de yapabildikleri ve yapamayacakları birçok işlem için set analysis yardımcı olmaktadır. Şimdi sizinle set analysis'in en güzel örneklerinden birini paylaşacağım.

Örnek olarak müşteri sayısını ele alacağız. Dönemsel olarak kümülatif tekil müşteri adedini (cumulative distinc customer id count by period) saydırmak isterseniz "island approach" dediğimiz yöntemi kullanmanız gerekmektedir. 

Elimizde aşağıdaki veri olsun. Ekran görüntüsünde yer alan "Dönemsel Tekil Müşteri Adedi" isimli grafikte dönemsel tekil müşteri adedini buluyoruz:

Geriye dönük kıyaslamayı yapabilmek için sorgu (script) kısmında [Ctrl+E kısa yoluyla kod düzenle (edit script) ekranına kolayca ulaşabilirsiniz] elimizdeki dönemleri tekil olarak tutan bir tablo daha oluşturmamız gerekiyor: 
Şimdi grafiğimizde yapmamız gereken değişiklikler:
  • Boyutlar'da (Dimensions) yer alan dönem objesini [bizim örneğimizde PERIOD] sonradan oluşturduğumuz tabloda yer alan tekil dönem objesi [bizim örneğimizde PERIOD2] ile değiştirmeliyiz.
  • Dönemsel kümülatif tekil müşteri adedini bulmak için İfadeler'e (Expressions) yeni bir ekleme yapacağız: COUNT(DISTINCT IF(PERIOD <= PERIOD2, CUST_ID))
Ve "Dönemsel Kümülatif Tekil Müşteri Adedi" adıyla grafiğimizi tamamladığımızda sonuç:
Çalışma dosyasını buradan indirebilirsiniz.

İyi çalışmalar..

20 Nisan 2015 Pazartesi

Başlarken

Bugün itibariyle yaklaşık 10 aydır Türkiye'nin önde gelen bir kurumunda QlikView adminliği yapıyorum. Yetki verme, sunucularla ilgilenme, raporlardaki veriyi kontrol etme, rapor hazırlama, raporları güncelleme... Bir QlikView raporuna dair herşeyle ilgileniyorum.
Aslında sürecin başında böyle bir blog tutma planım vardı. Fakat işi öğrenme sürecindeki telaşımdan ötürü bugüne dek ertelemek zorunda kaldım. Daha fazla ertelemeden başlamak istiyorum.
Blog'da neler yer alacak? Blog'da işyerinde bana gelen sorulara ve sorunlara bulduğum yanıtları Türkçe olarak paylaşacağım. Öğrendiğim pratik çözümleri görsel destekli olarak aktaracağım. Yani bir QlikView eğitim blogundan daha çok orta düzey bir QlikView kullanıcısı için karşılaşacağı sorunların çözümlerini içeren bir blog olacak. Bu blog, raporu hazırlayan kadar raporu kulananlar için de kullanışlı olacak. 
Yazılarımda programda kullanılan alanları Türkçe paylaşacağım, yanında parantez içinde İngilizce karşılığını da italik yazıyla belirteceğim. Ekstra belirtmek istediğim durumları köşeli parantez içinde paylaşacağım. Elimden geldiğinde yazılarım görsel destekli olacak. Umarım her iki taraf da faydasını görür.

İyi çalışmalar..