Zdieľať cez


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:

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.

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

Takto môžete vyvíjať kaskádové parametre:

  1. Vytvorte päť parametrov zostavy zoradených v správnom poradí.

  2. 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]
    
  3. 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]
    
  4. 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]
    
  5. Pokračujte podľa tohto vzoru a vytvorte množinu údajov PostalCode (PSČ ).

  6. 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]
    
  7. 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.

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

Takto môžete vyvíjať kaskádové parametre:

  1. Vytvorte parametre zostavy ReportGroup (SkupinaZstáv ) a Reseller (Predajca), zoradené v správnom poradí.

  2. 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]
    
  3. 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]
    
  4. 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.

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

Takto môžete vyvíjať kaskádové parametre:

  1. Vytvorte parametre zostavy Search (Hľadať ) a Reseller (Predajca ), zoradené v správnom poradí.

  2. 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]
    
  3. 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.

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

Takto môžete vyvíjať kaskádové parametre:

  1. Vytvorte parametre zostavy OrderDateStart (ZačiatokObjednávky), OrderDateEnd (KoncovýDátumObjednávok) a Reseller (Predajca), zoradené v správnom poradí.

  2. 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.

Ďalšie informácie súvisiace s týmto článkom nájdete v nasledujúcich zdrojoch: