Vejledning til en til en-relationer
Denne artikel henvender sig til dig som dataudformer, der arbejder med Power BI Desktop. Den indeholder en vejledning i at arbejde med en til en-modelrelationer. Der kan oprettes en en til en-relation, når begge tabeller hver især indeholder en kolonne med fælles og entydige værdier.
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.
Der er to scenarier, der involverer en til en-relationer:
degenererede dimensioner: Du kan udlede en degenereret dimension fra en faktatabel.
Rækkedata strækker sig over tabeller: Et enkelt forretningsobjekt eller en enkelt emne indlæses som to (eller flere) modeltabeller, muligvis fordi deres data stammer fra forskellige datalagre. Dette scenarie kan være almindeligt for dimensionstabeller. Masterproduktoplysninger gemmes f.eks. i et driftssystem, og supplerende produktoplysninger gemmes i en anden kilde.
Det er dog usædvanligt, at du relaterer to faktatabeller med en en til en-relation. Det skyldes, at begge faktatabeller skal have samme dimensionalitet og granularitet. Hver faktatabel skal også bruge entydige kolonner for at gøre det muligt at oprette modelrelationen.
Degenerere dimensioner
Når kolonner fra en faktatabel bruges til filtrering eller gruppering, kan du overveje at gøre dem tilgængelige i en separat tabel. På denne måde kan du adskille kolonner, der bruges til filtrering eller gruppering, fra de kolonner, der bruges til at opsummere faktarækker. Denne adskillelse kan:
- Reducer lagerplads.
- Forenkle modelberegninger.
- Bidrage til forbedret forespørgselsydeevne.
- Levér en mere intuitiv Data rudeoplevelse til dine rapportforfattere.
Overvej en kildetabel med navnet Sales
, der gemmer oplysninger om salgsordrelinjereferencer i to kolonner.
I kolonnen OrderNumber
gemmes ordrenummeret, og kolonnen OrderLineNumber
gemmer en række linjer i ordren.
På følgende billede kan du se, at kolonnerne ordrenummer og ordrelinjenummer ikke er indlæst i tabellen Sales
. I stedet blev deres værdier brugt til at oprette en surrogatnøgle kolonne med navnet OrderLineNumberID
. Nøgleværdien beregnes ved at multiplicere ordrenummeret med 1000 og derefter tilføje ordrelinjenummeret.
Dimensionstabellen Sales Order
giver rapportforfattere en omfattende oplevelse med to kolonner: Sales Order
og Sales Order Line
. Disse bestemte kolonner understøtter rapportdesign, der skal filtrere, gruppere eller analysere ned gennem ordrer og ordrelinjer.
Da den Sales Order
tabel er afledt af salgsdataene, bør der være nøjagtigt det samme antal rækker i hver tabel. Desuden skal der være matchende værdier mellem hver OrderLineNumberID
kolonne.
Rækkedata strækker sig over flere tabeller
Overvej et eksempel, der omfatter to en til en-relaterede dimensionstabeller: Product
og Product Category
. Hver tabel repræsenterer importerede data og har en SKU
(lagerenhed), der indeholder entydige værdier.
Her er et delvist modeldiagram over de to tabeller.
Den første tabel hedder Product
og indeholder tre kolonner: Color
, Product
og SKU
. Den anden tabel kaldes Product Category
og indeholder to kolonner: Category
og SKU
. En en til en-relation relaterer de to SKU
kolonner. Relationen filtrerer i begge retninger, hvilket altid er tilfældet for en til en-relationer.
Som en hjælp til at beskrive, hvordan overførsel af relationsfiltre fungerer, vises nogle tabelrækker på følgende billede. Alle eksempler i denne artikel er baseret på disse data.
Rækkedetaljerne for de to tabeller er beskrevet på følgende punktopstilling:
- 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
Product Category
indeholder to rækker:-
SKU
CL-01Category
Beklædning -
SKU
AC-01Category
Tilbehør
-
Bemærk, at tabellen Product Category
ikke indeholder en række for produkt-SKU'en CL-02. Vi diskuterer konsekvenserne af denne manglende række senere i denne artikel.
I ruden Data finder rapportforfattere produktrelaterede felter i to tabeller: Product
og Product Category
. Lad os se, hvad der sker, når felter fra begge tabeller føjes til en tabelvisualisering. I dette eksempel hentes kolonnen SKU
fra tabellen Product
.
Bemærk, at den Category
værdi for produkt-SKU'en CL-02 er BLANK. Det skyldes, at der ikke er nogen tilsvarende række i tabellen Product Category
for dette produkt.
Anbefalinger
Når det er muligt, anbefaler vi, at du undgår at oprette en til en-modelrelationer, når rækkedata strækker sig over flere modeltabeller. Det skyldes, at dette design kan:
- Bidrage til rod i ruden Data og vise flere tabeller end nødvendigt.
- Gør det svært for rapportforfattere at finde relaterede felter, fordi de distribueres på tværs af flere tabeller.
- Begræns muligheden for at oprette hierarkier, da deres niveauer skal være baseret på kolonner fra den samme tabel.
- Giver uventede resultater, når der ikke er et komplet match af rækker mellem tabellerne.
Specifikke anbefalinger varierer, afhængigt af om en til en-relationen er en intern kildegruppe eller en tværgående kildegruppe. Du kan få flere oplysninger om evaluering af relationer under Modelrelationer i Power BI Desktop.
En til en-relation for intern kildegruppe
Når der findes en en til en-relation for en intern kildegruppe mellem tabeller, anbefaler vi, at dataene konsolideres i en enkelt modeltabel. Det kan du gøre ved at flette Power Query-forespørgslerne.
Følgende trin præsenterer en metode til at konsolidere og modellere en til en-relaterede data.
Flet forespørgsler: Når du kombinerer de to forespørgsler, skal du overveje, om dataene i hver forespørgsel er fuldstændige. Hvis én forespørgsel indeholder et komplet sæt rækker (f.eks. en masterliste), skal du flette den anden forespørgsel med den. Angiv flettetransformationen til at bruge en venstre ydre joinforbindelse, som er standardjointypen. Denne joinforbindelsestype sikrer, at du bevarer alle rækker i den første forespørgsel og supplerer dem med eventuelle tilsvarende rækker i den anden forespørgsel. Udvid alle påkrævede kolonner i den anden forespørgsel til den første forespørgsel.
Deaktiver indlæsning af forespørgsel: Sørg for at deaktivere indlæsningen af den anden forespørgsel. På denne måde indlæses resultatet ikke som en modeltabel. Denne konfiguration reducerer lagerstørrelsen for datamodellen og hjælper med at rydde op i ruden Data .
I vores eksempel finder rapportforfattere nu en enkelt tabel med navnet
Product
i ruden Data. Den indeholder alle produktrelaterede felter.Erstat manglende værdier: Hvis den anden forespørgsel indeholder rækker, der ikke stemmer overens, vises der null-værdier i de kolonner, der introduceres fra den. Overvej at erstatte null-værdier med en tokenværdi, når det er relevant. Det er især vigtigt at erstatte manglende værdier, når rapportforfattere filtrerer eller grupperer efter kolonneværdier, da TOMME værdier kan vises i rapportvisualiseringer.
På følgende billede kan du se, at kategorien for produkt-SKU'en CL-02- nu læser [Udefineret]. I forespørgslen blev null-kategorier erstattet med denne tokentekstværdi.
Opret hierarkier: Hvis der findes relationer mellem kolonnerne i den nu konsoliderede tabel, kan du overveje at oprette hierarkier. På denne måde identificerer rapportforfattere hurtigt muligheder for analyse af rapportvisualiseringer.
I vores eksempel kan rapportforfattere nu bruge et hierarki med to niveauer:
Category
ogProduct
.
Hvis du kan lide, hvordan separate tabeller hjælper med at organisere dine felter, anbefaler vi stadig, at du konsoliderer til en enkelt tabel. Du kan stadig organisere dine felter, men ved at bruge visningsmapper i stedet.
I vores eksempel kan rapportforfattere finde feltet Category
i Marketing
visningsmappe.
Hvis du stadig beslutter dig for at definere en til en-relationer i en intern kildegruppe i din model, skal du sikre, at der er matchende rækker i de relaterede tabeller, når det er muligt. Da en en til en intern kildegrupperelation evalueres som en almindelig relation, kan problemer med dataintegritet dukke op i dine rapportvisualiseringer som tomme værdier. Du kan se et eksempel på en BLANK-gruppering i den første tabelvisualisering, der præsenteres i denne artikel.
En til en-relation på tværs af kildegrupper
Når der findes en en til en-tværgående kildegruppe relation mellem tabeller, er der ingen alternativ modeldesign – medmindre du konsoliderer dataene i datakilden på forhånd. Power BI evaluerer en til en-modelrelationen som en begrænset relation. Derfor skal du sørge for at sikre, at der er matchende rækker i de relaterede tabeller, da uoverensstemmende rækker fjernes fra forespørgselsresultater.
Lad os se, hvad der sker, når felter fra begge tabeller føjes til en tabelvisualisering, og der findes en begrænset relation mellem tabellerne.
Den første tabelvisualisering, der bruger en relation på tværs af kildegrupper, viser kun to rækker. Produktvarenummer CL-02- mangler, fordi der ikke er nogen tilsvarende række i tabellen Product Category
. Den anden tabelvisualisering, der er baseret på en enkelt konsolideret tabel i modellen, viser tre rækker.
Relateret indhold
Du kan få flere oplysninger, der er relateret til denne artikel, i følgende ressourcer: