Del via


Vejledning til tovejsrelationer

Denne artikel henvender sig til dig som dataudformer, der arbejder med Power BI Desktop. Den giver dig vejledning i, hvornår du skal oprette tovejsmodelrelationer. En tovejsrelation er en, der filtrerer i begge retninger.

Bemærk

En introduktion til modelrelationer er ikke beskrevet i denne artikel. Hvis du ikke er helt fortrolig med relationer, deres egenskaber, eller hvordan du konfigurerer dem, anbefaler vi, at du først læser artiklen Modelrelationer i Power BI Desktop .

Det er også vigtigt, at du har en forståelse af stjerneskemadesign. Du kan få flere oplysninger under Forstå stjerneskemaet og vigtigheden af Power BI.

Generelt anbefaler vi, at du minimerer brugen af tovejsrelationer. Det skyldes, at de kan påvirke ydeevnen af modelforespørgslen negativt og muligvis give dine rapportbrugere forvirrende oplevelser.

Der er dog tre scenarier, hvor tovejsfiltrering kan løse specifikke krav:

Særlige modelrelationer

Tovejsrelationer spiller en vigtig rolle, når du opretter følgende to særlige modelrelationstyper:

  • En til en: Alle en til en-relationer skal være tovejs – ellers er det ikke muligt at konfigurere. Generelt anbefaler vi ikke, at du opretter disse typer relationer. Du kan finde en komplet diskussion og alternative designmønstre under vejledning til en til en-relationer.
  • Mange til mange-: Når du relaterer to dimensionstabeller, kræves der en brotabel. Der kræves et tovejsfilter for at sikre, at filtre overføres på tværs af brotabellen. Du kan finde flere oplysninger under vejledning til mange til mange-relationer .

Indstillinger for udsnit "med data"

Tovejsrelationer kan levere udsnit, der begrænser indstillingerne til det sted, hvor der findes data. Hvis du kender Excel-pivottabeller og -udsnit, er det standardfunktionsmåden, når du henter data fra en semantisk Power BI-model eller en Analysis Services-model. Du kan hjælpe med at forklare, hvad det betyder, ved først at overveje følgende modeldiagram.

Diagram, der viser en model, der indeholder tre tabeller. Designet er beskrevet i følgende afsnit.

Den første tabel kaldes Customer., og den indeholder tre kolonner: Country-Region, Customerog CustomerCode. Den anden tabel hedder Productog indeholder tre kolonner: Color, Productog SKU. Den tredje tabel hedder Salesog indeholder fire kolonner: CustomerCode, OrderDate, Quantityog SKU. Tabellerne Customer og Product er dimensionstabeller, og de har hver især en en til mange-relation til den Sales tabel. Hver relation filtrerer i en enkelt retning.

Modeldiagrammet er blevet ændret for at hjælpe med at beskrive, hvordan tovejsfiltrering fungerer, så tabelrækkerne vises. Alle eksempler i denne artikel er baseret på disse data.

Diagram, der viser, at modellen nu viser tabelrækkerne. Rækkedetaljerne er beskrevet i følgende afsnit.

Rækkedetaljerne for de tre tabeller er beskrevet på følgende punktopstilling:

  • Tabellen Customer indeholder to rækker:
    • CustomerCode CUST-01, CustomerCustomer-1Country-RegionUnited States
    • CustomerCode CUST-02CustomerCustomer-2Country-RegionAustralia
  • Tabellen Product indeholder tre rækker:
    • SKU CL-01Productt-shirtColorGreen
    • SKU CL-02, ProductJeansColorBlue
    • SKU AC-01, ProductHatColorBlå
  • Tabellen Sales indeholder tre rækker:
    • OrderDate . januar 2019CustomerCodeCUST-01SKUCL-01Quantity10
    • OrderDate . februar 2019CustomerCodeCUST-01SKUCL-02Quantity20
    • OrderDate . marts 2019CustomerCodeCUST-02SKUCL-01Quantity30

Overvej nu følgende rapportside.

Diagram, der viser rapportsiden, der indeholder tre visualiseringer. Oplysningerne er beskrevet i følgende afsnit.

Siden består af to udsnitsværktøjer og en kortvisualisering. Det første udsnit er baseret på feltet Country-Region og har to muligheder: Australien og USA. Det er i øjeblikket udsnit efter Australien. Det andet udsnit er baseret på feltet Product og har tre muligheder: Hat, Jeans og T-shirt. Der er ikke valgt nogen elementer (hvilket betyder, at der ikke er filtreret nogen produkter ). Kortvisualiseringen viser en mængde på 30.

Når rapportbrugere bruger udsnit efter Australien, kan det være en god idé at begrænse produktudsnittet til at vise indstillinger, hvor data relaterer til salg i Australien. Det er det, der menes med at vise udsnitsindstillinger "med data". Du kan opnå denne funktionsmåde ved at angive relationen mellem tabellerne Product og Sales for at filtrere i begge retninger.

diagram, der viser en model, som relationen mellem tabellerne Product og Sales nu er tovejs.

Produktudsnitsværktøjet viser nu en enkelt indstilling: T-shirt. Denne indstilling repræsenterer det eneste produkt, der er solgt til australske kunder.

Diagram, der viser rapportsiden, der indeholder tre visualiseringer, hvor Product er fremhævet. Oplysningerne er beskrevet i følgende afsnit.

Først anbefaler vi, at du nøje overvejer, om dette design fungerer for dine rapportbrugere. Nogle rapportbrugere finder oplevelsen forvirrende, fordi de ikke forstår, hvorfor udsnitsindstillinger vises dynamisk eller forsvinder, når de interagerer med andre udsnit.

Hvis du beslutter dig for at vise udsnitsindstillinger "med data", anbefaler vi ikke, at du konfigurerer en tovejsrelationer. Tovejsrelationer kræver mere behandling, og de kan derfor påvirke forespørgslens ydeevne negativt – især i takt med at antallet af tovejsrelationer i modellen øges.

Der er en bedre måde at opnå det samme resultat på: I stedet for at bruge tovejsfiltre kan du anvende et filter på visualiseringsniveau på selve produktudsnittet.

Lad os nu overveje, at relationen mellem tabellerne Product og Sales ikke længere filtrerer i begge retninger. Og følgende målingsdefinition er føjet til tabellen Sales.

Total Quantity = SUM(Sales[Quantity])

Hvis du vil have vist indstillingerne for produktudsnittet "med data", skal den blot filtreres efter den Total Quantity måling ved hjælp af betingelsen "er ikke tom".

diagram, der viser, at ruden Filtre for udsnittet Produkt nu filtrerer efter Samlet antal, ikke er tom.

Analyse af dimension til dimension

Et andet scenarie, der involverer tovejsrelationer, behandler en faktatabel som en brotabel. På denne måde understøtter den analyse af data i dimensionstabellen i filterkonteksten i en anden dimensionstabel.

Brug eksempelmodellen i denne artikel til at overveje, hvordan følgende spørgsmål kan besvares:

  • Hvor mange farver blev solgt til australske kunder?
  • Hvor mange lande/områder har købt jeans?

Begge spørgsmål kan besvares uden opsummering af data i faktatabellen. De kræver dog, at filtre overføres fra én dimensionstabel til den anden. Når filtre overføres via faktatabellen, kan der opnås opsummering af kolonner i dimensionstabellen ved hjælp af funktionen DISTINCTCOUNT DAX og muligvis MIN og MAX DAX-funktioner.

Når faktatabellen fungerer som en brotabel, kan du anvende vejledningen til mange til mange-relationer for at relatere to dimensionstabeller. Det kræver, at du konfigurerer mindst én relation for at filtrere i begge retninger. Du kan finde flere oplysninger under vejledning til mange til mange-relationer .

Som allerede beskrevet i denne artikel vil dette design sandsynligvis have en negativ indvirkning på ydeevnen, og konsekvenserne for brugeroplevelsen i forbindelse med udsnitsindstillinger "med data". Vi anbefaler derfor, at du aktiverer tovejsfiltrering i en målingsdefinition ved hjælp af DAX-funktionen CROSSFILTER i stedet. Du kan bruge funktionen CROSSFILTER til at ændre filterretninger – eller endda deaktivere relationen – under evalueringen af et udtryk.

Overvej følgende målingsdefinition, der er føjet til tabellen Sales. I dette eksempel er modelrelationen mellem tabellerne Customer og Sales konfigureret til at filtrere i en enkelt retning.

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

Under evalueringen af den Different Countries Sold måling filtreres relationen mellem tabellerne Customer og Sales i begge retninger.

I følgende tabelvisualisering vises statistik for hvert produkt, der sælges. Kolonnen Quantity er blot summen af mængdeværdier. Kolonnen Different Countries Sold repræsenterer det entydige antal værdier for land/område for alle kunder, der har købt produktet.

diagram, der viser, at to produkter er angivet i en tabelvisualisering. I kolonnen Solgte lande er Jeans 1, og T-shirt er 2.

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