Brug overlappende parametre i sideinddelte rapporter

Denne artikel henvender sig til dig som rapportforfatter, der designer sideinddelte Power BI-rapporter. Den indeholder scenarier til design af overlappende parametre. Overlappende parametre er rapportparametre med afhængigheder. Når en rapportbruger vælger en parameterværdi (eller værdier), bruges den til at angive tilgængelige værdier for en anden parameter.

Bemærk

En introduktion til overlappende parametre, og hvordan du konfigurerer dem, er ikke beskrevet i denne artikel. Hvis du ikke er helt fortrolig med overlappende parametre, anbefaler vi, at du først læser Føj overlappende parametre til en rapport i Power BI Report Builder.

Designscenarier

Der er to designscenarier til brug af overlappende parametre. De kan effektivt bruges til at:

  • Filtrer store sæt elementer
  • Præsenter relevante elementer

Eksempeldatabase

De eksempler, der præsenteres i denne artikel, er baseret på en Azure SQL Database. Databasen registrerer salgshandlinger og indeholder forskellige tabeller, der lagrer forhandlere, produkter og salgsordrer.

En tabel med navnet Reseller gemmer én post for hver forhandler og indeholder mange tusinde poster. Tabellen Reseller indeholder følgende kolonner:

  • ResellerCode (heltal)
  • ResellerName
  • Country-Region
  • State-Province
  • By
  • PostalCode

Der er også en tabel med navnet Sales. Den gemmer salgsordreposter og har en fremmed nøglerelation til tabellen Reseller i kolonnen ResellerCode.

Eksempel på krav

Der er et krav om at udvikle en forhandlerprofilrapport. Rapporten skal være designet til at vise oplysninger for en enkelt forhandler. Det er ikke hensigtsmæssigt at få rapportbrugeren til at angive en forhandlerkode, da de sjældent husker dem.

Filtrer store sæt elementer

Lad os se på tre eksempler, der kan hjælpe dig med at begrænse store sæt tilgængelige elementer, f.eks. forhandlere. Det drejer sig om:

I dette eksempel interagerer rapportbrugeren med fem rapportparametre. De skal vælge land-område, delstatsprovins, by og derefter postnummer. En endelig parameter viser derefter forhandlere, der er placeret på den pågældende geografiske placering.

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

Sådan kan du udvikle de overlappende parametre:

  1. Opret de fem rapportparametre sorteret i den korrekte rækkefølge.

  2. Opret datasættet CountryRegion, der henter entydige værdier for land/område, ved hjælp af følgende forespørgselssætning:

    SELECT DISTINCT
      [Country-Region]
    FROM
      [Reseller]
    ORDER BY
      [Country-Region]
    
  3. Opret datasættet StateProvince , der henter entydige værdier for delstat/område for det valgte land/område, ved hjælp af følgende forespørgselssætning:

    SELECT DISTINCT
      [State-Province]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
    ORDER BY
      [State-Province]
    
  4. Opret datasættet City, der henter entydige byværdier for det valgte land/område og stat-område, ved hjælp af følgende forespørgselssætning:

    SELECT DISTINCT
      [City]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
    ORDER BY
      [City]
    
  5. Fortsæt dette mønster for at oprette datasættet PostalCode .

  6. Opret datasættet Reseller for at hente alle forhandlere for de valgte geografiske værdier ved hjælp af følgende forespørgselssætning:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
      AND [City] = @City
      AND [PostalCode] = @PostalCode
    ORDER BY
      [ResellerName]
    
  7. For hvert datasæt undtagen det første skal du knytte forespørgselsparametrene til de tilsvarende rapportparametre.

Bemærk

Alle forespørgselsparametre (præfikset med symbolet @), der vises i disse eksempler, kan integreres i SELECT-sætninger eller overføres til lagrede procedurer.

Lagrede procedurer er generelt en bedre designtilgang. Det skyldes, at deres forespørgselsplaner cachelagres til hurtigere udførelse, og de giver dig mulighed for at udvikle mere avanceret logik, når det er nødvendigt. De understøttes dog ikke i øjeblikket for relationelle datakilder for gatewayen, hvilket betyder SQL Server, Oracle og Teradata.

Endelig skal du altid sikre, at der findes passende indekser til at understøtte effektiv datahentning. Ellers kan rapportparametrene være langsomme at udfylde, og databasen kan blive overbelastet. Du kan få flere oplysninger om SQL Server-indeksering i SQL Server-indeksarkitektur og designvejledning.

Filtrer efter en grupperingskolonne

I dette eksempel interagerer rapportbrugeren med en rapportparameter for at vælge det første bogstav i forhandleren. En anden parameter viser derefter forhandlere, når navnet begynder med det valgte bogstav.

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

Sådan kan du udvikle de overlappende parametre:

  1. Opret rapportparametrene ReportGroup og Reseller i den korrekte rækkefølge.

  2. Opret Datasættet ReportGroup for at hente de første bogstaver, der bruges af alle forhandlere, ved hjælp af følgende forespørgselssætning:

    SELECT DISTINCT
      LEFT([ResellerName], 1) AS [ReportGroup]
    FROM
      [Reseller]
    ORDER BY
      [ReportGroup]
    
  3. Opret datasættet Reseller for at hente alle forhandlere, der begynder med det valgte bogstav, ved hjælp af følgende forespørgselssætning:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      LEFT([ResellerName], 1) = @ReportGroup
    ORDER BY
      [ResellerName]
    
  4. Knyt forespørgselsparameteren for reseller-datasættet til den tilsvarende rapportparameter.

Det er mere effektivt at føje grupperingskolonnen til tabellen Reseller . Når den bevares og indekseres, giver den det bedste resultat. Du kan få flere oplysninger under Angiv beregnede kolonner i en tabel.

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

Denne teknik kan give endnu større potentiale. Overvej følgende script, der tilføjer en ny grupperingskolonne for at filtrere forhandlere efter foruddefinerede bånd af bogstaver. Der oprettes også et indeks for effektivt at hente de data, der kræves af rapportparametrene.

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

Filtrer efter søgemønster

I dette eksempel interagerer rapportbrugeren med en rapportparameter for at angive et søgemønster. En anden parameter viser derefter forhandlere, når navnet indeholder mønsteret.

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

Sådan kan du udvikle de overlappende parametre:

  1. Opret rapportparametrene Søg og Forhandler sorteret i den korrekte rækkefølge.

  2. Opret datasættet Reseller for at hente alle forhandlere, der indeholder søgeteksten, ved hjælp af følgende forespørgselssætning:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [ResellerName] LIKE '%' + @Search + '%'
    ORDER BY
      [ResellerName]
    
  3. Knyt forespørgselsparameteren for reseller-datasættet til den tilsvarende rapportparameter.

Tip

Du kan forbedre dette design for at give rapportbrugerne mere kontrol. Det giver dem mulighed for at definere deres egen mønstermatchværdi. Søgeværdien "red%" filtrerer f.eks. til forhandlere med navne, der begynder med tegnene "red".

Du kan få flere oplysninger under LIKE (Transact-SQL).

Her kan du se, hvordan du kan lade rapportbrugerne definere deres eget mønster.

WHERE
  [ResellerName] LIKE @Search

Mange fagfolk, der ikke er databasemedarbejdere, kender dog ikke til procent jokertegnet (%). I stedet kender de stjernetegnet (*). Ved at ændre WHERE-delsætningen kan du lade dem bruge dette tegn.

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

Præsenter relevante elementer

I dette scenarie kan du bruge faktadata til at begrænse tilgængelige værdier. Rapportbrugere får vist elementer, hvor aktiviteten er blevet registreret.

I dette eksempel interagerer rapportbrugeren med tre rapportparametre. De første to angiver et datointerval for salgsordredatoer. Den tredje parameter viser derefter forhandlere, hvor der er oprettet ordrer i den pågældende tidsperiode.

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

Sådan kan du udvikle de overlappende parametre:

  1. Opret rapportparametrene OrderDateStart, OrderDateEnd og Reseller sorteret i den korrekte rækkefølge.

  2. Opret datasættet Reseller for at hente alle forhandlere, der har oprettet ordrer i datoperioden, ved hjælp af følgende forespørgselssætning:

    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]
    

Anbefalinger

Vi anbefaler, at du designer dine rapporter med overlappende parametre, når det er muligt. Det er fordi, de:

  • Giv dine rapportbrugere intuitive og nyttige oplevelser
  • Er effektive, fordi de henter mindre sæt tilgængelige værdier

Sørg for at optimere dine datakilder ved at:

  • Brug af lagrede procedurer, når det er muligt
  • Tilføjelse af relevante indeks til effektiv datahentning
  • Materialiserer kolonneværdier – og lige rækker – for at undgå dyre evalueringer af forespørgselstid

Du kan få flere oplysninger, der er relateret til denne artikel, i følgende ressourcer: