Używanie parametrów kaskadowych w raportach podzielonych na strony

Ten artykuł jest przeznaczony dla Ciebie jako autor raportu projektowania raportów podzielonych na strony w usłudze Power BI. Udostępnia scenariusze projektowania parametrów kaskadowych. Parametry kaskadowe to parametry raportu z zależnościami. Gdy użytkownik raportu wybierze wartość parametru (lub wartości), służy do ustawiania dostępnych wartości dla innego parametru.

Uwaga

Wprowadzenie do parametrów kaskadowych i sposobu ich konfigurowania nie zostało omówione w tym artykule. Jeśli nie znasz całkowicie parametrów kaskadowych, zalecamy najpierw przeczytanie tematu Dodawanie parametrów kaskadowych do raportu w programie Power BI Report Builder.

Scenariusze projektowania

Istnieją dwa scenariusze projektowania dotyczące używania parametrów kaskadowych. Mogą one być skutecznie używane do:

  • Filtrowanie dużych zestawów elementów
  • Prezentowanie odpowiednich elementów

Przykładowa baza danych

Przykłady przedstawione w tym artykule są oparte na usłudze Azure SQL Database. Baza danych rejestruje operacje sprzedaży i zawiera różne tabele przechowujące odsprzedawców, produkty i zamówienia sprzedaży.

Tabela o nazwie Reseller przechowuje jeden rekord dla każdego odsprzedawcy i zawiera wiele tysięcy rekordów. Tabela Reseller (Sprzedawca) zawiera następujące kolumny:

  • ResellerCode (liczba całkowita)
  • ResellerName (Nazwa odsprzedawcy)
  • Country-Region (Kraj–region)
  • State-Province (Województwo)
  • City
  • PostalCode

Istnieje też tabela o nazwie Sales (Sprzedaż). Przechowuje rekordy zamówień sprzedaży i ma relację klucza obcego z tabelą Reseller w kolumnie ResellerCode.

Przykładowe wymaganie

Istnieje wymóg opracowania raportu profilu odsprzedawcy. Raport musi być przeznaczony do wyświetlania informacji dla pojedynczego odsprzedawcy. Użytkownik raportu nie musi wprowadzać kodu odsprzedawcy, ponieważ rzadko je zapamiętuje.

Filtrowanie dużych zestawów elementów

Przyjrzyjmy się trzem przykładom, które pomogą Ci ograniczyć duże zestawy dostępnych elementów, takich jak odsprzedawcy. Są to:

W tym przykładzie użytkownik raportu wchodzi w interakcję z pięcioma parametrami raportu. Muszą wybrać kraj-region, województwo, miasto, a następnie kod pocztowy. Końcowy parametr wyświetla następnie listę odsprzedawców znajdujących się w tej lokalizacji geograficznej.

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

Oto jak można opracować parametry kaskadowe:

  1. Utwórz pięć parametrów raportu uporządkowanych w odpowiedniej kolejności.

  2. Utwórz zestaw danych CountryRegion, który pobiera unikatowe wartości kraju-regionu, używając następującej instrukcji zapytania:

    SELECT DISTINCT
      [Country-Region]
    FROM
      [Reseller]
    ORDER BY
      [Country-Region]
    
  3. Utwórz zestaw danych StateProvince, który pobiera odrębne wartości województwa dla wybranego regionu kraju przy użyciu następującej instrukcji zapytania:

    SELECT DISTINCT
      [State-Province]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
    ORDER BY
      [State-Province]
    
  4. Utwórz zestaw danych Miasto, który pobiera unikatowe wartości miast dla wybranego kraju-regionu i województwa, używając następującej instrukcji zapytania:

    SELECT DISTINCT
      [City]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
    ORDER BY
      [City]
    
  5. Kontynuuj ten wzorzec, aby utworzyć zestaw danych PostalCode .

  6. Utwórz zestaw danych Reseller (Sprzedawca), aby pobrać wszystkich odsprzedawców dla wybranych wartości geograficznych przy użyciu następującej instrukcji zapytania:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
      AND [City] = @City
      AND [PostalCode] = @PostalCode
    ORDER BY
      [ResellerName]
    
  7. Dla każdego zestawu danych z wyjątkiem pierwszego zamapuj parametry zapytania na odpowiednie parametry raportu.

Uwaga

Wszystkie parametry zapytania (poprzedzone symbolem @) pokazane w tych przykładach mogą być osadzone w instrukcjach SELECT lub przekazywane do procedur składowanych.

Ogólnie rzecz biorąc, procedury składowane są lepszym podejściem projektowym. Jest to spowodowane tym, że ich plany zapytań są buforowane w celu szybszego wykonywania i umożliwiają tworzenie bardziej wyrafinowanej logiki w razie potrzeby. Nie są one jednak obecnie obsługiwane w przypadku relacyjnych źródeł danych bramy, co oznacza program SQL Server, Oracle i Teradata.

Na koniec należy zawsze upewnić się, że istnieją odpowiednie indeksy w celu obsługi wydajnego pobierania danych. W przeciwnym razie parametry raportu mogą być powolne do wypełnienia, a baza danych może zostać przeciążona. Aby uzyskać więcej informacji na temat indeksowania programu SQL Server, zobacz Architektura indeksu i przewodnik projektowania programu SQL Server.

Filtrowanie według kolumny grupowania

W tym przykładzie użytkownik raportu wchodzi w interakcję z parametrem raportu, aby wybrać pierwszą literę odsprzedawcy. Drugi parametr wyświetla następnie listę odsprzedawców, gdy nazwa rozpoczyna się od wybranej litery.

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

Oto jak można opracować parametry kaskadowe:

  1. Utwórz parametry raportu ReportGroup i Reseller uporządkowane w prawidłowej kolejności.

  2. Utwórz zestaw danych ReportGroup, aby pobrać pierwsze litery używane przez wszystkich odsprzedawców przy użyciu następującej instrukcji zapytania:

    SELECT DISTINCT
      LEFT([ResellerName], 1) AS [ReportGroup]
    FROM
      [Reseller]
    ORDER BY
      [ReportGroup]
    
  3. Utwórz zestaw danych Reseller (Sprzedawca), aby pobrać wszystkich odsprzedawców rozpoczynających się od wybranej litery przy użyciu następującej instrukcji zapytania:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      LEFT([ResellerName], 1) = @ReportGroup
    ORDER BY
      [ResellerName]
    
  4. Zamapuj parametr zapytania zestawu danych Reseller na odpowiadający mu parametr raportu.

Wydajniejsze jest dodanie kolumny grupowania do tabeli Reseller (Sprzedawca). W przypadku utrwalonego i indeksowanego zapewnia najlepszy wynik. Aby uzyskać więcej informacji, zobacz Określanie obliczonych kolumn w tabeli.

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

Ta technika może zapewnić jeszcze większy potencjał. Rozważmy następujący skrypt, który dodaje nową kolumnę grupowania w celu filtrowania odsprzedawców według wstępnie zdefiniowanych pasm liter. Tworzy również indeks umożliwiający efektywne pobieranie danych wymaganych przez parametry raportu.

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

Filtruj według wzorca wyszukiwania

W tym przykładzie użytkownik raportu wchodzi w interakcję z parametrem raportu, aby wprowadzić wzorzec wyszukiwania. Drugi parametr wyświetla następnie listę odsprzedawców, gdy nazwa zawiera wzorzec.

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

Oto jak można opracować parametry kaskadowe:

  1. Utwórz parametry raportu Wyszukiwania i odsprzedawcy uporządkowane w odpowiedniej kolejności.

  2. Utwórz zestaw danych Reseller (Sprzedawca), aby pobrać wszystkich odsprzedawców zawierających tekst wyszukiwania przy użyciu następującej instrukcji zapytania:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [ResellerName] LIKE '%' + @Search + '%'
    ORDER BY
      [ResellerName]
    
  3. Zamapuj parametr zapytania zestawu danych Reseller na odpowiadający mu parametr raportu.

Napiwek

Możesz ulepszyć ten projekt, aby zapewnić większą kontrolę nad użytkownikami raportów. Umożliwia definiowanie własnej wartości dopasowania wzorca. Na przykład wartość wyszukiwania "red%" będzie filtrować do odsprzedawców z nazwami rozpoczynającymi się od znaków "czerwony".

Aby uzyskać więcej informacji, zobacz LIKE (Transact-SQL).

Poniżej przedstawiono sposób, w jaki użytkownicy raportu mogą definiować własny wzorzec.

WHERE
  [ResellerName] LIKE @Search

Wielu specjalistów spoza bazy danych nie zna jednak wartości procentowej (%) symboli wieloznacznych. Zamiast tego znają znak gwiazdki (*) . Modyfikując klauzulę WHERE, można zezwolić im na używanie tego znaku.

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

Prezentowanie odpowiednich elementów

W tym scenariuszu można użyć danych faktów, aby ograniczyć dostępne wartości. Użytkownicy raportów będą przedstawiać elementy, w których zarejestrowano aktywność.

W tym przykładzie użytkownik raportu wchodzi w interakcję z trzema parametrami raportu. Pierwsze dwa ustawiają zakres dat zamówień sprzedaży. Trzeci parametr zawiera listę odsprzedawców, w których zamówienia zostały utworzone w tym okresie.

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

Oto jak można opracować parametry kaskadowe:

  1. Utwórz parametry raportu OrderDateStart, OrderDateEnd i Reseller uporządkowane w odpowiedniej kolejności.

  2. Utwórz zestaw danych Reseller (Sprzedawca), aby pobrać wszystkich odsprzedawców, którzy utworzyli zamówienia w danym okresie, przy użyciu następującej instrukcji zapytania:

    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]
    

Zalecenia

Zalecamy projektowanie raportów przy użyciu parametrów kaskadowych, jeśli jest to możliwe. Dzieje się tak dlatego, że:

  • Zapewnianie intuicyjnych i przydatnych środowisk dla użytkowników raportu
  • Są wydajne, ponieważ pobierają mniejsze zestawy dostępnych wartości

Pamiętaj, aby zoptymalizować źródła danych według:

  • Korzystanie z procedur składowanych, zawsze, gdy jest to możliwe
  • Dodawanie odpowiednich indeksów do wydajnego pobierania danych
  • Materializowanie wartości kolumn — a nawet wierszy — aby uniknąć kosztownych ocen czasu zapytania

Aby uzyskać więcej informacji związanych z tym artykułem, zapoznaj się z następującymi zasobami: