Del via


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.

diagram, der viser tabelrækker for dimensionstabellen Sales. Designet er beskrevet i følgende afsnit.

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.

diagram, der viser to tabeller: Sales og Sales Order. En en til en-relation relaterer kolonnerne Ordrelinjenummer-id.

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.

diagram, der viser en model, der indeholder to tabeller, hvor rækkedata strækker sig over flere tabeller. Designet er beskrevet i følgende afsnit.

Den første tabel hedder Productog indeholder tre kolonner: Color, Productog SKU. Den anden tabel kaldes Product Categoryog 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.

diagram, der viser tabellerne Product og Product Category og nogle rækker med data. Rækkedetaljerne er beskrevet i følgende afsnit.

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

  • Tabellen Product indeholder tre rækker:
    • SKU CL-01Productt-shirtColorGreen
    • SKU CL-02, ProductJeansColorBlue
    • SKU AC-01, ProductHatColorBlå
  • Tabellen Product Category indeholder to rækker:
    • SKU CL-01CategoryBeklædning
    • SKU AC-01CategoryTilbehø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.

diagram, der viser ruden Data med to tabeller, og en tabelvisualisering, der indeholder fire kolonner. Værdien Kategori for produkt-SKU'en CL-02 er BLANK.

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.

  1. 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.

    diagram, der viser data, der er konsolideret til en enkelt tabel over produktdimensioner.

  2. 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.

  3. 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.

    diagram, der viser ruden Data for tabellen Produkt. Den viser også en tabelvisualisering med fire kolonner. Værdien Kategori for produkt-SKU'en CL-02 er nu mærket Udefineret.

  4. 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 og Product.

    diagram, der viser ruden Data. Tabellen Product indeholder hierarkiet Products.

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.

diagram, der viser ruden Data, hvor feltet Kategori er i en visningsmappe med navnet Marketing.

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.

diagram, der viser en en til en-relation på tværs af kildegrupper, som er en begrænset relation.

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.

diagram, der viser to tabelvisualiseringer, som er beskrevet i følgende afsnit.

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.

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