Použitie kaskádových parametrov v stránkovaných zostavách
Tento článok je určený pre autorov zostáv, ktorí navrhujú stránkované zostavy služby Power BI. Obsahuje scenáre na navrhovanie kaskádových parametrov. Kaskádové parametre sú parametre zostavy so závislosťami. Keď používateľ zostavy vyberie hodnotu parametra (alebo hodnoty), použije sa na nastavenie dostupných hodnôt pre iný parameter.
Poznámka
Úvodné informácie o kaskádových parametroch a o tom, ako ich nakonfigurovať, nie sú popísané v tomto článku. Ak nie ste úplne oboznámení s kaskádovými parametrami, odporúčame najprv si prečítať čítanie Pridanie kaskádových parametrov do zostavy v službe Power BI Zostavovač zostáv.
Scenáre návrhu
Kaskádové parametre možno používať v dvoch scenároch návrhu. Dajú sa efektívne používať na:
- Filtrovanie veľkých množín položiek
- Prezentovanie relevantných položiek
Vzorová databáza
Príklady uvedené v tomto článku sú založené na databáze Azure SQL. Databáza obsahuje záznamy o predaji a jej súčasťou sú rôzne tabuľky s údajmi o predajcoch, produktoch a predajných objednávkach.
Tabuľka s názvom Reseller (Predajca ) obsahuje jeden záznam pre každého predajcu, je v nej niekoľko tisíc záznamov. Tabuľka Reseller (Predajca ) obsahuje tieto stĺpce:
- ResellerCode (KódPredajníka) (celé číslo)
- ResellerName (MenoPredajcu)
- Country-Region (Krajina – oblasť)
- State-Province (Štát – kraj)
- Mesto
- PostalCode
Je tu aj tabuľka s názvom Sales ( Predaj). Sú v nej uložené záznamy predajných objednávok a má vzťah cudzieho kľúča k tabuľke Reseller (Predajca), stĺpcu ResellerCode (KódPredajníka ).
Vzorová požiadavka
Pri vývoji zostavy Reseller Profile (Profil predajcu) treba splniť požiadavku. Zostava musí byť navrhnutá tak, aby zobrazovala informácie pre jedného predajcu. Nie je vhodné, aby kód predajcu zadával používateľ zostavy, pretože si ho zriedka zapamätá.
Filtrovanie veľkých množín položiek
Pozrime sa na tri príklady, ktoré vám pomôžu obmedziť veľké množiny dostupných položiek, ako sú napríklad predajcovia. Sú to tieto:
- Filtrovanie podľa súvisiacich stĺpcov
- Filtrovanie podľa stĺpca zoskupenia
- Filtrovanie podľa vzoru vyhľadávania
Filtrovanie podľa súvisiacich stĺpcov
V tomto príklade pracuje používateľ zostavy s piatimi parametrami zostavy. Musí vybrať krajinu – oblasť, štát – provinciu, mesto a PSČ. Posledný parameter potom zobrazí zoznam predajcov, ktorí sídlia v danej geografickej oblasti.
Takto môžete vyvíjať kaskádové parametre:
Vytvorte päť parametrov zostavy zoradených v správnom poradí.
Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov CountryRegion (KrajinaOblasť), ktorá načíta rozdielne hodnoty krajiny – oblasti:
SELECT DISTINCT [Country-Region] FROM [Reseller] ORDER BY [Country-Region]
Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov StateProvince (ŠtátProvincia ), ktorá načíta rozdielne hodnoty štátu – provincie pre vybratú krajinu – oblasť:
SELECT DISTINCT [State-Province] FROM [Reseller] WHERE [Country-Region] = @CountryRegion ORDER BY [State-Province]
Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov City (Mesto ), ktorá načíta rozdielne hodnoty mesta pre vybratú krajinu – oblasť a štát – provinciu:
SELECT DISTINCT [City] FROM [Reseller] WHERE [Country-Region] = @CountryRegion AND [State-Province] = @StateProvince ORDER BY [City]
Pokračujte podľa tohto vzoru a vytvorte množinu údajov PostalCode (PSČ ).
Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov Reseller (Predajca), ktorá načíta všetkých predajcov pre vybraté hodnoty geografickej oblasti:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE [Country-Region] = @CountryRegion AND [State-Province] = @StateProvince AND [City] = @City AND [PostalCode] = @PostalCode ORDER BY [ResellerName]
Pre každú množinu údajov okrem prvej priraďte parametre dotazu k zodpovedajúcim parametrom zostavy.
Poznámka
Všetky parametre dotazu (pred názvom majú symbol @) uvedené v týchto príkladoch možno vložiť v rámci príkazov SELECT alebo odovzdať do uložených procedúr.
Uložené procedúry vo všeobecnosti predstavujú lepší prístup k návrhu. Dôvodom je, že ich plány dotazov sa ukladajú do vyrovnávacej pamäte, vďaka čomu sa vykonávajú rýchlejšie, a v prípade potreby umožňujú vývoj sofistikovanejšej logiky. Momentálne sa však nepodporujú pre relačné zdroje údajov brány, teda SQL Server, Oracle a Teradata.
Nakoniec by ste mali vždy zabezpečiť vytvorenie vhodných indexov, ktoré podporia efektívne načítavanie údajov. V opačnom prípade sa parametre zostavy môžu vypĺňať pomaly a databáza môže byť preťažená. Ďalšie informácie o indexovaní SQL Servera nájdete v téme Príručka k architektúre a návrhu indexu SQL Servera.
Filtrovanie podľa stĺpca zoskupenia
V tomto príklade používateľ zostavy pracuje s parametrom zostavy, aby vybral prvé písmeno predajcu. Druhý parameter potom zobrazí zoznam predajcov, keď názov začína vybratým písmenom.
Takto môžete vyvíjať kaskádové parametre:
Vytvorte parametre zostavy ReportGroup (SkupinaZstáv ) a Reseller (Predajca), zoradené v správnom poradí.
Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov ReportGroup (SkupinaZstáv ), ktorá načíta prvé písmená používané všetkými predajcami:
SELECT DISTINCT LEFT([ResellerName], 1) AS [ReportGroup] FROM [Reseller] ORDER BY [ReportGroup]
Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov Reseller (Predajca), ktorá načíta všetkých predajcov začínajúcich na vybraté písmeno:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE LEFT([ResellerName], 1) = @ReportGroup ORDER BY [ResellerName]
Priraďte parameter dotazu množiny údajov Reseller (Predajca ) k zodpovedajúcemu parametru zostavy.
Efektívnejšie je pridať do tabuľky Reseller (Predajca) stĺpec zoskupenia . Keď je trvalý a indexovaný, poskytuje najlepšie výsledky. Ďalšie informácie nájdete v téme Zadanie vypočítaných stĺpcov v tabuľke.
ALTER TABLE [Reseller]
ADD [ReportGroup] AS LEFT([ResellerName], 1) PERSISTED
Táto technika môže priniesť ešte väčší potenciál. Pozrite si nasledujúci skript, ktorý pridá nový stĺpec zoskupenia na filtrovanie predajcov podľa preddefinovaných rozsahov písmen. Vytvorí tiež index na efektívne načítanie údajov požadovaných parametrami zostavy.
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
Filtrovanie podľa vzoru vyhľadávania
V tomto príklade používateľ zostavy pracuje s parametrom zostavy, aby zadajte vzor vyhľadávania. Druhý parameter potom zobrazí zoznam predajcov, ktorí majú uvedený názov.
Takto môžete vyvíjať kaskádové parametre:
Vytvorte parametre zostavy Search (Hľadať ) a Reseller (Predajca ), zoradené v správnom poradí.
Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov Reseller (Predajca), ktorá načíta všetkých predajcov obsahujúcich hľadaný text:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE [ResellerName] LIKE '%' + @Search + '%' ORDER BY [ResellerName]
Priraďte parameter dotazu množiny údajov Reseller (Predajca ) k zodpovedajúcemu parametru zostavy.
Prepitné
Tento návrh môžete vylepšiť tak, aby používateľom zostáv poskytoval väčšiu kontrolu. Umožňuje im definovať vlastnú hodnotu zhodnú s vzorom. Hľadaná hodnota "red%" napríklad vyfiltruje predajcov, na ktoré sa zadávajú znaky "red".
Ďalšie informácie nájdete v téme Like (Transact-SQL).
Takto môžete používateľom zostavy umožniť definovať si vlastný vzor.
WHERE
[ResellerName] LIKE @Search
Mnohí odborníci, ktorí nie sú odborníkmi na databázy, však zástupný znak percent (%) nepoznajú. Namiesto toho poznajú znak hviezdičky (*). Úpravou klauzuly WHERE im môžete umožniť použiť tento znak.
WHERE
[ResellerName] LIKE SUBSTITUTE(@Search, '%', '*')
Prezentovanie relevantných položiek
V tomto scenári môžete pomocou údajov faktov obmedziť dostupné hodnoty. Používateľom zostáv sa zobrazia položky, pri ktorých bola zaznamenaná aktivita.
V tomto príklade pracuje používateľ zostavy s tromi parametrami zostavy. Prvé dva nastavia rozsah dátumov predajných objednávok. Tretí parameter potom zobrazí zoznam predajcov, ktorých objednávky boli vytvorené počas tohto obdobia.
Takto môžete vyvíjať kaskádové parametre:
Vytvorte parametre zostavy OrderDateStart (ZačiatokObjednávky), OrderDateEnd (KoncovýDátumObjednávok) a Reseller (Predajca), zoradené v správnom poradí.
Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov Reseller (Predajca), ktorá načíta všetkých predajcov, ktorí vytvorili objednávky v časovom období:
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]
Odporúčania
Odporúča sa navrhovať zostavy s kaskádovými parametrami vždy, keď je to možné. Dôvod:
- Používateľom zostáv poskytujú intuitívne a užitočné prostredie.
- sú efektívne, pretože načítavajú menšie množiny dostupných hodnôt.
Nezabudnite optimalizovať zdroje údajov takto:
- vždy, keď je to možné, použite uložené procedúry.
- pridanie vhodných indexov na efektívne načítavanie údajov,
- realizáciou hodnôt stĺpcov (a dokonca aj riadkov), aby sa predišlo časovo náročným vyhodnocovaniam dotazov.
Súvisiaci obsah
Ďalšie informácie súvisiace s týmto článkom nájdete v nasledujúcich zdrojoch: