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:
- Filtrowanie według powiązanych kolumn
- Filtrowanie według kolumny grupowania
- Filtruj według wzorca wyszukiwania
Filtrowanie według powiązanych kolumn
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.
Oto jak można opracować parametry kaskadowe:
Utwórz pięć parametrów raportu uporządkowanych w odpowiedniej kolejności.
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]
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]
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]
Kontynuuj ten wzorzec, aby utworzyć zestaw danych PostalCode .
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]
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.
Oto jak można opracować parametry kaskadowe:
Utwórz parametry raportu ReportGroup i Reseller uporządkowane w prawidłowej kolejności.
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]
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]
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.
Oto jak można opracować parametry kaskadowe:
Utwórz parametry raportu Wyszukiwania i odsprzedawcy uporządkowane w odpowiedniej kolejności.
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]
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.
Oto jak można opracować parametry kaskadowe:
Utwórz parametry raportu OrderDateStart, OrderDateEnd i Reseller uporządkowane w odpowiedniej kolejności.
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
Powiązana zawartość
Aby uzyskać więcej informacji związanych z tym artykułem, zapoznaj się z następującymi zasobami: