Egymásra épülő paraméterek használata lapszámozott jelentésekbenUse cascading parameters in paginated reports

Ez a cikk a lapszámozott Power BI-jelentéseket megtervező jelentéskészítők számára készült.This article targets you as a report author designing Power BI paginated reports. Egymásra épülő paraméterek tervezéséhez nyújt forgatókönyveket.It provides scenarios for designing cascading parameters. Az egymásra épülő paraméterek függőségekkel rendelkező jelentésparaméterek.Cascading parameters are report parameters with dependencies. Amikor egy jelentésfelhasználó kiválaszt egy paraméterértéket (vagy -értékeket), azzal elérhető értékeket állíthat be egy másik paraméterhez.When a report user selects a parameter value (or values), it's used to set available values for another parameter.

Megjegyzés

A cikk nem foglalkozik az egymásra épülő paraméterek bemutatásával és ezek konfigurálásával.An introduction to cascading parameters, and how to configure them, isn't covered in this article. Ha nem ismeri jól az egymásra épülő paramétereket, először olvassa el az Egymásra épülő paraméterek hozzáadása egy jelentéshez (Jelentéskészítő és SSRS) című cikket.If you're not completely familiar with cascading parameters, we recommend you first read Add Cascading Parameters to a Report (Report Builder and SSRS).

Tervezési forgatókönyvekDesign scenarios

Az egymásra épülő paraméterekhez két tervezési forgatókönyv tartozik.There are two design scenarios for using cascading parameters. Ezek a következőkhöz használhatók hatékonyan:They can be effectively used to:

  • Elemek nagyméretű készleteinek szűréseFilter large sets of items
  • Releváns elemek megjelenítésePresent relevant items

PéldaadatbázisExample database

A cikkben bemutatott példák egy Azure SQL Database-adatbázison alapulnak.The examples presented in this article are based on an Azure SQL Database. Az adatbázis értékesítési műveleteket rögzít, és különböző táblázatokat tartalmaz, amelyek viszonteladókat, termékeket és értékesítési rendeléseket foglalnak magukba.The database records sales operations, and contains various tables storing resellers, products, and sales orders.

A Reseller (Viszonteladó) tábla viszonteladónként egy rekordot tartalmaz, összesen több ezret.A table named Reseller stores one record for each reseller, and it contains many thousands of records. A Reseller tábla a következő oszlopokat tartalmazza:The Reseller table has these columns:

  • ResellerCode (egész szám)ResellerCode (integer)
  • ResellerNameResellerName
  • Ország, régióCountry-Region
  • State-ProvinceState-Province
  • TelepülésCity
  • IrányítószámPostalCode

Van egy Sales nevű tábla is.There's a table named Sales, too. Ez értékesítési megrendelések rekordjait tárolja, és külső kulcsos kapcsolata van a Reseller táblával a ResellerCode oszlopban.It stores sales order records, and has a foreign key relationship to the Reseller table, on the ResellerCode column.

PéldakövetelményExample requirement

Az egyik követelmény a viszonteladói profil jelentésének kidolgozása.There's a requirement to develop a Reseller Profile report. A jelentést úgy kell megtervezni, hogy egyetlen viszonteladó adatait jelenítse meg.The report must be designed to display information for a single reseller. Nem célszerű, hogy a jelentés felhasználója adja meg a viszonteladói kódot, mivel ők ritkán jegyzik meg ezeket.It's not appropriate to have the report user enter a reseller code, as they rarely memorize them.

Nagyméretű készletek szűréseFilter large sets of items

Tekintsünk meg három példát, amellyel elérhető elemek (például viszonteladók) nagyméretű készleteit korlátozhatja.Let's take a look at three examples to help you limit large sets of available items, like resellers. Ezek a következők:They are:

Ebben a példában a jelentésfelhasználó öt jelentésparaméterrel dolgozik.In this example, the report user interacts with five report parameters. A country-region (ország/régió), a state-province (állam/tartomány), city (város) és a postal code (irányítószám) paramétert kell kiválasztania.They must select country-region, state-province, city, and then postal code. Az utolsó paraméter felsorolja az adott földrajzi helyen található viszonteladókat.A final parameter then lists resellers that reside in that geographic location.

Többoldalas Power BI-jelentés paramétereinek kapcsolódó oszlopok alapján végzett szűrést bemutató képernyőképe.

Így állíthat be egymásra épülő paramétereket:Here's how you can develop the cascading parameters:

  1. Hozza létre a megfelelő sorrendben az öt jelentésparamétert.Create the five report parameters, ordered in the correct sequence.

  2. Az alábbi lekérdezési utasítással hozza létre a CountryRegion adatkészletet, amely a country-region értékeket kéri le:Create the CountryRegion dataset that retrieves distinct country-region values, using the following query statement:

    SELECT DISTINCT
      [Country-Region]
    FROM
      [Reseller]
    ORDER BY
      [Country-Region]
    
  3. Az alábbi lekérdezési utasítással hozza létre a StateProvince adatkészletet, amely a kiválasztott country-region state-province értékeit kéri le:Create the StateProvince dataset that retrieves distinct state-province values for the selected country-region, using the following query statement:

    SELECT DISTINCT
      [State-Province]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
    ORDER BY
      [State-Province]
    
  4. Az alábbi lekérdezési utasítással hozza létre a City adatkészletet, amely a kiválasztott country-region és state-province city értékeit kéri le:Create the City dataset that retrieves distinct city values for the selected country-region and state-province, using the following query statement:

    SELECT DISTINCT
      [City]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
    ORDER BY
      [City]
    
  5. Használja ezt a mintát a PostalCode adatkészlet létrehozásához is.Continue this pattern to create the PostalCode dataset.

  6. Az alábbi lekérdezési utasítással hozza létre a Reseller adatkészletet, amely lekéri a kiválasztott földrajzi értékek összes viszonteladóját:Create the Reseller dataset to retrieve all resellers for the selected geographic values, using the following query statement:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
      AND [City] = @City
      AND [PostalCode] = @PostalCode
    ORDER BY
      [ResellerName]
    
  7. Az elsőt kivéve minden adatkészlethez képezze le a lekérdezési paramétereket a megfelelő jelentésparaméterekhez.For each dataset except the first, map the query parameters to the corresponding report parameters.

Megjegyzés

A példákban látható összes lekérdezési paraméter (amely előtt a @ jel található) beágyazható SELECT utasításokba, vagy továbbküldhető tárolt eljárásokhoz.All query parameters (prefixed with the @ symbol) shown in these examples could be embedded within SELECT statements, or passed to stored procedures.

A tárolt eljárások általában jobb tervezési módszerként szolgálnak.Generally, stored procedures are a better design approach. Ez azért van, mert a lekérdezési terveik gyorsítótárazva vannak a gyorsabb végrehajtás érdekében, Ön így kifinomultabb logikát alkalmazhat, amikor szüksége van rá.It's because their query plans are cached for quicker execution, and they allow you develop more sophisticated logic, when needed. Ezek azonban jelenleg nem támogatottak átjárók relációs adatforrásaihoz, azaz az SQL Serverhez, az Oracle-höz és a Teradatához.However, they aren't currently supported for gateway relational data sources, which means SQL Server, Oracle, and Teradata.

Végül pedig minden győződjön meg arról, hogy léteznek megfelelő indexek az elegendő mértékű adatlekérés támogatásához.Lastly, you should always ensure suitable indexes exist to support efficient data retrieval. Ellenkező esetben a jelentés paramétereinek feltöltése lassú lehet, az adatbázis pedig túlterheltté válhat.Otherwise, your report parameters could be slow to populate, and the database could become overburdened. További információ az SQL Server indexeléséről: SQL Server indexelési architektúra és tervezési útmutató.For more information about SQL Server indexing, see SQL Server Index Architecture and Design Guide.

Szűrés csoportosítási oszlop alapjánFilter by a grouping column

Ebben a példában a jelentésfelhasználó egy jelentésparaméterrel választja ki a viszonteladó első betűjét.In this example, the report user interacts with a report parameter to select the first letter of the reseller. A második paraméter ezután listázza azon viszonteladókat, amelyek neve a választott betűvel kezdődik.A second parameter then lists resellers when the name commences with the selected letter.

Többoldalas Power BI-jelentés paramétereinek csoportosítási oszlop alapján végzett szűrést bemutató képernyőképe.

Így állíthat be egymásra épülő paramétereket:Here's how you can develop the cascading parameters:

  1. Hozza létre a ReportGroup és a Reseller jelentésparamétereket a megfelelő sorrendben rendezve.Create the ReportGroup and Reseller report parameters, ordered in the correct sequence.

  2. Az alábbi lekérdezési utasítással hozza létre a ReportGroup adatkészletet az összes viszonteladó által használt első betű lekéréséhez:Create the ReportGroup dataset to retrieve the first letters used by all resellers, using the following query statement:

    SELECT DISTINCT
      LEFT([ResellerName], 1) AS [ReportGroup]
    FROM
      [Reseller]
    ORDER BY
      [ReportGroup]
    
  3. Az alábbi lekérdezési utasítással hozza létre a Reseller adatkészletet a kiválasztott betűvel kezdődő összes viszonteladó lekéréséhez:Create the Reseller dataset to retrieve all resellers that commence with the selected letter, using the following query statement:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      LEFT([ResellerName], 1) = @ReportGroup
    ORDER BY
      [ResellerName]
    
  4. Képezze le a Reseller adatkészlet lekérdezésparaméterét a megfelelő jelentésparaméterre.Map the query parameter of the Reseller dataset to the corresponding report parameter.

Hatékonyabb módszer a csoportosítási oszlop a Reseller táblához való hozzáadása.It's more efficient to add the grouping column to the Reseller table. Megőrizve és a megfelelő indexekkel ellátva ez a legjobb eredmény szolgáltatja.When persisted and indexed, it delivers the best result. További információ: Számított oszlopok megadása egy oszlopban.For more information, see Specify Computed Columns in a Table.

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

Ez a technika még ennél is nagyobb potenciállal rendelkezik.This technique can deliver even greater potential. Tekintse meg a következő szkriptet, amely egy új csoportosítási oszlopot vesz fel a viszonteladók előre definiált betűszalagokkal való szűréséhez.Consider the following script that adds a new grouping column to filter resellers by pre-defined bands of letters. Emellett létrehoz egy indexet, amely hatékonyan lekéri a jelentésparaméterekhez szükséges adatokat.It also creates an index to efficiently retrieve the data required by the report parameters.

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

Szűrés keresési minta alapjánFilter by search pattern

Ebben a példában a jelentésfelhasználó egy jelentésparaméterrel ad meg egy keresési mintát.In this example, the report user interacts with a report parameter to enter a search pattern. A második paraméter ezután listázza azon viszonteladókat, amelyek neve tartalmazza a mintát.A second parameter then lists resellers when the name contains the pattern.

Többoldalas Power BI-jelentés paramétereinek keresési mintázat alapján végzett szűrést bemutató képernyőképe.

Így állíthat be egymásra épülő paramétereket:Here's how you can develop the cascading parameters:

  1. Hozza létre a Search és a Reseller jelentésparamétereket a megfelelő sorrendben rendezve.Create the Search and Reseller report parameters, ordered in the correct sequence.

  2. Az alábbi lekérdezési utasítással hozza létre a Reseller adatkészletet a keresési szöveget tartalmazó összes viszonteladó lekéréséhez:Create the Reseller dataset to retrieve all resellers that contain the search text, using the following query statement:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [ResellerName] LIKE '%' + @Search + '%'
    ORDER BY
      [ResellerName]
    
  3. Képezze le a Reseller adatkészlet lekérdezésparaméterét a megfelelő jelentésparaméterre.Map the query parameter of the Reseller dataset to the corresponding report parameter.

Tipp

A terv továbbfejlesztésével részletesebb vezérlést adhat a jelentésfelhasználóknak.You can improve upon this design to provide more control for your report users. Így ők saját mintaegyezési értéket adhatnak meg.It lets them define their own pattern matching value. A „red%” keresési érték például azon viszonteladókra szűr, amelyek neve a „red” karakterekkel kezdődik.For example, the search value "red%" will filter to resellers with names that commence with the characters "red".

További információ: LIKE (Transact-SQL).For more information, see LIKE (Transact-SQL).

Az alábbi módon engedélyezheti a jelentés felhasználóinak, hogy saját mintát definiáljanak.Here's how you can let the report users define their own pattern.

WHERE
  [ResellerName] LIKE @Search

Számos felhasználó, aki kevésbé jártas az adatbázisokban, nem ismeri a százalékjel (%) helyettesítőkaraktert.Many non-database professionals, however, don't know about the percentage (%) wildcard character. Azonban a csillag (*) karaktert igen.Instead, they're familiar with the asterisk (*) character. A WHERE záradék módosításával használhatják ezt a karaktert is.By modifying the WHERE clause, you can let them use this character.

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

Releváns elemek megjelenítésePresent relevant items

Ebben a forgatókönyvben tényadatokkal korlátozhatja az elérhető értékeket.In this scenario, you can use fact data to limit available values. A jelentés felhasználói rögzített tevékenységekkel rendelkező elemek közül választhatnak.Report users will be presented with items where activity has been recorded.

Ebben a példában a jelentésfelhasználó három jelentésparaméterrel dolgozik.In this example, the report user interacts with three report parameter. Az első kettő az értékesítési rendelések dátumainak tartományát adja meg.The first two set a date range of sales order dates. A harmadik paraméter ezután felsorolja azokat a viszonteladókat, amelyekhez az adott időszakban létrejöttek megrendelések.The third parameter then lists resellers where orders have been created during that time period.

Többoldalas Power BI-jelentés paramétereinek három jelentésparamétert bemutató képernyőképe: Start Order Date (Rendelési dátum kezdete), End Order Date (Rendelési dátum vége), és Reseller.

Így állíthat be egymásra épülő paramétereket:Here's how you can develop the cascading parameters:

  1. Hozza létre az OrderDateStart, az OrderDateEnd és a Reseller jelentésparamétereket a megfelelő sorrendben rendezve.Create the OrderDateStart, OrderDateEnd, and Reseller report parameters, ordered in the correct sequence.

  2. Az alábbi lekérdezési utasítással hozza létre a Reseller adatkészletet a dátumtartományban rendeléseket létrehozó összes viszonteladó lekéréséhez:Create the Reseller dataset to retrieve all resellers that created orders in the date period, using the following query statement:

    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]
    

JavaslatokRecommendations

Amikor csak lehetséges, a jelentéseket javasolt egymásra épülő paraméterekkel megtervezni.We recommend you design your reports with cascading parameters, whenever possible. Ezek a paraméterek:It's because they:

  • Intuitív és segítőkész élményt nyújtanak a jelentésfelhasználóknakProvide intuitive and helpful experiences for your report users
  • Hatékonyak, mivel az elérhető értékekből kisebb készleteket eredményeznekAre efficient, because they retrieve smaller sets of available values

A következő lépésekkel optimalizálja az adatforrásokat:Be sure to optimize your data sources by:

  • Tárolt eljárások használata minden lehetséges esetbenUsing stored procedures, whenever possible
  • Megfelelő indexek hozzáadása a hatékony adatlekérés érdekébenAdding appropriate indexes for efficient data retrieval
  • Oszlopértékek (és sorok) materializálása a költséges lekérdezésbeli értékelések elkerülése érdekébenMaterializing column values—and even rows—to avoid expensive query-time evaluations

Következő lépésekNext steps

Ezzel a cikkel kapcsolatosan a következő forrásanyagokban talál további információt:For more information related to this article, check out the following resources: