Veri Kaynakları
    • 10 Sep 2024
    • 7 Minutes to read
    • Dark
      Light

    Veri Kaynakları

    • Dark
      Light

    Article summary

    Veri Kaynakları Nedir ?

    Sorgu ve özel tasarım raporlarınız veya gösterge paneli için oluşturulan veri kümeleridir. Veri kaynaklarını otomatik SQL kodu üreten tasarım modu ile, SQL kodu elle yazarak veya daha önceden oluşturulmuş stored procedure'ler vasıtası ile  üç farklı şekilde oluşturabilirsiniz. Oluşturulan bütün raporlar ve gösterge panelleri PaperWork sol menüsündeki raporlar menüsünde  yetkiye bağlı olarak görüntülenir.

    Kaynak Adı

    Oluşturulacak veri kaynağına verilen isimdir. Kullanıcı tarafından amacına uygun bir isim verilebilir.

    Yetki Seti

    Kullanım yeri Rapor Kaynağı veya Gösterge Paneli ise, bu veri kaynağını raporda kullanmaya yetkili olacak kullanıcıları belirler, kullanım için en az görme yetkisi bulunmalıdır. Bu yetki setinde  en az görme yetkisi olmayan kullanıcılar, rapor tasarımında bu veri kaynağını göremezler. Kullanım yeri Rapor ise, raporlar listesinde listeyi görme yetkisi de bu yetkiye bağlıdır.

    Tasarım Yetki Seti

    Veri kaynağının tasarımı üzerinde yapılacak işlemler için yetki setidir. Bu yetki setinde en az yazma yetkisi bulunmayan kullanıcılar, veri kaynağı üzerinde düzenleme yapamazlar.

    Kullanım Yeri

    a. Rapor Kaynağı : Veriler rapor tasarımında kullanılacak ise kaynak tipi rapor kaynağı olmalıdır.

    b. Rapor : Özel hazırlanmış rapor tasarımına ihtiyaç olmadığı durumlarda, verilerin raporlar sayfasında listelenmesi için kullanılır.

    c. Gösterge Paneli : Veriler gösterge paneli tasarımında kullanılacak ise kaynak tipi gösterge paneli olmalıdır. 

    Rapor - Önemli
    Veri kaynağını rapor olarak tasarlamanın amacı o kaydın belgelerine de erişebilmektir. Bu nedenle oluşacak tablo nesnesi üzerinde kolonların isimlendirilmesi, genişliklerinin belirlenmesi, verinin formatlanması gibi fonksiyonlar bulunmaz.
    Rapor sonucu bir tablo (Grid) üzerinde sayfalar halinde gösterilir. Her sayfa geçişinde ilkgili kaynak çalıştırılarak o sayfaya uygun kayıtlar tabloya getirilir. Tablo kolonlarında yapılan filtreleme sadece o sayfada çalışır. Eğer tüm sayfalarda çalışacak bir filtreye ihtiyaç var ise parametre olarak tasarlanmalıdır.
    Hazırlanacak raporda görsellik önemli ise veri kaynağı tasarlanması, bu kaynağın Rapor Tasarımı bölümünde kullanılması tavsiye edilir. Rapor Tasarımı bölümünde belge görüntülemek mümkün değildir.

    Kaynak Türü

    a. Tasarım ile Sorgu : Sistemde var olan sistem tabloları, listeler, arşiv kayıtları ve akış kayıtlarından tasarım ara yüzü ile oluşturulan ve otomatik SQL sorgusu oluşturan veri kaynağı türüdür. Oluşturulan SQL kodu salt okunur olacaktır, gerekli düzenlemeler tasarım ara yüzünden yapılmaktadır. Birden fazla seçim birleştirilebilir (JOIN) ve bu birleştirmelerde kendi oluşturmuş olduğunuz listeler de kullanılabilir. Tasatım ile sorguda nesne no üzerinden eklenti kolonu kullanılabilir.

    Kolonlar

    Kolonlar bölümünde veri kaynağında bulunması istenen alanlar belirtilir. Sıralarını düzenlemek için veya artan ya da azalan sıralama eklemek için kolon adının solundaki listeden seçim yapılabilir. Tepeye kaydır seçimi ilgili kolonu en başa, aşağı taşı seçimi ise ilgili kolonu en sona taşır. Yukarı ve aşağı kaydır seçenekleri bir ileri veya bir geri şeklinde hareket edilmesini sağlar.

    Kolonun adına tıklanırsa, kolon yeniden isimlendirilebilir. 


    Fonksiyon bölümünde ise, kolon sayısal bir alan değilse sayı ve tekil sayı seçenekleri, sayısal bir alan ise bunlara ilaveten toplam, ortalama, minimum ve maximum seçenekleri gelir. Bu fonksiyonlarla gruplama yapmak mümkündür.

    Kriterlerin Kullanımı

    Bu bölümde oluşturulan listeye kriter verilebilir, bu kriterler parametre olarakta kullanılabilir. Kriter ekle butonu ile eklediğiniz kriterler "VE" bağlacı ile birbiriene bağlanır. Parametre olarak kullanmak için kriterin solunda bulunan butonu ile çıkan menüden Parametre seçimi yapılmalıdır. Bu durumda rapor çalıştırıldığında bu kriter kullanıcıya sorulacaktır. Kriter silinmek istenirse, yine aynı menüden Sil seçimi yapılarak silinebilir.
     

    "VEYA" kullanmak için kriter eklemeden önce parantez açmak gerekir. Açılan parantezin içine eklenen kriterler birbirlerine veya bağlacı ile bağlanacaktır. Parantez haricinde tekrar kriter eklenirse veya ile yapılan grubun tamamına ve ile bağlanan bir yapı oluşturulabilir. 

    Aşağıdaki örnekte tasarımda verilen kriterler ve SQL açılımı görülmektedir.

    Kriterlerde eşitlik tanımları şu şekildedir :

    içeren : verilen kriteri içeren kayıtlar aranır.

    içermeyen : verilen kriteri içermeyen kayıtlar aranır.

    eşit : verilen kriterin tam karşılığını içeren kayıtlar aranır.

    eşit değil  : verilen kriterin tam karşılığı içermeyen kayıtlar aranır.

    arasında : verilen iki kriter arası aranır, verilen kriterler dahildir.

    arasında olmayan : verilen iki kriter arasındaki kayıtların haricinde olan kayıtlar aranır, verilen kriterler dahil değildir.

    küçük : verilen kriterden küçük olanlar aranır, kriter dahil değildir.

    küçük veya eşit : verilen kriterden küçük olanlar aranır, kriter dahildir.

    büyük : verilen kriterden büyük olanlar aranır, kriter dahil değildir.

    büyük veya eşit : verilen kriterden büyük olanlar aranır, kriter dahil değildir.

    null olan : veri tabanında null olarak görünen kayıtları arar (boşluk null değildir)

    null olmayan :  veri tabanında null olarak görünen kayıtları arar (boşluk null değildir)

    ile başlayan : verilen kriter ile başlayan kayıtlar aranır.

    ile başlamayan : verilen kriter ile başlayan kayıtları içermeyen kayıtlar aranır.

    listeye bağla : tasarımda tanımlanan listeden, rapor çalıştırma esnasında seçim yapılır.

    Tip Alanları ve Listeler
    Veri kaynaklarında kullanılan parametreler ara yüze veri kaynağı çalıştırıldığında otomatik gelir. Bu parametre alanlarının liste olması mümkündür. Eğer parametre olarak kullanılan alan bir tip alanı ise tip tanımlamalarında bu alana liste ataması yapılır ise parametre de liste olarak açılır.

    Bağlantılar

    Eğer ihtiyaç olursa, birden fazla tabloyu birbirine bağlamak mümkündür. Aşağıdaki örnekte kullanıcı tablosundan alınan verilerde kod ile bulunan statü durumunu isim olarak yazdırmak için liste tanımlarında oluşturulan bir kullanıcı statü listesi ile bağlandığı görülmektedir. Eşleştirme kullanıcılar tablosundaki durum ile kullanıcı statü listesindeki kodu ile yapılmış ve üstteki listeye kullanıcı statü listesinden statü alanı da eklenmiştir.

    Bu tasarım sonucunda şöyle bir liste alırız :

    Görüldüğü gibi bağlantı sayesinde kod ile birlikte statü ismi de listeye eklenmiştir.

    Önemli
    Bağlantılar birden fazla yapılabilir. Ancak tasarım ile sorguda bağlantılar sıra ile alınabilir. Örneğin birinci tablo ile ikinci tablo bağlanır. Daha sonra ikinci tablo ile üçüncü tablo bağlanır. Birinci tablo ile üçüncü tablo eşleştirilemez. Buradaki tablo sırası, yandan seçim yapılan tablo sırasıdır. İlk hangi tabloyu almak istiyorsanız, önce o tabloyu seçmelisiniz.
    Eğer birinci tablo önce ikinciyle, sonra üçüncüye gibi bağlanmak isteniyorsa bunu SQL ile tasarımda JOIN vasıtası ile yapabilirsiniz.

    Raporda Eklenti Kolonu Kullanma

    Raporda oluşturduğumuz listeye bağlı bir belge varsa, rapora "Nesne No" eklemek sureti ile kayda bağlı belge görüntülenebilir. 

    Bunun için Nesne No alanını listeye ekledikten sonra  butonuna basılarak, çıkan menüden "Eklenti Kolonu" seçimi yapılır. Rapor görüntülendiğinde ilk kolonda belgeyi açmak için link görüntülenecektir. Belge bölümü açıldığında yapılabilecek işlemler yetki setine bağlı olarak gösterilir.

    Eklenti Kolonunda Nesne No Seçimi 
    Eklenti kolonu yalnız "Nesne no" üzerinde çalışır, diğer alanlarda görüntülenmez.
    Eklenti kolonu kullanılan rapor sadece kullanım yeri "rapor" olarak "tasarım ile sorgu" bölümünde oluşturulabilir, rapor tasarım ekranında kullanılmaz. Yukarıda da açıklandığı gibi eklentili raporda görsel düzenleme bulunmaz.

    b. SQL Sorgusu : Editör üzerinden SQL kodu yazılarak veri kaynağı hazırlanabilir. 

    SELECT 
      WF.WORKFLOW_ID   AS 'AKIŞ NO', 
      WF.WORKFLOW_NAME AS 'AKIŞ ADI', 
      WF.CREATE_DATE   AS 'OLUŞTURULDUĞU TARİH', 
      WF.STATE         AS 'DURUMU', 
      WF.VERSION       AS 'VERSİYON',
      US.USER_NAME     AS 'SAHİBİ'
    FROM 
      VW_PW_WORKFLOW AS WF WITH (NOLOCK) 
      LEFT OUTER JOIN PW_USER AS US WITH (NOLOCK) ON WF.OWNER=US.LOGIN_NAME
      LEFT OUTER JOIN PW_SYSOBJECT AS OB WITH (NOLOCK) ON WF.OBJECT_ID=OB.OBJECT_ID
    WHERE
      OB.IS_DELETED=0
    SQL Sorgu şekilleri
    Veri kaynaklarında SQL sorgusu yapabileceğimiz editör üzerinde özel komutlar kullandığında sorun çıkarabilir. Bu nedenle basit select sorguları dışında özel komutlar kullanılıyor ise, bunların view oluşturularak kullanılması gerekir. 
    Veri kaynağında kullanılacak tip için "Geri Dönüşüm" durumu "Onaya Bağlı" ve "Zamana Bağlı" olduğu durumda dikkat edilmesi gerekenler

    Zamana bağlı ve onaya bağlı olarak silindi işaretlenen kayıtlar, tip üzerinde aynı şekilde kalır. Zamanı geldiğinde veya onay verildiğinde silinir. Bu nedenle üzerinde geri dönüşüm tanımlı tipler üzerinden rapor hazırlanırken PW_SYSOBJECT (Sistem) tablosu ile veri kaynağı birleştirilmeli, IS_DELETED (silindi) kolonu 0 olarak alınmalıdır. Bu şekilde bağlantı yapılmadan sadece tip üzerinden rapor alındığında geri dönüşüm ekranında bekleyenler de rapora yansıyacaktır. Rapora yansımaması için PW_SYSOBJECT (Sistem) tablosu ile veri kaynağı nesne no ile birleştirilmeli ve IS_DELETED (Silindi) kolunu için eşittir 0 olarak kriter verilerek veri kaynağı oluşturulmalıdır. (Üstteki örnekte nasıl çalışacağı gösterilmiştir)

    IS_DELETED=0 ise aktif kayıt,
    IS_DELETED=1 ise zamana bağlı silinecek kayıt,
    IS_DELETED=2 ise onaya bağlı silinecek kayıt anlamına gelir.

    c. SQL Stored Procedure : Veritabanında oluşturulan bir stored procedure kullanılarak veri kaynağı oluşturulabilir. Burada dikkat edilmesi gereken husus, hazırlanan stored procedure isminin mutlaka SP_ ile başlaması gerekmektedir. Bunun dışında isimlendirilen stored procedure'ler listede görüntülenmez.

    Örnek bir Stored Procedure :

    CREATE PROC SP_GET_DATA4TYPE_50 (
      @START_TIME DATETIME,
      @END_DATE   DATETIME,
      @TYPE       NVARCHAR(20),
      @OWNER      NVARCHAR(20))
    AS
    DECLARE 
      @MSG     NVARCHAR(2000),
      @SQLSTR  NVARCHAR(MAX)
    
    SELECT @SQLSTR='
    SELECT
      PW_SYSOBJECT.OWNER, 
      PW_SYSOBJECT.OBJECT_ID, 
      PW_SYSOBJECT.OBJECT_NAME, 
      PW_SYSOBJECT.CONTENT_TYPE, 
      PW_SYSOBJECT.CREATED_DATE, 
      PW_SYSOBJECT.OBJECT_TYPE, 
      PW_SYSOBJECT.FORM_NAME
    FROM PW_SYSOBJECT(NOLOCK) 
    WHERE PW_SYSOBJECT.CONTENT_TYPE LIKE ''%'+@TYPE+'%'' AND PW_SYSOBJECT.OWNER LIKE  ''%'+@OWNER+'%''';
    IF @START_TIME <> @END_DATE
    BEGIN
      SELECT @SQLSTR+=' AND PW_SYSOBJECT.CREATED_DATE BETWEEN '''+CONVERT(NVARCHAR,@START_TIME,121)+''' AND '''+CONVERT(NVARCHAR,@END_DATE,121)+'''' 
    END
    
    EXECUTE SP_EXECUTESQL @SQLSTR

    Farklı Veri Tabanlarından SQL Sorgusu ve Stored Procedure ile bilgi alma
    PaperWork BI mimarisi normal şartlarda sadece kendi veri tabanından rapor hazırlamak amacı ile kullanılabilir. Aşağıdaki kod yazma yöntemleri kullanılarak farklı veri tabanlarından da sorgu yapılabilir.
    1. Aynı SQL Server üzerinde birden fazla veri tabanı konumlandırılabilmektedir. PaperWork veri tabanının erişilmek istenilen veri tabanı ile aynı SQL Server üzerinde olduğundan emin olunuz. Örneğin PaperWork veri tabanı adının PAPERWORK, erişilecek veri tabanının da ERP olduğunu düşünelim. Her ikisinin de aynı SQL Server üzerinde olması gerekir.
    2. Yazılan SQL sorguları ve prosedürlerin çalıştırılması için PaperWork kurulumunda belirlenen SQL Server kullanıcısının (genelde paperwork olarak isimlendirilir) yetkileri ile hareket edilir. Bu durumda ilgili SQL kullanıcısının sorgu yapılabilecek veri tabanı üzerinde erişilecek tablolara yetkisinin olması beklenir. Örneğimize göre paperwork SQL kullanıcısının ERP veri tabanında istenilen tablolarda/viewkarda SELECT yetkisi bulunmalıdır.
    3. Örneğin bir tip alanındaki MUSTERI_NO alanı ile ERP veri tabanı içindeki bir tabloda MUSTERI_NO alanının eşlenerek bir sorgu yapılacağını düşünelim. Bu durumda sorgu aşağıdaki gibi olmalıdır;

    Burada diğer veri tabanına ulaşmak için ERP.. yazım şekline dikkat etmek gerekir.

    SQL Sorgularında ve SP lerde Türkçe Karakter kullanımı
    Kullanılan nesnelerin ve sonuç olarak dönen kolonların/Alanların isimlendirmesinde türkçe karakter kullanılmamalıdır. Türkçe karakterler Rapor Tasarımı esnasında sorun yaratabilmektedir.
    Veri Kaynaklarının Taşınması
    Platformlar arası taşımada Stored Procedure ve özel oluşturulan View nesneleri taşınmaz. İlgili platformda bu nesnelerin tekrar oluşturulması gerekir.