Reporting Service Filtreleme Teknikleri

Özellikle çok miktarda veri içeren veri tabanlarından, raporlama amacıyla veri alınırken, sadece ve gerçekten gerektiği miktarda veri çekmek gerekir. Böylece hem kaynak kullanımı azalır hem de raporun render edilişi hızlanır. İşte filtreleme bu gerekçelerle uygulanan bir işlemdir. Burada sorun; kullanıcının aynı oturumda, aynı raporu farklı seferlerde alırken, veri çekme kriterini değiştiriyor olma sorunudur.

Not  : Bu yazı “Reporting Service ile Raporlama” isimli kitabımdan bir alıntıdır. Konunun detayı ve devamı bu kitapta yer almaktadır. Bu yazıdan izinsiz alıntı yapılamaz !

Sorgu veya stored procedure’deki parametreler rapor sunucusundan verinin filtrelenmiş halde elde edilmesini sağlar. Bu mekanizma hep aynı sonuç setinin (resultset) elde edildiği durumlar için uygundur ve iyi sonuç verir.

Ancak kullanıcı aynı oturumda, farklı parametre değerleriyle aynı raporu elde etmek isterse, hem network trafiği artar hem de performans düşer. Bu durumda doğru yol; öngörülü bir biçimde veriyi istemciye çekerek, cache’lemek ve filtreleme işlemini de istemcide gerçekleştirmektir. Böylece sürekli veri tabanına gidilip gelinmesine gerek kalmadan çalışılacağı için hem network trafiğinin azalması hem de raporun render edilişinin hızlanması sağlanır.

Özetlemek ve pratik bir sonuca varmak gerekirse; filtreleme işlemi, sunucu tarafında ve resultset’in oluşturulması aşamasında yapılırsa, buna “sorgu parametresi kullanımı” denilmekte, filtrelemeyi istemci tarafında ve rapor oluşturulurken sonradan yapmaya ise “rapor filtresi kullanımı” denilmektedir. Bu tür filtreler rapora :

1) Dataset

2) Data Region veya

3) Gruplama düzeyinde uygulanabilir.

Sözgelimi daha önce Liste Yapıdaki Raporlar başlığında örneklenen “Kurumsal Kontaklar” raporunda tüm unvanlara sahip kontaklar elde edilmekteydi. Ancak kullanıcı sadece belirli bir unvana sahip kontakları filtrelemek isteyebilir. Bu durumda öncelikle olası unvanları veri tabanından alacak ve filtre kaynağı olarak kullanılabilecek bir Dataset oluşturulmalıdır. dsTitles isimli Dataset aşağıdaki sorguyla ve bu amaca hizmeten oluşturulmuştur.

SELECT Distinct Title
FROM Person.Contact

Daha sonra “Parameters > Add Parameter” seçeneğiyle açılan pencerede prmUnvan isimli bir parametre oluşturulmalıdır.

Bu parametreyi besleyecek olası değerler ise aynı penceredeki Available Values kısmından dsTitles isimli Dataset’teki Title alanından getirilmelidir.

Bu noktada artık dsKontaklar isimli Dataset’e filtre eklenebilir. Expression için Unvan alanı seçilip, = operatörüyle, @prmUnvan isimli parametrenin değeri filtre için kullanılmalıdır.

Örnek İfadeler

Expression Tür Operatör Değer
[SUM(Quantity)] Integer > 7
[SUM(Quantity)] Integer TOP N 10
[SUM(Quantity)] Integer TOP % 15
[Sales] Text < =CDec(30)
[OrderDate] DateTime >= 17.08.1999
[OrderDate] DateTime BETWEEN 17.08.1999 – 12.11.1999
[Territory] Text LIKE *anadolu
[Product] Text LIKE %r%t*
=LEFT(Fields!Subcat.Value,1) Text IN X, Y, Z
Reklamlar