Del via


Bruke gjennomgripende parametere i paginerte rapporter

Denne artikkelen er rettet mot deg som rapportforfatter som utformer Power BI paginerte rapporter. 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.

Notat

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 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 med navnet Reseller lagrer én post for hver forhandler, og den inneholder mange tusen poster. Tabellen Reseller har disse kolonnene:

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

Det finnes også en tabell med navnet Sales. Den lagrer salgsordreposter og har en sekundærnøkkelrelasjon til Reseller-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. De 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.

Skjermbilde av sideformaterte rapportparametere i Power BI som viser filtrering etter relaterte kolonner.

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- datasett som henter distinkte verdier for delstat-området 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 datasettet By 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 datasettet PostalCode.

  6. Opprett forhandler datasett 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.

Notat

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.

Skjermbilde av sideformaterte rapportparametere i Power BI som viser filtrering etter en grupperingskolonne.

Slik kan du utvikle gjennomgripende parametere:

  1. Opprett ReportGroup- og forhandler rapportparametere, 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 datasettet forhandler for å hente alle forhandlere som begynner 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 forhandler datasettet til den tilsvarende rapportparameteren.

Det er mer effektivt å legge til grupperingskolonnen i Reseller 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.

Skjermbilde av sideformaterte rapportparametere i Power BI som viser filter etter søkemønster.

Slik kan du utvikle gjennomgripende parametere:

  1. Opprett Search og Reseller rapportparametere, sortert i riktig rekkefølge.

  2. Opprett forhandler datasett 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 forhandler datasettet 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 starte 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.

Skjermbilde av sideformaterte rapportparametere i Power BI som viser tre rapportparametere: Start ordredato, sluttordredato og forhandler.

Slik kan du utvikle gjennomgripende parametere:

  1. Opprett OrderDateStart-, OrderDateEndog Reseller rapportparametere, sortert i riktig rekkefølge.

  2. Opprett datasettet forhandler 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: