Del via


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.

diagram som viser tabellrader for dimensjonstabellen Salg degenerert. Utformingen er beskrevet i avsnittet nedenfor.

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

diagram som viser to tabeller: Salg og Salgsordre. En én-til-én-relasjon relaterer kolonnene ordrelinjenummer-ID.

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.

diagram som viser en modell som inneholder to tabeller der raddata strekker seg over flere tabeller. Utformingen er beskrevet i avsnittet nedenfor.

Den første tabellen heter Product, og den inneholder tre kolonner: Color, Productog 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.

diagram som viser tabellene produkt- og produktkategori og noen rader med data. Raddetaljene er beskrevet i avsnittet nedenfor.

Raddetaljene for de to tabellene er beskrevet i følgende punktliste:

  • Tabellen Product har tre rader:
    • SKU CL-01, ProductT-skjorte, ColorGrønn
    • SKU CL-02, ProductJeans, ColorBlå
    • SKU AC-01, ProductHatt, ColorBlå
  • Tabellen Product Category har to rader:
    • SKU CL-01, CategoryKlær
    • SKU AC-01, CategoryTilbehø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.

diagram som viser dataruten med to tabeller og et tabellvisualobjekt som inneholder fire kolonner. Kategoriverdien for produkt-SKU CL-02 er BLANK.

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.

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

    diagram som viser data konsolidert til én enkelt produktdimensjonstabell.

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

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

    diagram som viser dataruten for Produkt-tabellen. Den viser også et tabellvisualobjekt med fire kolonner. Kategoriverdien for produkt-SKU CL-02 er nå merket som Udefinert.

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

    diagram som viser dataruten. Produkttabellen inneholder produkthierarkiet.

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.

diagram som viser dataruten der Kategori-feltet er i en visningsmappe kalt Markedsføring.

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.

diagram som viser en krysskildegruppe én-til-én-relasjon, som er en begrenset relasjon.

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.

diagram som viser to tabellvisualobjekter, som er beskrevet i avsnittet nedenfor.

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.

Hvis du vil ha mer informasjon om denne artikkelen, kan du se følgende ressurser: