Veiledning for én-til-én-relasjon

Denne artikkelen er rettet mot deg som 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 faktatypetabell.

  • Raddata strekker seg over tabeller: Én enkelt forretningsenhet eller et emne lastes inn som to (eller flere) modelltabeller, muligens fordi dataene er hentet fra forskjellige datalagre. Dette scenarioet kan være vanlig for dimensjonstypetabeller. Hovedproduktdetaljer lagres for eksempel i et operativt salgssystem, og tilleggsproduktdetaljer lagres i en annen kilde.

    Det er imidlertid uvanlig at du vil relatere to faktatypetabeller med en én-til-én-relasjon. Det er fordi begge faktatypetabellene må ha samme dimensjonalitet og detaljnivå. Hver faktatypetabell trenger også unike kolonner for å tillate at modellrelasjonen opprettes.

Degenerer dimensjoner

Når kolonner fra en faktatypetabell 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:

  • Redusere lagringsplass
  • Forenkle modellberegninger
  • Bidra til forbedret spørringsytelse
  • Levere en mer intuitiv feltruteopplevelse til rapportforfatterne

Vurder en kildesalgstabell som lagrer salgsordredetaljer i to kolonner.

Table rows for a sales table.

OrderNumber-kolonnen 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 Salg-tabellen i det følgende modelldiagrammet. I stedet ble verdiene brukt til å opprette en surrogatnøkkelkolonne kalt SalesOrderLineID. (Nøkkelverdien beregnes ved å multiplisere ordrenummeret med 1000, og deretter legge til ordrelinjenummeret.)

A model diagram contains two tables: Sales and Sales Order. A one-to-one relationship relates the SalesOrderLineID columns.

Salgsordretabellen gir en omfattende opplevelse for rapportforfattere med tre kolonner: Salgsordre, Salgsordrelinje og Linjenummer. Den inneholder også et hierarki. Disse tabellressursene støtter rapportutforminger som må filtrere, gruppere etter eller drille ned gjennom ordrer og ordrelinjer.

Ettersom Salgsordre-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 SalesOrderLineID-kolonne .

Raddata strekker seg over tabeller

Vurder et eksempel som involverer to én-til-én-relaterte dimensjonstypetabeller: Produkt og Produktkategori. 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.

A model diagram contains two tables. The design is described in the following paragraph.

Den første tabellen heter Produkt, og den inneholder tre kolonner: Farge, Produkt og SKU. Den andre tabellen heter Produktkategori, og den inneholder to kolonner: Kategori 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.

For å beskrive hvordan overføring av relasjonsfilter fungerer, er modelldiagrammet endret for å vise tabellradene. Alle eksempler i denne artikkelen er basert på disse dataene.

Merk

Det er ikke mulig å vise tabellrader i modelldiagrammet for Power BI Desktop. Det gjøres i denne artikkelen for å støtte diskusjonen med klare eksempler.

The model diagram now reveals the table rows. The row details are described in the following paragraph.

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

  • Produkttabellen har tre rader:
    • SKU CL-01, Produkt T-skjorte, Farge grønn
    • SKU CL-02, Produkt Jeans, Farge Blå
    • SKU AC-01, Produktlue, Fargeblå
  • Tabellen Produktkategori har to rader:
    • SKU CL-01, Kategori Klær
    • SKU AC-01, Kategori Tilbehør

Legg merke til at tabellen Produktkategori ikke inneholder en rad for produkt-SKU CL-02. Vi skal diskutere konsekvensene av denne manglende raden senere i denne artikkelen.

Rapportforfattere finner produktrelaterte felt i to tabeller i feltruten: Produkt- og Produktkategori.

The Fields pane shows both tables expanded, and the columns are listed as fields with Product and Product category called out.

La oss se hva som skjer når felt fra begge tabellene legges til i et tabellvisualobjekt. I dette eksemplet hentes SKU-kolonnen fra Produkt-tabellen .

A table visual includes four columns: SKU, Product, Color, and Category. The Category value for product SKU CL-02 is BLANK.

Legg merke til at kategoriverdien for produkt-SKU CL-02 er BLANK. Det er fordi det ikke er noen rad i produktkategoritabellen 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. Det er fordi denne utformingen kan:

  • Bidra til rotemappen i feltruten , 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 (Relasjonsevaluering).

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. Det gjøres ved å slå sammen Power Query-spørringene.

Følgende trinn presenterer en metodikk for å konsolidere og modellere én-til-én-relaterte data:

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

  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 Felter-ruten .

    I vårt eksempel finner rapportforfattere nå en enkelt tabell med navnet Produkt i Felt-ruten . Den inneholder alle produktrelaterte felt.

    The Fields pane shows both tables expanded, and the columns are listed as fields with Product called out.

  3. Erstatt manglende verdier: Hvis den andre spørringen har enestående rader, vises NULLer i kolonnene som ble introdusert fra den. Når det er aktuelt, bør du vurdere å erstatte NULLer 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 SKU CL-02 for produktet nå leser [Udefinert]. I spørringen ble nullkategorier erstattet med denne tokentekstverdien.

    A table visual includes four columns: SKU, Product, Color, and Category. The Category value for product SKU CL-02 is now labeled

  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: Kategori og produkt.

    The Fields pane shows both tables expanded, and the columns are listed as fields with Products called out.

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 Kategori-feltet i visningsmappen markedsføring .

The Fields pane shows the Category field within a display folder named Marketing.

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-grupperelasjon mellom tabeller, finnes det ingen alternativ modellutforming , med mindre du forhåndskonsoliderer dataene i datakildene. Power BI evaluerer én-til-én-modellrelasjonen som en begrenset relasjon. Pass derfor på at det finnes samsvarende rader i de relaterte tabellene, da rader uten sidestykke vil bli fjernet fra spørringsresultatene.

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.

A table visual includes four columns: SKU, Product, Color, and Category. The table has two rows only.

Tabellen viser bare to rader. Produkt-SKU CL-02 mangler fordi det ikke finnes noen samsvarende rad i tabellen Produktkategori .

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