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.

Nota

Ú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úča sa najprv si prečítať Pridanie kaskádových parametrov do zostavy v Zostavovači zostáv služby Power BI.

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 ukladá jeden záznam pre každého predajcu, pričom obsahuje mnoho tisíc záznamov. Tabuľka Reseller obsahuje tieto stĺpce:

  • ResellerCode (KódPredajníka) (celé číslo)
  • ResellerName (MenoPredajníka)
  • Country-Region
  • State-Province
  • Mesto
  • PSČ

K dispozícii je aj tabuľka s názvom Sales. Sú v nej uložené záznamy predajných objednávok a má vzťah cudzieho kľúča k tabuľke Reseller v stĺpci ResellerCode.

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.

Snímka obrazovky parametrov stránkovanej zostavy služby Power BI zobrazujúca filtrovanie podľa súvisiacich stĺpcov.

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 CountryRegion množinu údajov, 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 StateProvince množinu údajov, 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, ktorá načíta rozdielne hodnoty mesta pre vybratú krajinu – oblasť a 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 PostalCode (PSČ) množinu údajov.

  6. Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov Reseller (Predajca), ktorá načíta všetkých predajcov pre vybraté geografické hodnoty:

    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.

Nota

Všetky parametre dotazu (pred názvom majú symbol @) uvedené v týchto príkladoch možno vložiť do 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 príručky k architektúre a návrhu indexu servera SQL Server.

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.

Snímka obrazovky parametrov stránkovanej zostavy služby Power BI zobrazujúca filtrovanie podľa zoskupených stĺpcov.

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

  1. Vytvorte ReportGroup (Skupina Zostáv) a parametrov zostavy Reseller (Predajca), zoradené v správnom poradí.

  2. Pomocou nasledujúceho príkazu dotazu vytvorte množine údajov ReportGroup (Skupina Zostáv) na načítanie prvých písmen používaných 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 stĺpec zoskupenia. Keď je trvalý a indexovaný, poskytuje najlepšie výsledky. Ďalšie informácie nájdete špecifikácii 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 pásiem 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.

Snímka obrazovky parametrov stránkovanej zostavy služby Power BI zobrazujúca filtrovanie podľa parametra vyhľadávania.

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

  1. Vytvorte parametre zostavy Search a 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.

Tip

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 s názvami, ktoré začínajú znakmi "red".

Ďalšie informácie nájdeteLIKE (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 (%). 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.

Snímka obrazovky parametrov stránkovanej zostavy služby Power BI zobrazujúca tri parametre zostavy: Start Order Date (Počiatočný dátum objednávok), End Order Date (Koncový dátum objednávok) a Reseller (Predajca).

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

  1. Vytvorte OrderDateStart, OrderDateEnda parametre zostavy Reseller zoradené v správnom poradí.

  2. Pomocou nasledujúceho príkazu dotazu vytvorte množinu údajov Reseller (Predajca), ktorá množinu údajov, aby ste načítali 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: