Sayfalandırılmış raporlarda basamaklı parametreleri kullanma

Bu makale Power BI sayfalandırılmış raporları tasarlayan rapor yazarlarına yöneliktir. Basamaklı parametreler tasarlama senaryoları sağlar. Basamaklı parametreler, bağımlılıkları olan rapor parametreleridir. Rapor kullanıcısı parametre değeri (veya değerleri) seçtiğinde, bu başka bir parametrenin kullanılabilir değerlerini ayarlamak için kullanılır.

Not

Basamaklı parametrelere giriş bilgileri ve bunların nasıl yapılandırılacağı bu makalenin kapsamına alınmamıştır. Basamaklı parametreleri tam olarak bilmiyorsanız, önce Rapora Basamaklı Parametreler Ekleme (Report Builder ve SSRS) makalesini okumanızı öneririz.

Tasarım senaryoları

Basamaklı parametreleri kullanmaya yönelik iki tasarım senaryosu vardır. Bunlar, aşağıdaki işlemleri yapmak için etkili bir şekilde kullanılabilir:

  • Büyük öğe kümelerini filtreleme
  • Uygun öğeleri gösterme

Örnek veritabanı

Bu makalede gösterilen örneklerde Azure SQL Veritabanı temel alınmıştır. Veritabanında satış işlemleri kaydedilmiştir ve veritabanı bayilerin, ürünlerin ve satış siparişlerinin depolandığı çeşitli tablolar içerir.

Reseller (Bayi) adlı tabloda her bayi için bir kayıt depolanır ve bu tablo binlerce kayıt içerir. Reseller tablosunda şu sütunlar bulunur:

  • ResellerCode (tamsayı)
  • ResellerName
  • Ülke-Bölge
  • State-Province
  • Şehir
  • PostalCode

Sales (Satışlar) adlı da bir tablo vardır. Satış siparişi kayıtlarını depolar ve Reseller Code sütununda Reseller tablosuyla arasında yabancı anahtar ilişkisi bulunur.

Örnek gereksinimi

Reseller Profile (Bayi Profili) raporu geliştirme gereksinimi vardır. Rapor tek bir bayinin bilgilerini görüntüleyecek şekilde tasarlanmalıdır. Rapor kullanıcısının bayi kodunu girmesi uygun bir yöntem değildir çünkü bu koda nadiren ezbere bilirler.

Büyük öğe kümelerini filtreleme

Bayiler gibi büyük miktarlardaki kullanılabilir öğeleri sınırlandırmanıza yardımcı olması için şu üç örneği gözden geçirelim. Bunlar:

Bu örnekte rapor kullanıcısı beş rapor parametresiyle etkileşimli çalışır. Country-Region, State-Province, City ve Postal Code değerlerini seçmesi gerekir. Ardından son bir parametre söz konusu coğrafi konumda bulunan bayileri listeler.

İlgili sütunlara göre filtrelemeyi gösteren Power BI sayfalandırılmış rapor parametrelerinin ekran görüntüsü.

Basamaklı parametreleri şu şekilde geliştirebilirsiniz:

  1. Doğru sırada yerleştirilmiş beş rapor parametresi oluşturun.

  2. Aşağıdaki sorgu deyimini kullanarak ayrı ülke-bölge (Country-Region) değerlerini alan CountryRegion veri kümesini oluşturun:

    SELECT DISTINCT
      [Country-Region]
    FROM
      [Reseller]
    ORDER BY
      [Country-Region]
    
  3. Aşağıdaki sorgu deyimini kullanarak, seçilen ülke-bölge için ayrı eyalet-il (State-Province) değerlerini alan StateProvince veri kümesini oluşturun:

    SELECT DISTINCT
      [State-Province]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
    ORDER BY
      [State-Province]
    
  4. Aşağıdaki sorgu deyimini kullanarak, seçilen ülke-bölge ve eyalet-il için ayrı şehir (City) değerlerini alan City veri kümesini oluşturun:

    SELECT DISTINCT
      [City]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
    ORDER BY
      [City]
    
  5. Bu düzenle devam ederek PostalCode veri kümesini de oluşturun.

  6. Aşağıdaki sorgu deyimini kullanarak, seçilen coğrafi değerler için tüm bayileri alan Reseller veri kümesini oluşturun:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
      AND [City] = @City
      AND [PostalCode] = @PostalCode
    ORDER BY
      [ResellerName]
    
  7. İlki dışındaki her veri kümesi, sorgu parametrelerini ilgili rapor parametrelerine eşler.

Not

Bu örneklerde gösterilen tüm sorgu parametreleri (önünde @ simgesi bulunan parametreler) SELECT deyimlerinin içine eklenebilir veya saklı yordamlara geçirilebilir.

Genel olarak saklı yordamların kullanılması daha iyi bir tasarım yaklaşımıdır. Çünkü saklı yordamların sorgu planları daha hızlı yürütülmesi için önbelleğe alınmıştır ve gerektiğinde daha ileri düzey bir mantık geliştirmenize olanak tanır. Öte yandan bunlar şu anda ağ geçidi ilişkisel veri kaynaklarında, yani SQL Server, Oracle ve Teradata’da desteklenmemektedir.

Son olarak, her zaman verimli bir veri alma işlemini destekleyecek uygun dizinlerin mevcut olduğundan emin olmalısınız. Aksi takdirde rapor parametreleriniz yavaş doldurulabilir ve veritabanı aşırı yüklenebilir. SQL Server dizini hakkında daha fazla bilgi için bkz. SQL Server Dizin Mimarisi ve Tasarım Kılavuzu.

Gruplandırma sütununa göre filtreleme

Bu örnekte rapor kullanıcısı bayi adının ilk harfini seçmek için bir rapor parametresiyle etkileşimli çalışır. Sonra ikinci bir parametre adı seçili harfle başlayan bayileri listeler.

Gruplandırma sütununa göre filtrelemeyi gösteren Power BI sayfalandırılmış rapor parametrelerinin ekran görüntüsü.

Basamaklı parametreleri şu şekilde geliştirebilirsiniz:

  1. Doğru sırada yerleştirilmiş ReportGroup ve Reseller rapor parametrelerini oluşturun.

  2. Aşağıdaki sorgu deyimini kullanarak, tüm bayiler tarafından kullanılan ilk harfleri almak için ReportGroup veri kümesini oluşturun:

    SELECT DISTINCT
      LEFT([ResellerName], 1) AS [ReportGroup]
    FROM
      [Reseller]
    ORDER BY
      [ReportGroup]
    
  3. Aşağıdaki sorgu deyimini kullanarak, adı seçilen harfle başlayan tüm bayileri almak için Reseller veri kümesini oluşturun:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      LEFT([ResellerName], 1) = @ReportGroup
    ORDER BY
      [ResellerName]
    
  4. Reseller veri kümesinin sorgu parametresini buna karşılık gelen rapor parametresiyle eşleyin.

Reseller tablosuna gruplandırma sütununu eklemek daha verimli bir yöntemdir. Kalıcı olduğunda ve dizine alındığında en iyi sonucu verir. Daha fazla bilgi için bkz. Tabloda Hesaplanan Sütunları Belirtme.

ALTER TABLE [Reseller]
ADD [ReportGroup] AS LEFT([ResellerName], 1) PERSISTED

Bu teknik daha da yüksek bir potansiyele sahiptir. Bayileri önceden tanımlanmış harf bantlarına göre filtrelemek için yeni bir gruplandırma sütunu ekleyen aşağıdaki betiğe bakın. Bu betik ayrıca rapor parametrelerine gereken verileri verimli bir şekilde almak için bir dizin oluşturur.

ALTER TABLE [Reseller]
ADD [ReportGroup2] AS CASE
  WHEN [ResellerName] LIKE '[A-C]%' THEN 'A-C'
  WHEN [ResellerName] LIKE '[D-H]%' THEN 'D-H'
  WHEN [ResellerName] LIKE '[I-M]%' THEN 'I-M'
  WHEN [ResellerName] LIKE '[N-S]%' THEN 'N-S'
  WHEN [ResellerName] LIKE '[T-Z]%' THEN 'T-Z'
  ELSE '[Other]'
END PERSISTED
GO

CREATE NONCLUSTERED INDEX [Reseller_ReportGroup2]
ON [Reseller] ([ReportGroup2]) INCLUDE ([ResellerCode], [ResellerName])
GO

Arama düzenine göre filtreleme

Bu örnekte rapor kullanıcısı arama düzeni girmek için bir rapor parametresiyle etkileşimli çalışır. Sonra ikinci bir parametre adı bu düzeni içeren bayileri listeler.

Arama desenine göre filtrelemeyi gösteren Power BI sayfalandırılmış rapor parametrelerinin ekran görüntüsü.

Basamaklı parametreleri şu şekilde geliştirebilirsiniz:

  1. Doğru sırada yerleştirilmiş Search ve Reseller rapor parametrelerini oluşturun.

  2. Aşağıdaki sorgu deyimini kullanarak, arama metnini içeren tüm bayileri almak için Reseller veri kümesini oluşturun:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [ResellerName] LIKE '%' + @Search + '%'
    ORDER BY
      [ResellerName]
    
  3. Reseller veri kümesinin sorgu parametresini buna karşılık gelen rapor parametresiyle eşleyin.

İpucu

Bu tasarım üzerinde geliştirmeler yaparak rapor kullanıcılarınıza daha fazla denetim sağlayabilirsiniz. Bu tasarım kendi düzen eşleştirme değerlerini tanımlamalarına izin verir. Örneğin, "red%" arama değeri adları “red” karakterleriyle başlayan bayileri listeler.

Daha fazla bilgi için bkz. LIKE (Transact-SQL).

Rapor kullanıcılarına kendi düzenlerini tanımlama olanağını nasıl sağlayacağınız aşağıda gösterilmiştir.

WHERE
  [ResellerName] LIKE @Search

Bununla birlikte veritabanı uzmanı olmayan birçok kullanıcı yüzde (%) joker karakterini bilmez. Bunun yerine yıldız (*) karakterine alışkınlardır. WHERE yan tümcesini değiştirerek bu karakteri kullanmalarını sağlayabilirsiniz.

WHERE
  [ResellerName] LIKE SUBSTITUTE(@Search, '%', '*')

Uygun öğeleri gösterme

Bu senaryoda kullanılabilir değerleri sınırlandırmak için olgu verilerini kullanabilirsiniz. Rapor kullanıcılarına etkinliğin kaydedildiği öğeler gösterilir.

Bu örnekte rapor kullanıcısı üç rapor parametresiyle etkileşimli çalışır. İlk ikisi satış siparişi tarihlerinin tarih aralığını ayarlar. Sonra üçüncü parametre, söz konusu tarih aralığında siparişlerin oluşturulmuş olduğu bayileri listeler.

Üç rapor parametresini gösteren Power BI sayfalandırılmış rapor parametrelerinin ekran görüntüsü: Start Order Date, End Order Date ve Reseller.

Basamaklı parametreleri şu şekilde geliştirebilirsiniz:

  1. Doğru sırada yerleştirilmiş OrderDateStart, OrderDateEnd ve Reseller rapor parametrelerini oluşturun.

  2. Aşağıdaki sorgu deyimini kullanarak, tarih aralığında sipariş oluşturmuş tüm bayileri alan Reseller veri kümesini oluşturun:

    SELECT DISTINCT
      [r].[ResellerCode],
      [r].[ResellerName]
    FROM
      [Reseller] AS [r]
    INNER JOIN [Sales] AS [s]
      ON [s].[ResellerCode] = [r].[ResellerCode]
    WHERE
      [s].[OrderDate] >= @OrderDateStart
      AND [s].[OrderDate] < DATEADD(DAY, 1, @OrderDateEnd)
    ORDER BY
      [r].[ResellerName]
    

Öneriler

Raporlarınızı mümkün olduğunca basamaklı parametrelerle tasarlamanızı öneririz. Çünkü:

  • Bunlar rapor kullanıcılarınız için sezgisel ve kullanışlı deneyimler sağlar
  • Bunlar kullanılabilir değerlerin daha küçük kümelerini aldıklarından verimlidir

Aşağıdakileri yaparak veri kaynaklarını iyileştirdiğinizden emin olun:

  • Mümkün olduğunca saklı yordamları kullanın
  • Verileri verimli bir şekilde alabilmek için uygun dizinleri ekleyin
  • Pahalı sorgu zamanı değerlendirmelerinden kaçınmak için sütun değerlerini, hatta satırları ortaya çıkarın

Sonraki adımlar

Bu makaleyle ilgili daha fazla bilgi için aşağıdaki kaynaklara bakın: