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.
Den første tabel kaldes Customer
., og den 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 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.
Rækkedetaljerne for de tre tabeller er beskrevet på følgende punktopstilling:
- Tabellen
Customer
indeholder to rækker:-
CustomerCode
CUST-01,Customer
Customer-1Country-Region
United States -
CustomerCode
CUST-02Customer
Customer-2Country-Region
Australia
-
- Tabellen
Product
indeholder tre rækker:-
SKU
CL-01Product
t-shirtColor
Green -
SKU
CL-02,Product
JeansColor
Blue -
SKU
AC-01,Product
HatColor
Blå
-
- Tabellen
Sales
indeholder tre rækker:-
OrderDate
. januar 2019CustomerCode
CUST-01SKU
CL-01Quantity
10 -
OrderDate
. februar 2019CustomerCode
CUST-01SKU
CL-02Quantity
20 -
OrderDate
. marts 2019CustomerCode
CUST-02SKU
CL-01Quantity
30
-
Overvej nu følgende rapportside.
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.
Produktudsnitsværktøjet viser nu en enkelt indstilling: T-shirt. Denne indstilling repræsenterer det eneste produkt, der er solgt til australske kunder.
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".
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.
Relateret indhold
Du kan få flere oplysninger, der er relateret til denne artikel, i følgende ressourcer: