Veiledning for én-til-én-relasjon
Denne artikkelen er rettet mot deg som en datamodellerer som arbeider med Power BI Desktop. Den gir deg veiledning om hvordan du arbeider med én-til-én-modellrelasjoner. En én-til-én-relasjon kan opprettes når begge tabellene inneholder en kolonne med vanlige og unike verdier.
Merk
En innføring i modellrelasjoner dekkes ikke i denne artikkelen. Hvis du ikke er helt kjent med relasjoner, egenskaper eller hvordan du konfigurerer dem, anbefaler vi at du først leser modellrelasjonene i Power BI Desktop-artikkelen .
Det er også viktig at du har en forståelse av utforming av stjerneskjema. Hvis du vil ha mer informasjon, kan du se Forstå stjerneskjema og viktigheten for Power BI.
Det finnes to scenarioer som involverer én-til-én-relasjoner:
Degenererte dimensjoner: Du kan utlede en degenerert dimensjon fra en faktatabell.
Raddata strekker seg over tabeller: En enkelt forretningsenhet eller emne lastes inn som to (eller flere) modelltabeller, muligens fordi dataene er hentet fra forskjellige datalagre. Dette scenarioet kan være vanlig for dimensjonstabeller. Hovedproduktdetaljer lagres for eksempel i et operativt salgssystem, og tilleggsproduktdetaljer lagres i en annen kilde.
Det er imidlertid uvanlig at du vil relatere to faktatabeller med en én-til-én-relasjon. Det er fordi begge faktatabellene må ha samme dimensjonalitet og detaljnivå. Hver faktatabell trenger også unike kolonner for å tillate at modellrelasjonen opprettes.
Degenerer dimensjoner
Når kolonner fra en faktatabell brukes til filtrering eller gruppering, kan du vurdere å gjøre dem tilgjengelige i en egen tabell. På denne måten skiller du kolonner som brukes til filtrering eller gruppering fra kolonnene som brukes til å oppsummere faktarader. Denne fordelingen kan:
- Reduser lagringsplass.
- Forenkle modellberegninger.
- Bidra til forbedret spørringsytelse.
- Gi rapportforfatterne en mer intuitiv opplevelse data rute.
Vurder en kildetabell med navnet Sales
som lagrer referansedetaljer for salgsordrelinjen i to kolonner.
Kolonnen OrderNumber
lagrer ordrenummeret, og OrderLineNumber
kolonnen lagrer en sekvens med linjer i rekkefølgen.
Legg merke til at kolonnene for ordrenummer og ordrelinjenummer ikke er lastet inn i tabellen Sales
nedenfor. I stedet ble verdiene brukt til å opprette en surrogatnøkkel kolonne med navnet OrderLineNumberID
. (Nøkkelverdien beregnes ved å multiplisere ordrenummeret med 1000, og deretter legge til ordrelinjenummeret.)
Dimensjonstabellen Sales Order
gir en rik opplevelse for rapportforfattere med to kolonner: Sales Order
og Sales Order Line
. Disse bestemte kolonnene støtter rapportutforminger som må filtrere, gruppere eller drille ned gjennom ordrer og ordrelinjer.
Fordi den Sales Order
tabellen er avledet fra salgsdataene, bør det være nøyaktig samme antall rader i hver tabell. Videre bør det være samsvarende verdier mellom hver OrderLineNumberID
kolonne.
Raddata strekker seg over tabeller
Vurder et eksempel som omfatter to én-til-én-relaterte dimensjonstabeller: Product
og Product Category
. Hver tabell representerer importerte data og har en SKU
kolonne (lagerføringsenhet) som inneholder unike verdier.
Her er et delvis modelldiagram over de to tabellene.
Den første tabellen heter Product
, og den inneholder tre kolonner: Color
, Product
og SKU
. Den andre tabellen heter Product Category
, og den inneholder to kolonner: Category
og SKU
. En én-til-én-relasjon relaterer de to SKU
kolonnene. Relasjonen filtreres i begge retninger, som alltid er tilfellet for én-til-én-relasjoner.
Bildet nedenfor viser noen tabellrader for å beskrive hvordan relasjonsfilteroverføringen fungerer. Alle eksempler i denne artikkelen er basert på disse dataene.
Raddetaljene for de to tabellene er beskrevet i følgende punktliste:
- Tabellen
Product
har tre rader:-
SKU
CL-01,Product
T-skjorte,Color
Grønn -
SKU
CL-02,Product
Jeans,Color
Blå -
SKU
AC-01,Product
Hatt,Color
Blå
-
- Tabellen
Product Category
har to rader:-
SKU
CL-01,Category
Klær -
SKU
AC-01,Category
Tilbehør
-
Legg merke til at Product Category
tabellen ikke inneholder en rad for produkt-SKU-en CL-02. Vi skal diskutere konsekvensene av denne manglende raden senere i denne artikkelen.
I ruten Data finner rapportforfattere produktrelaterte felt i to tabeller: Product
og Product Category
. La oss se hva som skjer når felt fra begge tabellene legges til i et tabellvisualobjekt. I dette eksemplet hentes den SKU
kolonnen fra Product
-tabellen.
Legg merke til at den Category
verdien for produkt-SKU-CL-02 er BLANK. Det er fordi det ikke er noen tilsvarende rad i Product Category
tabellen for dette produktet.
Anbefalinger
Når det er mulig, anbefaler vi at du unngår å opprette én-til-én-modellrelasjoner når raddata strekker seg over flere modelltabeller. Dette er fordi denne utformingen kan:
- Bidra til rot i dataruten , som viser flere tabeller enn nødvendig.
- Gjør det vanskelig for rapportforfattere å finne relaterte felt, fordi de distribueres på tvers av flere tabeller.
- Begrens muligheten til å opprette hierarkier, da nivåene må være basert på kolonner fra samme tabell.
- Gi uventede resultater når det ikke er et fullstendig samsvar med rader mellom tabellene.
Spesifikke anbefalinger varierer avhengig av om en-til-en-relasjonen er intrakildegruppe eller krysskildegruppe. Hvis du vil ha mer informasjon om relasjonsevaluering, kan du se Modellrelasjoner i Power BI Desktop.
Intrakildegruppe én-til-én-relasjon
Når det finnes en én-til-én intrakildegrupperelasjon mellom tabeller, anbefaler vi at du konsoliderer dataene i én enkelt modelltabell. Du kan gjøre dette ved å slå sammen Power Query-spørringene.
Følgende trinn presenterer en metodikk for å konsolidere og modellere de en-til-en-relaterte dataene.
Slå sammen spørringer: Når du kombinerer de to spørringene, bør du ta hensyn til fullstendigheten av data i hver spørring. Hvis én spørring inneholder et komplett sett med rader (for eksempel en hovedliste), slår du sammen den andre spørringen med den. Angi sammenslåingstransformasjonen til å bruke en venstre ytre sammenføyning, som er standard sammenføyningstype. Denne sammenføyningstypen sikrer at du beholder alle radene i den første spørringen, og supplerer dem med eventuelle samsvarende rader i den andre spørringen. Utvid alle nødvendige kolonner i den andre spørringen til den første spørringen.
Deaktiver spørringsinnlasting: Pass på at du deaktiverer belastningen av den andre spørringen. På denne måten lastes det ikke inn resultatet som en modelltabell. Denne konfigurasjonen reduserer lagringsstørrelsen for datamodellen, og bidrar til å rydde opp i dataruten .
I vårt eksempel finner rapportforfattere nå en enkelt tabell med navnet
Product
i ruten Data. Den inneholder alle produktrelaterte felt.Erstatt manglende verdier: Hvis den andre spørringen har rader uten sidestykke, vises nullverdier i kolonnene som er introdusert fra den. Når det er aktuelt, bør du vurdere å erstatte nullverdier med en tokenverdi. Det er spesielt viktig å erstatte manglende verdier når rapportforfattere filtrerer eller grupperer etter kolonneverdiene, da BLANK-er kan vises i visualobjekter i rapporten.
Legg merke til at kategorien for produkt-SKU-en CL-02 nå leser [Udefinert]. I spørringen ble nullkategorier erstattet med denne tokentekstverdien.
Opprett hierarkier: Hvis det finnes relasjoner mellom kolonnene i den nå konsoliderte tabellen, bør du vurdere å opprette hierarkier. På denne måten vil rapportforfattere raskt identifisere muligheter for rapportvisualobjektboring.
I vårt eksempel kan rapportforfattere nå bruke et hierarki som har to nivåer:
Category
ogProduct
.
Hvis du liker hvordan separate tabeller bidrar til å organisere feltene, anbefaler vi fortsatt å konsolidere til én enkelt tabell. Du kan fortsatt organisere feltene, men ved å bruke visningsmapper i stedet.
I vårt eksempel kan rapportforfattere finne Category
-feltet i Marketing
visningsmappen.
Hvis du fremdeles bestemmer deg for å definere én-til-én intrakildegrupperelasjoner i modellen, må du sørge for at det finnes samsvarende rader i de relaterte tabellene når det er mulig. Ettersom en én-til-én intrakildegrupperelasjon evalueres som en vanlig relasjon, kan dataintegritetsproblemer dukke opp i rapportvisualobjektene som BLANK-er. (Du kan se et eksempel på en BLANK-gruppering i det første tabellvisualobjektet som presenteres i denne artikkelen.)
Krysskildegruppe én-til-én-relasjon
Når det finnes en én-til-én-krysskildegruppe relasjon mellom tabeller, finnes det ingen alternativ modellutforming , med mindre du forhåndskonsoliderer dataene i datakilden. Power BI evaluerer én-til-én-modellrelasjonen som en begrenset relasjon. Pass derfor på at det finnes samsvarende rader i de relaterte tabellene, ettersom rader uten sidestykke elimineres fra spørringsresultater.
La oss se hva som skjer når felt fra begge tabellene legges til i et tabellvisualobjekt, og det finnes en begrenset relasjon mellom tabellene.
Det første tabellvisualobjektet, som bruker en grupperelasjon på tvers av kilder, viser bare to rader. Produkt-SKU-CL-02 mangler fordi det ikke finnes noen samsvarende rad i Product Category
-tabellen. Det andre tabellvisualobjektet, basert på én enkelt konsolidert tabell i modellen, viser tre rader.
Relatert innhold
Hvis du vil ha mer informasjon om denne artikkelen, kan du se følgende ressurser: