Del via


Bruke gjennomgripende parametere i paginerte rapporter

Denne artikkelen er rettet mot deg som rapportforfatter som utformer paginerte rapporter i Power BI. Den inneholder scenarioer for utforming av gjennomgripende parametere. Gjennomgripende parametere er rapportparametere med avhengigheter. Når en rapportbruker velger en parameterverdi (eller verdier), brukes den til å angi tilgjengelige verdier for en annen parameter.

Merk

En innføring i gjennomgripende parametere og hvordan du konfigurerer dem, dekkes ikke i denne artikkelen. Hvis du ikke er helt kjent med gjennomgripende parametere, anbefaler vi at du først leser Legg til gjennomgripende parametere i en rapport i Power BI Report Builder.

Utformingsscenarioer

Det finnes to utformingsscenarioer for bruk av gjennomgripende parametere. De kan brukes effektivt til å:

  • Filtrere store sett med elementer
  • Presentere relevante elementer

Eksempeldatabase

Eksemplene som presenteres i denne artikkelen, er basert på en Azure SQL Database. Databasen registrerer salgsoperasjoner, og inneholder ulike tabeller som lagrer forhandlere, produkter og salgsordrer.

En tabell kalt Forhandler lagrer én post for hver forhandler, og den inneholder mange tusen poster. Forhandlertabellen har disse kolonnene:

  • Forhandlerkode (heltall)
  • ResellerName
  • Country-Region
  • State-Province
  • By
  • PostalCode

Det finnes også en tabell med navnet Salg. Den lagrer salgsordreposter og har en sekundærnøkkelrelasjon til Forhandler-tabellen i kolonnen ResellerCode .

Eksempelkrav

Det er et krav om å utvikle en forhandlerprofilrapport. Rapporten må være utformet for å vise informasjon for én enkelt forhandler. Det er ikke riktig at rapportbrukeren skriver inn en forhandlerkode, da de sjelden husker dem.

Filtrere store sett med elementer

La oss ta en titt på tre eksempler for å hjelpe deg med å begrense store sett med tilgjengelige elementer, for eksempel forhandlere. Disse er:

I dette eksemplet samhandler rapportbrukeren med fem rapportparametere. De må velge landområde, delstat-område, poststed og deretter postnummer. En endelig parameter viser deretter forhandlere som befinner seg på den geografiske plasseringen.

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

Slik kan du utvikle gjennomgripende parametere:

  1. Opprett de fem rapportparameterne, sortert i riktig rekkefølge.

  2. Opprett CountryRegion-datasettet som henter distinkte landområdeverdier, ved hjelp av følgende spørringssetning:

    SELECT DISTINCT
      [Country-Region]
    FROM
      [Reseller]
    ORDER BY
      [Country-Region]
    
  3. Opprett StateProvince-datasettet som henter distinkte verdier for delstatsprovinsen for det valgte landområdet, ved hjelp av følgende spørringssetning:

    SELECT DISTINCT
      [State-Province]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
    ORDER BY
      [State-Province]
    
  4. Opprett city-datasettet som henter distinkte byverdier for det valgte landområdet og delstat-området, ved hjelp av følgende spørringssetning:

    SELECT DISTINCT
      [City]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
    ORDER BY
      [City]
    
  5. Fortsett dette mønsteret for å opprette Postnummer-datasettet .

  6. Opprett forhandlerdatasettet for å hente alle forhandlere for de valgte geografiske verdiene ved hjelp av følgende spørringssetning:

    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 datasett unntatt det første tilordner du spørringsparameterne til de tilsvarende rapportparameterne.

Merk

Alle spørringsparametere (prefikset med @-symbolet) som vises i disse eksemplene, kan bygges inn i SELECT-setninger eller sendes til lagrede prosedyrer.

Vanligvis er lagrede prosedyrer en bedre utformingstilnærming. Det er fordi spørringsplanene deres bufres for raskere kjøring, og de lar deg utvikle mer sofistikert logikk ved behov. De støttes imidlertid ikke for gateway-relasjonelle datakilder, som betyr SQL Server, Oracle og Teradata.

Til slutt bør du alltid sørge for at det finnes egnede indekser for å støtte effektiv datahenting. Ellers kan rapportparameterne være trege å fylle ut, og databasen kan bli overbelastet. Hvis du vil ha mer informasjon om SQL Server-indeksering, kan du se SQL Server Index Architecture and Design Guide.

Filtrer etter en grupperingskolonne

I dette eksemplet samhandler rapportbrukeren med en rapportparameter for å velge den første bokstaven i forhandleren. En annen parameter viser deretter forhandlere når navnet begynner med den valgte bokstaven.

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

Slik kan du utvikle gjennomgripende parametere:

  1. Opprett rapportparameterne ReportGroup og Reseller, sortert i riktig rekkefølge.

  2. Opprett ReportGroup-datasettet for å hente de første bokstavene som brukes av alle forhandlere, ved hjelp av følgende spørringssetning:

    SELECT DISTINCT
      LEFT([ResellerName], 1) AS [ReportGroup]
    FROM
      [Reseller]
    ORDER BY
      [ReportGroup]
    
  3. Opprett forhandlerdatasettet for å hente alle forhandlere som starter med den valgte bokstaven, ved hjelp av følgende spørringssetning:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      LEFT([ResellerName], 1) = @ReportGroup
    ORDER BY
      [ResellerName]
    
  4. Tilordne spørringsparameteren for forhandlerdatasettet til den tilsvarende rapportparameteren.

Det er mer effektivt å legge til grupperingskolonnen i Forhandler-tabellen . Når den beholdes og indekseres, gir den det beste resultatet. Hvis du vil ha mer informasjon, kan du se Angi beregnede kolonner i en tabell.

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

Denne teknikken kan gi enda større potensial. Vurder følgende skript som legger til en ny grupperingskolonne for å filtrere forhandlere etter forhåndsdefinerte bokstaver. Det oppretter også en indeks for effektivt å hente dataene som kreves av rapportparameterne.

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 etter søkemønster

I dette eksemplet samhandler rapportbrukeren med en rapportparameter for å angi et søkemønster. En annen parameter viser deretter forhandlere når navnet inneholder mønsteret.

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

Slik kan du utvikle gjennomgripende parametere:

  1. Opprett parameterne for rapport for søk og forhandler, sortert i riktig rekkefølge.

  2. Opprett forhandlerdatasettet for å hente alle forhandlere som inneholder søketeksten, ved hjelp av følgende spørringssetning:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [ResellerName] LIKE '%' + @Search + '%'
    ORDER BY
      [ResellerName]
    
  3. Tilordne spørringsparameteren for forhandlerdatasettet til den tilsvarende rapportparameteren.

Tips

Du kan forbedre denne utformingen for å gi mer kontroll for rapportbrukerne. Den lar dem definere sin egen mønstersamsvarsverdi. Søkeverdien "rød%" filtreres for eksempel til forhandlere med navn som begynner med tegnene "rød".

Hvis du vil ha mer informasjon, kan du se LIKE (Transact-SQL).

Slik kan du la rapportbrukerne definere sitt eget mønster.

WHERE
  [ResellerName] LIKE @Search

Mange ikke-databaseteknikere vet imidlertid ikke om jokertegnet prosent (%). I stedet er de kjent med stjernetegnet (*). Ved å endre WHERE-setningsdelen kan du la dem bruke dette tegnet.

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

Presentere relevante elementer

I dette scenarioet kan du bruke faktadata til å begrense tilgjengelige verdier. Rapportbrukere presenteres med elementer der aktiviteten er registrert.

I dette eksemplet samhandler rapportbrukeren med tre rapportparametere. De to første angir et datointervall med salgsordredatoer. Den tredje parameteren viser deretter forhandlere der ordrer er opprettet i denne tidsperioden.

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

Slik kan du utvikle gjennomgripende parametere:

  1. Opprett rapportparameterne OrderDateStart, OrderDateEnd og Reseller, sortert i riktig rekkefølge.

  2. Opprett forhandlerdatasettet for å hente alle forhandlere som opprettet ordrer i datoperioden, ved hjelp av følgende spørringssetning:

    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 utformer rapportene med gjennomgripende parametere når det er mulig. Det er fordi de:

  • Gi intuitive og nyttige opplevelser for rapportbrukerne
  • Er effektive fordi de henter mindre sett med tilgjengelige verdier

Pass på å optimalisere datakildene ved å:

  • Bruke lagrede prosedyrer når det er mulig
  • Legge til riktige indekser for effektiv datahenting
  • Materialisere kolonneverdier – og til og med rader – for å unngå dyre evalueringer av spørringstid

Hvis du vil ha mer informasjon om denne artikkelen, kan du se følgende ressurser: