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

Bu makale, Power BI sayfalandırılmış raporları tasarlayan bir rapor yazarı olarak sizi hedefler. Basamaklı parametreler tasarlamaya yönelik senaryolar sağlar. Basamaklı parametreler, bağımlılıkları olan rapor parametreleridir. Rapor kullanıcısı bir parametre değeri (veya değerleri) seçtiğinde, başka bir parametre için kullanılabilir değerleri ayarlamak için kullanılır.

Not

Basamaklı parametrelere giriş ve bunların nasıl yapılandırılması bu makalede ele alınmıyor. Basamaklı parametreleri tam olarak bilmiyorsanız, önce Power BI Rapor Oluşturucusu'da Bir Rapora Basamaklı Parametreler Ekleme'yi okumanızı öneririz.

Tasarım senaryoları

Basamaklı parametreleri kullanmak için iki tasarım senaryosu vardır. Bunlar etkili bir şekilde şu şekilde kullanılabilir:

  • Büyük öğe kümelerini filtreleme
  • İlgili öğeleri sunma

Örnek veritabanı

Bu makalede sunulan örnekler bir Azure SQL Veritabanı temel alır. Veritabanı satış işlemlerini kaydeder ve bayileri, ürünleri ve satış siparişlerini depolayarak çeşitli tablolar içerir.

Reseller adlı tablo, her kurumsal bayi için bir kayıt depolar ve binlerce kayıt içerir. Reseller tablosunda şu sütunlar bulunur:

  • ResellerCode (tamsayı)
  • ResellerName
  • Ülke-Bölge
  • Eyalet-İl
  • City
  • PostalCode

Sales adlı bir tablo da var. Satış siparişi kayıtlarını depolar ve ResellerCode sütununda Reseller tablosuyla yabancı anahtar ilişkisi vardır.

Örnek gereksinim

Kurumsal Bayi Profili raporu geliştirme gereksinimi vardır. Rapor, tek bir kurumsal bayiye ilişkin bilgileri görüntüleyecek şekilde tasarlanmalıdır. Rapor kullanıcısının nadiren ezberlediğinden kurumsal bayi kodu girmesi uygun değildir.

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

Bayiler gibi büyük kullanılabilir ürün kümelerini sınırlamanıza yardımcı olacak üç örneğe göz atalım. Bunlar:

Bu örnekte, rapor kullanıcısı beş rapor parametresiyle etkileşim kurar. Ülke-bölge, eyalet-il, şehir ve posta kodu seçmelidir. Son bir parametre daha sonra bu coğrafi konumda bulunan kurumsal bayileri listeler.

Screenshot of Power BI paginated report parameters showing filter by related columns.

Basamaklı parametreleri şu şekilde geliştirebilirsiniz:

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

  2. Aşağıdaki sorgu deyimini kullanarak ayrı ülke-bölge 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çili ülke-bölge için ayrı eyalet-il 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çili ülke-bölge ve eyalet-ili için ayrı şehir değerlerini alan Şehir veri kümesini oluşturun:

    SELECT DISTINCT
      [City]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
    ORDER BY
      [City]
    
  5. PostalCode veri kümesini oluşturmak için bu desene devam edin.

  6. Aşağıdaki sorgu deyimini kullanarak seçili coğrafi değerlerin tüm kurumsal bayilerini almak için 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 için sorgu parametrelerini ilgili rapor parametreleriyle eşleyin.

Not

Bu örneklerde gösterilen tüm sorgu parametreleri (@ simgesiyle ön ekli) SELECT deyimlerine eklenebilir veya saklı yordamlara geçirilebilir.

Genellikle saklı yordamlar daha iyi bir tasarım yaklaşımıdır. Bunun nedeni sorgu planlarının daha hızlı yürütülecek şekilde önbelleğe alınmış olması ve gerektiğinde daha gelişmiş mantık geliştirmenize olanak sağlamasıdır. Ancak şu anda sql Server, Oracle ve Teradata anlamına gelen ağ geçidi ilişkisel veri kaynakları için desteklenmemektedir.

Son olarak, verimli veri alımını desteklemek için her zaman uygun dizinlerin mevcut olduğundan emin olmanız gerekir. Aksi takdirde rapor parametreleriniz yavaş doldurulabilir ve veritabanı aşırı yüklenebilir. SQL Server dizin oluşturma 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ı, bayinin ilk harfini seçmek için bir rapor parametresiyle etkileşim kurar. ardından ikinci bir parametre, ad seçilen harfle başladığında kurumsal bayileri listeler.

Screenshot of Power BI paginated report parameters showing filter by a grouping column.

Basamaklı parametreleri şu şekilde geliştirebilirsiniz:

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

  2. Aşağıdaki sorgu deyimini kullanarak tüm kurumsal 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 seçili harfle birlikte gelen tüm kurumsal 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 ilgili rapor parametresiyle eşleyin.

Bayi tablosuna gruplandırma sütununu eklemek daha verimlidir. Kalıcı hale getirildiğinde ve dizinlendiğinde en iyi sonucu sağlar. 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 fazla potansiyel sunabilir. Bayileri önceden tanımlanmış harf bantlarına göre filtrelemek için yeni bir gruplandırma sütunu ekleyen aşağıdaki betiği göz önünde bulundurun. Ayrıca rapor parametrelerinin gerektirdiği 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 filtrele

Bu örnekte, rapor kullanıcısı bir arama deseni girmek için bir rapor parametresiyle etkileşim kurar. İkinci bir parametre, ad deseni içerdiğinde kurumsal bayileri listeler.

Screenshot of Power BI paginated report parameters showing filter by search pattern.

Basamaklı parametreleri şu şekilde geliştirebilirsiniz:

  1. Doğru sırada sıralanmış Arama ve Bayi raporu parametrelerini oluşturun.

  2. Aşağıdaki sorgu deyimini kullanarak arama metnini içeren tüm kurumsal 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 ilgili rapor parametresiyle eşleyin.

İpucu

Rapor kullanıcılarınız için daha fazla denetim sağlamak için bu tasarımı geliştirebilirsiniz. Kendi desen eşleştirme değerlerini tanımlamalarına olanak tanır. Örneğin, "red%" arama değeri, "kırmızı" karakterleriyle başlayacak adlara sahip kurumsal bayilere filtre ekler.

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

Rapor kullanıcılarının kendi desenlerini tanımlamasına şu şekilde izin vekleyebilirsiniz.

WHERE
  [ResellerName] LIKE @Search

Ancak veritabanı olmayan birçok profesyonel, yüzde (%) joker karakteri hakkında bilgi edinemez. Bunun yerine, yıldız (*) karakterini bilirler. WHERE yan tümcesini değiştirerek, bu karakteri kullanmalarına izin vekleyebilirsiniz.

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

İlgili öğeleri sunma

Bu senaryoda, kullanılabilir değerleri sınırlamak 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şim kurar. İlk ikisi, satış siparişi tarihlerinin tarih aralığını ayarlar. Ardından üçüncü parametre, bu süre boyunca siparişlerin oluşturulduğu kurumsal bayileri listeler.

Screenshot of Power BI paginated report parameters showing three report parameters: Start Order Date, End Order Date, and Reseller.

Basamaklı parametreleri şu şekilde geliştirebilirsiniz:

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

  2. Aşağıdaki sorgu deyimini kullanarak tarih döneminde sipariş oluşturan tüm kurumsal bayileri almak için 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

Mümkün olduğunda raporlarınızı basamaklı parametrelerle tasarlamanızı öneririz. Çünkü onlar:

  • Rapor kullanıcılarınız için sezgisel ve yararlı deneyimler sağlayın
  • Daha küçük kullanılabilir değer kümeleri aldıkları için verimlidir

Veri kaynaklarınızı şu şekilde iyileştirin:

  • Mümkün olduğunda saklı yordamları kullanma
  • Verimli veri alma için uygun dizinler ekleme
  • Pahalı sorgu zamanı değerlendirmelerinden kaçınmak için sütun değerlerini ve hatta satırları gerçekleştirme

Bu makaleyle ilgili daha fazla bilgi için aşağıdaki kaynaklara göz atın: