Veiledning for toveis relasjoner

Denne artikkelen er rettet mot deg som datamodellerer som arbeider med Power BI Desktop. Den gir deg veiledning om når du skal opprette toveis modellrelasjoner. En toveis relasjon er en relasjon som filtreres i begge retninger.

Merk

En innføring i modellrelasjoner dekkes ikke i denne artikkelen. Hvis du ikke er helt kjent med relasjoner, egenskaper eller hvordan du konfigurerer dem, anbefaler vi at du først leser modellrelasjonene i Power BI Desktop-artikkelen .

Det er også viktig at du har en forståelse av utforming av stjerneskjema. Hvis du vil ha mer informasjon, kan du se Forstå stjerneskjema og viktigheten for Power BI.

Generelt anbefaler vi at du minimerer bruken av toveisrelasjoner. De kan påvirke ytelsen til modellspørringen negativt, og muligens levere forvirrende opplevelser for rapportbrukerne.

Det finnes tre scenarioer når toveis filtrering kan løse spesifikke krav:

Spesielle modellrelasjoner

Toveisrelasjoner spiller en viktig rolle når du oppretter følgende to spesielle modellrelasjonstyper:

  • Én-til-én: Alle én-til-én-relasjoner må være toveis – det er ikke mulig å konfigurere ellers. Vanligvis anbefaler vi ikke å opprette disse typene relasjoner. Hvis du vil ha en fullstendig diskusjon og alternative utforminger, kan du se Veiledning for én-til-én-relasjon.
  • Mange-til-mange: Når det gjelder to dimensjonstypetabeller, kreves en brotabell. Det kreves et toveis filter for å sikre at filtre overføres over brotabellen. Hvis du vil ha mer informasjon, kan du se Veiledning for mange-til-mange-relasjoner (relatere mange-til-mange-dimensjoner).

Slicerelementer «med data»

Toveisrelasjoner kan levere slicere som begrenser elementer til hvor dataene finnes. (Hvis du er kjent med Excel-pivottabeller og slicere, er det standard virkemåte når du henter data fra en Semantisk Power BI-modell (tidligere kalt et datasett) eller en Analysis Services-modell.) Hvis du vil forklare hva det betyr, må du først vurdere følgende modelldiagram.

Diagram showing a model containing three tables. The design is described in the following paragraph.

Den første tabellen heter Kunde, og den inneholder tre kolonner: Land-område, Kunde og Kundekode. Den andre tabellen heter Produkt, og den inneholder tre kolonner: Farge, Produkt og SKU. Den tredje tabellen heter Salg, og den inneholder fire kolonner: CustomerCode, OrderDate, Quantity og SKU. Tabellene Kunde og Produkt er dimensjonstypetabeller, og hver av dem har en én-til-mange-relasjon til Salg-tabellen. Hver relasjon filtreres i én retning.

For å beskrive hvordan toveis filtrering fungerer, har modelldiagrammet blitt endret for å vise tabellradene. Alle eksempler i denne artikkelen er basert på disse dataene.

Merk

Det er ikke mulig å vise tabellrader i modelldiagrammet for Power BI Desktop. Det gjøres i denne artikkelen for å støtte diskusjonen med klare eksempler.

Diagram showing that the model now reveals the table rows. The row details are described in the following paragraph.

Raddetaljene for de tre tabellene er beskrevet i følgende punktliste:

  • Kundetabellen har to rader:
    • CustomerCode CUST-01, Customer Customer-1, Country-Region USA
    • CustomerCode CUST-02, Customer Customer-2, Country-Region Australia
  • Produkttabellen har tre rader:
    • SKU CL-01, Produkt T-skjorte, Farge grønn
    • SKU CL-02, Produkt Jeans, Farge Blå
    • SKU AC-01, Produktlue, Fargeblå
  • Salg-tabellen har tre rader:
    • Ordredato 1. januar 2019, CustomerCode CUST-01, SKU CL-01, Quantity 10
    • Ordredato 2. februar 2019, CustomerCode CUST-01, SKU CL-02, Quantity 20
    • Ordredato 3. mars 2019, CustomerCode CUST-02, SKU CL-01, Quantity 30

Vurder nå følgende rapportside.

Diagram showing the report page containing three visuals. The details are described in the following paragraph.

Siden består av to slicere og et kortvisualobjekt. Den første sliceren er for Land-område, og den har to elementer: Australia og USA. Det er for tiden skiver av Australia. Den andre sliceren er for Produkt, og den har tre elementer: Lue, Jeans og T-skjorte. Ingen elementer er valgt (det vil si at ingen produkter filtreres). Kortvisualobjektet viser et antall på 30.

Når rapportbrukere deler opp etter Australia, vil du kanskje begrense produktsliceren til å vise elementer der data er relatert til australske salg. Det er det som er ment ved å vise slicerelementer «med data». Du kan oppnå denne virkemåten ved å konfigurere relasjonen mellom tabellen Produkt og Salg til å filtrere i begge retninger.

Diagram showing a model that the relationship between the Product and Sales table is now bi-directional.

Produktsliceren viser nå ett enkelt element: T-skjorte. Dette elementet representerer det eneste produktet som selges til australske kunder.

Diagram showing the report page containing three visuals with Product called out. The details are described in the following paragraph.

Vi foreslår først at du vurderer nøye om denne utformingen fungerer for rapportbrukerne. Noen rapportbrukere synes opplevelsen er forvirrende. De forstår ikke hvorfor slicerelementer vises dynamisk eller forsvinner når de samhandler med andre slicere.

Hvis du bestemmer deg for å vise slicerelementer «med data», anbefaler vi ikke at du konfigurerer toveisrelasjoner. Toveisrelasjoner krever mer behandling, slik at de kan påvirke spørringsytelsen negativt, spesielt ettersom antall toveisrelasjoner i modellen øker.

Det finnes en bedre måte å oppnå det samme resultatet på: I stedet for å bruke toveisfiltre, kan du bruke et filter på visuelt nivå på selve produktsliceren.

La oss nå vurdere at relasjonen mellom produkt- og salgstabellenikke lenger filtreres i begge retninger. Følgende måldefinisjon er lagt til i Salg-tabellen.

Total Quantity = SUM(Sales[Quantity])

Hvis du vil vise produktslicerelementene "med data", må det ganske enkelt filtreres etter totalantallmålet ved hjelp av betingelsen "er ikke tom".

Diagram showing that the Filters pane for the Product slicer now filters by

Analyse av dimensjon til dimensjon

Et annet scenario som involverer toveisrelasjoner, behandler en faktatypetabell som en brotabell. På denne måten støtter den analyse av tabelldata av dimensjonstype i filterkonteksten til en annen dimensjonstypetabell.

Bruk eksempelmodellen i denne artikkelen til å vurdere hvordan følgende spørsmål kan besvares:

  • Hvor mange farger ble solgt til australske kunder?
  • Hvor mange land/regioner kjøpte jeans?

Begge spørsmålene kan besvares uten å oppsummere data i faktatypetabellen. De krever imidlertid at filtre overføres fra én dimensjonstypetabell til den andre. Når filtrene overføres via faktatypetabellen, kan oppsummering av dimensjonstypetabellkolonner oppnås ved hjelp av DISTINCTCOUNT DAX-funksjonen , og muligens MIN - og MAX DAX-funksjonene.

Etter hvert som faktatypetabellen fungerer som en brotabell, kan du følge veiledningen for mange-til-mange-relasjoner for å relatere to dimensjonstypetabeller. Det krever at du konfigurerer minst én relasjon for å filtrere i begge retninger. Hvis du vil ha mer informasjon, kan du se Veiledning for mange-til-mange-relasjoner (relatere mange-til-mange-dimensjoner).

Men, som allerede beskrevet i denne artikkelen, vil denne utformingen sannsynligvis resultere i en negativ innvirkning på ytelsen, og brukeren opplever konsekvenser relatert til slicerelementer "med data". Vi anbefaler derfor at du aktiverer toveis filtrering i en måldefinisjon ved hjelp av CROSSFILTER DAX-funksjonen i stedet. CROSSFILTER-funksjonen kan brukes til å endre filterretninger – eller til og med deaktivere relasjonen – under evalueringen av et uttrykk.

Vurder følgende måldefinisjon lagt til i Salg-tabellen. I dette eksemplet er modellrelasjonen mellom tabellene Kunde og Salg konfigurert til å filtrere i én retning.

Different Countries Sold =
CALCULATE(
    DISTINCTCOUNT(Customer[Country-Region]),
    CROSSFILTER(
        Customer[CustomerCode],
        Sales[CustomerCode],
        BOTH
    )
)

Under evalueringen av måluttrykket For solgte land filtreres relasjonen mellom tabellene Kunde og Salg i begge retninger.

Følgende tabellvisualobjekt presenterer statistikk for hvert solgte produkt. Antall-kolonnen er ganske enkelt summen av antallverdier. Kolonnen Solgte forskjellige land representerer det distinkte antallet landområdeverdier for alle kunder som har kjøpt produktet.

Diagram showing that two products are listed in a table visual. In the

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