Sayfalar

18 Eylül 2013 Çarşamba

QlikView ile Oracle ve Excel Veri Kaynağına Bağlanma

Merhaba Arkadaşlar!

Bir önceki yazımda QlikView hakkında tanıtım mahiyetinde bir yazı yazmıştım. Şimdi QlikView'e uygulamalı olarak biraz daha yakından bakalım. Basit bir kullanımı olmasına rağmen, ülkemizde çok yaygın olmadığı için çok fazla kaynak mevcut değil. O yüzden birkaç veri kaynağına bağlanma (Oracle, Excel) metodunu göstereceğim. Diğer kaynaklara da zaten benzer şekilde bağlanıyor olacaksınız.

UYGULAMA İÇİN:
QlikView'ın resmi sitesinden QlikView Personal Edition sürümünü ücretsiz olarak indirip bilgisayarınıza kurabilirsiniz. Bu sürümü; ticari amaçlar için kullanmadıkça istediğiniz kadar kullanabilirsiniz. Tabii beraberinde bazı kısıtlamalarla birlikte:
  • Başka bilgisayarlarda hazırlanan QlikView dokümanlarını kendi bilgisayarınızda açamazsınız!
  • Sadece QlikView Client yazılımını edinebilirsiniz. Bunun dışındaki Server ve yönetim araçlarını lisanssız olarak kullanamazsınız.
Yani bu şu demek oluyor: Sadece bilgisayarınızda şahsi çalışmalarınız için öğrenme amaçlı olarak bu sürümü kullanabilirsiniz. Onun dışında QlikView ürününüzü lisanslamanız gerekecektir. 

Kurulumu oldukça basit olan bu yazılım (Client) sizi gerçekten yormuyor. Bir OBI yada ODI kurarken harcadığınız o enerjiyi, bu 260 MB'lık yazılımda harcamıyorsunuz. Hatta Server için kurulum dosyası bile 200 MB civarında. Bu sebeple kurulumu anlatmaya gerek görmüyorum.
Veri Kaynakları
QlikView için aklınıza gelen ve veri içeren her türlü yapı; bir veri kaynağı olabilir. Mesela:
  • Klasik anlamda tanıdığımız veritabanı yapıları (Oracle, MS SQL, DB2, Access v.b.)
  • Excel, XML gibi veri saklayan dosya formatları
  • QlikView'in sıkıştırma teknolojisi ile ürettiği QVD uzantılı özel dosyaları
  • Diğer iş zekası tool'ları ile ortak bir dosya uzantısı olan QVX dosyaları
  • HTML tabloları
Tüm bu veri kaynaklarına çok kolay yöntemlerle QlikView arayüzünden bağlanarak içeriğindeki tüm verileri yada sadece ihtiyaç duyabileceğiniz verileri alabilirsiniz. 

Şimdi buradan ekran görüntüleri ile veri kaynaklarımızı QlikView'de nasıl oluşturacağımızı öğrenelim.

QlikView Dokümanı QVW Nedir?
Bu dosya uzantısı QlikView yazılımına özeldir. Oluşturduğunuz tüm çalışmalar bu dosya içerisinde tutulur. Yazdığınız scriptler, oluşturduğunuz model, raporlama ekranınız, veri kaynaklarından çektiğiniz veriler kısacası her şey bu dosya içerisinde tutulacaktır. Dolayısıyla bu dosya uzantısı ile çok fazla haşır neşir olacağınız için önce bu tanımı yapma ihtiyacı duydum. Veri kaynaklarından verilerinizi bu dosya içerisine çektikten sonra; sizin veri kaynakları ile bir bağlantınız kalmaz. QlikView tüm verileri artık bu dosya içerisinden okur. Sadece ilk ETL aşamasında modeli oluştururken verileri almak için veri kaynağına başvurulur. Sonraki tüm işlemleri bu dosya üzerinden gerçekleştirirsiniz. O yüzden veri boyutunuz ne kadar büyükse; bu dosyanın boyutu da o kadar büyüyecektir.

HAZIRLIK
Önce QlikView Client yazılımınızı çalıştırın. File >> New diyerek yeni bir .qvw (QlikView dokümanı) oluşturun. Karşınıza gelen Select Data Source ekranını kapatın. Bu ekranı çok fazla kullanmayacağınız için "başlangıçta göster" ibaresini kaldırabilirsiniz. Önce CTRL+S ile bu dokümanı uygun bir yere kaydedin. 

QlikView'de sürekli kullanacağınız 3 adet ekran vardır. Bu ekranlara ait kısayollar ve kısaca tanımları şöyle verelim:
  1. Ön Yüz / Raporlama Ekranı: Bu ekran üzerinde raporlarınızı tasarlarsınız. Yani son kullanıcı raporlarınızı bu ekranda oluşturursunuz.
  2. Script Ekranı: ETL, modelinizi oluşturduğunuz ve script (bol bol SQL) yazdığınız ekrandır. Korkmayın! Scriptleri çoğunlukla QlikView'in size sunduğu hazır yapılarla oluşturursunuz. Yani ezbere C kodu yazar gibi bir mantık yok. Bu ekranın kısa yolu CTRL+E (Edit)
  3. Tablo Görüntüleme Ekranı: Veri kaynaklarından çektiğiniz tabloları, aralarındaki bağlantıları ve tablo içindeki örnek verileri görebileceğiniz bir ekran. Kısa yolu ise CTRL+T (Table)
Örnek Script Ekranı:

Burada sizinde anlayacağınız üzere QlikView'ın başlangıçta getirdiği bir kod yapısı var. Bu yapıları, eğer size uymuyorsa değiştirebilirsiniz. Bunun için yanlardaki çekiç simgelerini kullanabileceğiniz gibi isterseniz direkt olarak da müdahale edebilirsiniz. Örneğin 'M/D/YYYY' tarih formatı size uymuyorsa bunu istediğiniz şekilde 'DD.MM.YYYY' gibi değiştirebilirsiniz. Ancak buradaki değişimlerin, veri kaynakları ile alakası olmayacaktır. Yani, sadece QlikView üzerindeki işlemlerinizi etkiler. Buradaki format yapılarının, veritabanınızdaki yapılarla uyuşması şart değildir. 

Örnek Tablo Ekranı:

Tablo ekranında isteyebileceğiniz yapı maalesef yok. Çünkü ben de istemiştim :) Yani şunu kast ediyorum. İlişkili alanları sürükleyip bırakarak JOIN'leyemiyoruz. Ya da diğer eşlemek istediğimiz alanlar için bunu yapamıyoruz. Yapacağımız tüm işlemleri Edit Script ekranından yapacağız.

Excel'den Veri Çekme
Malum tüm şirketler Excel kullanıyor ve bu uzun bir süre daha böyle devam edecek. O yüzden Excel ile başlayalım:

CTRL+E ile Script ekranımızı açalım. 


Script ekranının alt kısmında bu paneli göreceksiniz. Burada "Relative Path" kısmının seçili olması önerilir. Böylece uzun uzun dizin yolları ile uğraşmazsınız. Eğer klasik bir dosyadan veri çekecekseniz Table Files düğmesi işinizi görecektir. Ancak veritabanı yapılarından veri çekecekseniz her yazılımda olduğu gibi bir Connection Stringe ihtiyaç duyacaksınız ve soldaki Database alanını kullanmanız gerekecek. 

Şimdi; Table Files butonunu tıklayarak veri setinizin bulunduğu Excel dosyasının yolunu seçebilirsiniz. Aç dediğimizde karşımıza bir Wizard çıkacak. Burada tablonuzun yapısı bozuk görünüyorsa yada başka değişimler yapmak istiyorsanız uygulayabilirsiniz. Yapabileceğiniz işlemler:
  • Sütun başlıkları uyumsuz (bir satır aşağıdan) geldiyse Labels kısmını "Embedded Labels" yapın. Hala sütun başlıkları aşağıda kalıyorsa, Header Size kısmını "Lines" yapıp istediğiniz satırı başlık olarak yukarı çekebilirsiniz. 
  • Dahil etmek istemediğiniz sütunları x simgesinden çıkarabilirsiniz.
  • Next ile ilerlediğinizde Garbage sekmesinde istemediğiniz satırları silmek için bir şart belirleyebilirsiniz.
  • Fill sekmesinde boş gelen satırları doldurmak için bir şart oluşturabilirsiniz. 
  • Next diyerek ilerlediğinizde sütunisimlerine tıklayarak isimlerini değiştirebilirsiniz.
  • Cross Table kısmı: QlikView Excel'deki Pivot tablo yapılarını okuyamaz. Bunu okuyabilmesi için tabloları klasik yapıya dönüştürüp aktarmanız gerekir. Bu sihirbazla Pivot tablolarınızı -> Normal tablolara dönüştürebilirsiniz. 
  • Kısacası aklınıza gelebilecek tüm düzenleme işlemlerini buradan yapabilirsiniz.
Basit bir tablo hazırlayıp uygulayalım:


Çalışanlar
ID CalisanAdi
1 A
2 B
3 C
4 D
5 E

CTRL+E ile script ekranına gelelim. Table Files butonunu kullanarak Excel dosyasımızı gösterelim. Burada fazladan Çalışanlar satırı gerçek sütun isimlerinin (Attribute) aşağıda kalmasına sebep olacaktır. Bu yüzden seçimlerimiz resimde olduğu gibi olmalı: 


Tablo ile ilgili işlemlerinizi bitirip Finish dediğinizde ilgili Script karşınıza hazırlanmış olarak gelecektir:

Directory;
LOAD ID, 
     CalisanAdi
FROM
Deneme.xls
(biff, embedded labels, header is 1 lines, table is [Sheet1$]);

Burada da Directory; yazısını silip, yerine Calisanlar: yazarak tablonuza yeni bir isim verebilirsiniz (Türkçe karakter olmamalı):

Calisanlar:
LOAD ID, 
     CalisanAdi
FROM
Budget.xls
(biff, embedded labels, header is 1 lines, table is [Sheet1$]);

Artık veriyi qvw dokümanımıza aktarabiliriz. Buna RELOAD işlemi deniyor. Bu işlemi kısaca CTRL+R tuş kombinasyonu ile yapabileceğiniz gibi script ekranında şu botun ile de yapabilirsiniz:


Artık tablodaki tüm verileriniz QlikView dokümanınıza aktarılmış durumda. Tabloda bir güncelleme yaptığınızda bunu QlikView dokümanınıza yansıtmak için tekrar RELOAD etmelisiniz. Yoksa güncel olmayan verilerle çalışırsınız. Verilerinizin doğru aktarılıp aktarılmadığını görmek için CTRL+T ile tablo ekranına geçip tablonuzun verilerini sağ tıklayarak Preview edebilirsiniz:


Diğer tüm dosya formatları için de (XML, HTML...) bu metodu takip ederek kolayca verilerinizi ekleyebilirsiniz. 

Oracle Veritabanından Veri Çekme
Normalde bildiğiniz üzere Oracle'dan veri çekmek için uzun uzun bağlantı stringleri yazılır ve hatalı bir harf veya rakam sizi çileden çıkarır. Oysa QlikView'de yine her şey karşımıza hazır geliyor, biz sadece seçimimizi yapıyoruz. Burada HR schema'sından veri çeken küçük bir örnek yapacağız. Bunu uygulayabilmeniz için sisteminizde Oracle yüklü ve HR schema'sının aktif olması gerekiyor. Ve tabii Oracle servislerinizin sorunsuz çalışıyor olması gerekiyor.

QlikView'de Oracle veritabanına bağlanmanız için bilmeniz gereken 2 şey var:
  • Bağlanacağınız Instance'ın SID'i
  • Yetkili bir kullanıcı ismi ve şifresi
Bunları bildikten sonra işiniz kolay. Adım adım anlatalım:
  1. CTRL+E ile script ekranını açıyoruz.
  2. Üstteki menüden Tools >> ODBC Administrator 64 bit... (veya 32 bit, hangisi size uygunsa) seçiyoruz. ODBC Veri Kaynağı Yöneticisi açılmalı.
  3. Buraya kullanımda olan Oracle veritabanımızı tanımlamamız gerekiyor. Bunun için Kullanıcı DSN sekmesinde Ekle diyerek; Oracle in OraDb11g_home1 kısmını bulup seçiyoruz.
  4. Karşımıza konfigürasyon ekranı çıkıyor. Burada bu veri kaynağımıza istediğimiz ismi veriyoruz. Burada önemli olan TNS Service Name. Yani SID değerimiz. Bu tnsnames.ora dosyasındaki değer ile aynı olacak şekilde yandaki küçük ok işareti ile açarak karşımıza gelen menüden ilgili SID değerini seçiyoruz.
  5. Bağlantıyı test etmek için Test Connection butonunu tıklıyoruz ve karşımıza kullanıcı adı ve şifre soran bir ekran geliyor. Bu tabii ki Oracle kullanıcısı için soruluyor. Ben burada SYSTEM kullanıcısını belirttim, bu elbette önerilmeyen bir durum. Genelde İş Zekası uygulamaları için ayrı kullanıcı tanımlanıp sadece gerekli yetkiler verilerek bu kullanıcı üzerinden işlem yapılır.
  6. Connection Successful uyarısını aldıysanız bu iş tamamdır :) Artık Script Ekranındayken alttaki Database bölümünden ODBC'yi seçip, Connect butonu ile Oracle instance'ımıza bağlanabiliriz. Connect dediğimizde karşımıza gelen ekranda UserID ve Password değerlerine yine kullanıcı adı ve şifremizi veriyoruz ve alt kısımdan da oluşturduğumuz Oracle veri kaynağını seçiyoruz:
  7. OK ile bitirdiğimizde QlikView bize şifrelenmiş bir Bağlantı Stringi oluşturacaktır:
    ODBC CONNECT TO [OracleDS;DBQ=ORACLE ] (XUserId is CNbQWJFLTCVKUGRL, XPassword is aUDEQQRMNLacWZC);
  8. Şimdi de HR schemasından bir tablo çekelim. Bunun için yine script ekranında alt kısımdaki Database tarafından Select düğmesini tıklayabiliriz. Eğer SQL bilginize güveniyorsanız bu düğmeyi kullanmadan script kısmına direkt olarak SQL ifadenizi de yazabilirsiniz:
  9. Gelen Create Select Statement ekranından Owner kısmından schemamızı yani HR'ı seçiyoruz. Hemen bu schemaya ait tablolar alt kısımda listelenir. Çok fazla sonuç dönüyorsa bunları soldaki menüden (Table, View, Synonym...) filtreleyebiliriz. 
  10. Bu noktada sağ alt kısımda Preceding Load kısmının seçili olmasına özen gösterin. Çünkü böylelikle tablodaki sütun isimleri de string içerisinde gözükecektir. Bu ilerideki kodlamalarınızda size yardımcı olacak bir seçenektir. 
  11. İsterseniz tüm sütunları değil de sadece arzu ettiğiniz sütunları getirebilirsiniz. Bunun için sağ kısımdaki Fields kısmını kullanabilirsiniz. Çoklu seçim için CTRL tuşunu kullanın. Sonuçta ekranımız şöyle oldu:
  12. OK deyip tamamladığımızda oluşan string aşağıdaki gibidir:
    LOAD "COUNTRY_ID",
        "COUNTRY_NAME",
        "REGION_ID";
    SQL SELECT *
    FROM HR.COUNTRIES;
  13. İsterseniz bu stringin başına Ulkeler: ibaresini ekleyerek tablonuza yeni isim verebilirsiniz. Vermezseniz veritabanından dönen ismi kullanacaktır. Hatta LOAD içeriğinde yer alan sütunların adını yanına AS "yeni_isim" ekleyerek değiştirebilirsiniz.
  14. Sonucu görmek için önce kaydedip - RELOAD edin. (Kısayol: CTRL+S -> CTRL+R). Sonra CTRL+T ile tablomuzu görebilir ve sağ tıklayıp Preview diyerek içeriğini görebiliriz.
Bu kadar basit! Diğer veritabanı sistemlerinden de çok da farklı olmayan bir yolla verilerinizi çekebilirsiniz. Artık pek çok kaynaktan veri çekerek kendi modelinizi oluşturabilirsiniz. Son bir ipucu: İki tabloyu JOIN etmek için alan isimlerini bire bir aynı vermek yeterli. Gerisini QlikView hallediyor.

Başka bir yazıda görüşmek dileğiyle...

Hiç yorum yok:

Yorum Gönder