Vejledning til tovejsrelationer

Denne artikel henvender sig til dig som datamodel, 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. De kan påvirke ydeevnen af modelforespørgslen negativt og muligvis levere forvirrende oplevelser for dine rapportbrugere.

Der er 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 design under Vejledning til en-til-en-relationer.
  • Mange til mange: Når du relaterer to tabeller af dimensionstypen, 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 i Vejledning til mange til mange-relationer (Relater mange til mange-dimensioner).

Udsnitselementer "med data"

Tovejsrelationer kan levere udsnit, der begrænser elementer 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 (tidligere kaldet et datasæt) eller en Analysis Services-model. Du kan hjælpe med at forklare, hvad det betyder, ved først at overveje følgende modeldiagram.

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

Den første tabel hedder Customer og indeholder tre kolonner: Country-Region, Customer og CustomerCode. Den anden tabel hedder Product og indeholder tre kolonner: Color, Product og SKU. Den tredje tabel hedder Sales og indeholder fire kolonner: CustomerCode, OrderDate, Quantity og SKU. Tabellerne Kunde og Produkt er tabeller af dimensionstypen, og de har hver især en en til mange-relation til tabellen Sales. 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.

Bemærk

Det er ikke muligt at få vist tabelrækker i Power BI Desktop-modeldiagrammet. Det gøres i denne artikel for at understøtte diskussionen med tydelige eksempler.

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

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

  • Tabellen Kunde indeholder to rækker:
    • CustomerCode CUST-01, Customer Customer-1, Country-Region USA
    • CustomerCode CUST-02, Customer Customer-2, Country-Region Australia
  • Tabellen Product indeholder tre rækker:
    • SKU CL-01, Produkt-T-shirt, Farvegrøn
    • SKU CL-02, Produkt jeans, Farve blå
    • SKU AC-01, Produkthat , Farve blå
  • Tabellen Sales indeholder tre rækker:
    • Ordredato 1. januar 2019, Kundekode CUST-01, SKU CL-01, Antal 10
    • Ordredato 2. februar 2019, Kundekode CUST-01, SKU CL-02, Antal 20
    • Ordredato 3. marts 2019, Kundekode CUST-02, SKU CL-01, Antal 30

Overvej nu følgende rapportside.

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

Siden består af to udsnitsværktøjer og en kortvisualisering. Det første udsnit er til Land/område og indeholder to elementer: Australien og USA. Det er i øjeblikket udsnit efter Australien. Det andet udsnitsværktøj er til Produkt og indeholder tre elementer: 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 udsnittet Produkt for at få vist elementer, hvor data er relateret til salg i Australien. Det er det, der menes med at vise udsnitselementer "med data". Du kan opnå denne funktionsmåde ved at konfigurere relationen mellem tabellen Product og Sales for at filtrere i begge retninger.

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

Udsnittet Produkt viser nu et enkelt element: T-shirt. Dette element repræsenterer det eneste produkt, der er solgt 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 nøje overvejer, om dette design fungerer for dine rapportbrugere. Nogle rapportbrugere finder oplevelsen forvirrende. De forstår ikke, hvorfor udsnitselementer vises dynamisk eller forsvinder, når de interagerer med andre udsnit.

Hvis du beslutter dig for at vise udsnitselementer "med data", anbefaler vi ikke, at du konfigurerer 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 din model ø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 udsnittet Produkt .

Lad os nu overveje, at relationen mellem tabellen 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 elementerne i udsnittet Produkt "med data", skal de blot filtreres efter målingen Samlet antal ved hjælp af betingelsen "er ikke tom".

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

Analyse af dimension til dimension

Et andet scenarie, der involverer tovejsrelationer, behandler en tabel af faktatypen som en brotabel. På denne måde understøtter den analyse af tabeldata af dimensionstypen i filterkonteksten i en anden tabel af dimensionstypen.

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 at opsummere data i tabellen af faktatypen bro. De kræver dog, at filtre overføres fra én tabel af dimensionstypen til den anden. Når filtrene overføres via tabellen af faktatypen, kan opsummering af tabelkolonner af dimensionstypen opnås ved hjælp af DAX-funktionen DISTINCTCOUNT – og muligvis DAX-funktionerne MIN og MAX .

Da tabellen af faktatypen fungerer som en brotabel, kan du følge vejledningen til mange til mange-relationer for at relatere to tabeller af dimensionstypen. Det kræver konfiguration af mindst én relation for at filtrere i begge retninger. Du kan finde flere oplysninger i Vejledning til mange til mange-relationer (Relater mange til mange-dimensioner).

Som allerede beskrevet i denne artikel vil dette design sandsynligvis have en negativ indvirkning på ydeevnen og konsekvenserne for brugeroplevelsen i forbindelse med udsnitselementer "med data". Vi anbefaler derfor, at du aktiverer tovejsfiltrering i en målingsdefinition ved hjælp af DAX-funktionen CROSSFILTER i stedet. Funktionen CROSSFILTER kan bruges 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 Kunde og Salg 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 målingsudtrykket Forskellige lande solgt filtrerer relationen mellem tabellerne Kunde og Salg 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 Solgte lande repræsenterer det entydige antal lande/område-værdier for alle kunder, der har købt produktet.

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

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