Opprette og administrere relasjoner i Power BI Desktop

Når du har flere tabeller, er det sannsynlig at du gjør noen analyser ved hjelp av data fra alle disse tabellene. Relasjoner mellom disse tabellene er nødvendige for å beregne resultater nøyaktig og vise riktig informasjon i rapportene dine. I de fleste tilfeller trenger du ikke å gjøre noe. Funksjonen for automatisk gjenkjenning gjør det for deg. Noen ganger må du imidlertid kanskje opprette relasjoner selv eller gjøre endringer i en relasjon. Uansett er det viktig å forstå relasjoner i Power BI Desktop og hvordan du oppretter og redigerer dem.

Automatisk gjenkjenning under innlasting

Hvis du spør etter to eller flere tabeller samtidig, prøver Power BI Desktop å finne og opprette relasjoner for deg når dataene lastes inn. Relasjonsalternativene Kardinalitet, Kryssfiltreringsretning og Aktiver denne relasjonen angis automatisk. Power BI Desktop ser på kolonnenavnene i tabellene du spør etter, for å finne ut om det finnes potensielle relasjoner. Hvis det finnes, opprettes disse relasjonene automatisk. Hvis Power BI Desktop ikke kan fastslå med høy grad av tillit at det finnes et treff, oppretter det ikke relasjonen. Du kan imidlertid fortsatt bruke dialogboksen Behandle relasjoner til å opprette eller redigere relasjoner manuelt.

Opprette en relasjon med automatisk gjenkjenning

Velg Behandle relasjoner>Automatisk gjenkjenning på Modellering-fanen.

Animation showing how to create a relationship with autodetect.

Opprette en relasjon manuelt

  1. Velg Behandle relasjoner> ny på Modellering-fanen.

  2. Velg en tabell i rullegardinlisten for den første tabellen i dialogboksen Opprett relasjon. Merk kolonnen du vil bruke i relasjonen.

  3. Velg den andre tabellen du vil bruke i relasjonen, i den andre rullegardinlisten for tabell. Merk den andre kolonnen du vil bruke, og velg deretter OK.

    Animation showing how to create a manual relationship.

Som standard konfigurerer Power BI Desktop automatisk alternativene Kardinalitet (retning), Kryssfiltreringsretning og Gjør denne relasjonen aktiv for den nye relasjonen. Du kan imidlertid endre disse innstillingene om nødvendig. Hvis du vil ha mer informasjon, kan du se Forstå flere alternativer.

Hvis ingen av tabellene som er valgt for relasjonen, har unike verdier, ser du følgende feil: Én av kolonnene må ha unike verdier. Minst én tabell i en relasjon ha en distinkt, unik liste over nøkkelverdier, som er et vanlig krav for alle relasjonsdatabaseteknologier.

Hvis det oppstår en feil, finnes det et par måter å løse problemet på:

  • Bruk Fjern duplikater til å opprette en kolonne med unike verdier. Ulempen med denne fremgangsmåten er at du kan miste informasjon når dupliserte rader fjernes. Ofte dupliseres en nøkkel (rad) med god grunn.
  • Legg til en mellomliggende tabell laget av listen over distinkte nøkkelverdier i modellen, som deretter vil bli koblet til begge de opprinnelige kolonnene i relasjonen.

For mer informasjon, kan du lese dette blogginnlegget.

Alternativt kan du dra og slippe en kolonne fra én tabell til en kolonne i en annen tabell i oppsettene for modellvisningsdiagram for å opprette en relasjon.

Redigere en relasjon

Det finnes to måter å redigere en relasjon på i Power BI.

Den første metoden for å redigere en relasjon er å bruke redigeringsrelasjonene i Egenskaper-ruten i modellvisning, der du kan velge en linje mellom to tabeller for å se relasjonsalternativene i Egenskaper-ruten . Pass på at du utvider Egenskaper-ruten for å se relasjonsalternativene.

Screenshot of adjusting relationships in the properties pane.

Du kan også se en videodemonstrasjon av redigeringsrelasjoner i Egenskaper-ruten .

Den andre metoden for å redigere en relasjon er å bruke dialogboksen Redigeringsprogram for relasjoner, som du kan åpne på mange måter fra Power BI Desktop. Listen nedenfor viser ulike måter du kan åpne dialogboksen Redigeringsprogram for relasjon på:

Gjør ett av følgende fra rapportvisning :

  • Velg Administrer relasjoner på modelleringsbåndet>, velg deretter relasjonen, og velg Rediger.
  • Velg en tabell i Felter-listen og velg deretter tabellverktøybåndet> Behandle relasjoner, velg deretter relasjonen, og velg deretter Rediger.

Velg tabellverktøybåndet >Behandle relasjoner i datavisningen, velg deretter relasjonen, og velg deretter Rediger.

Gjør ett av følgende fra modellvisningen :

  • Velg Hjem-båndet >Administrer relasjoner, velg deretter relasjonen, og velg deretter Rediger.
  • Dobbeltklikk en linje mellom to tabeller.
  • Høyreklikk en linje mellom to tabeller, og velg deretter Egenskaper.
  • Velg en linje mellom to tabeller, og velg deretter Åpne redigeringsprogram for relasjon i Egenskaper-ruten .

Til slutt kan du også redigere en relasjon fra en hvilken som helst visning, høyreklikke eller velge ellipsen for å gå til hurtigmenyen i en tabell, deretter velge Behandle relasjoner, velge relasjonen og deretter velge Rediger

Bildet nedenfor viser et skjermbilde av Rediger relasjon-vinduet .

Screenshot of the edit relationship window.

Redigere relasjoner ved hjelp av ulike metoder

Bruk av dialogboksen Rediger relasjoner er en mer veiledet opplevelse for redigering av relasjoner i Power BI, og er for øyeblikket i forhåndsvisning. Du kan se en forhåndsvisning av dataene i hver tabell. Når du velger forskjellige kolonner, validerer vinduet automatisk relasjonen og tilbyr riktig kardinalitet og kryssfiltreringsvalg.

Redigering av relasjoner i Egenskaper-ruten er en strømlinjeformet tilnærming til redigering av relasjoner i Power BI. Du ser bare tabellnavnene og kolonnene du kan velge mellom, du presenteres ikke med en forhåndsvisning av data, og relasjonsvalgene du gjør, valideres bare når du velger Bruk endringer. Bruk av Egenskaper-ruten og den strømlinjeformede tilnærmingen reduserer antall spørringer som genereres når du redigerer en relasjon, noe som kan være viktig for store datascenarioer, spesielt når du bruker DirectQuery-tilkoblinger. Relasjoner som er opprettet ved hjelp av Egenskaper-ruten , kan også være mer avanserte enn relasjonene som kan opprettes i dialogboksen Rediger relasjoner.

Du kan også velge flere relasjoner i diagramoppsettene for modellvisning ved å trykke ctrl-tasten og velge mer enn én linje for å velge flere relasjoner. Vanlige egenskaper kan redigeres i Egenskaper-ruten , og Bruk endringer behandler endringene i én transaksjon.

Enkle eller flervalgte relasjoner kan også slettes ved å trykke Slett på tastaturet. Du kan ikke angre slettehandlingen, så en dialogboks ber deg bekrefte sletting av relasjonene.

Viktig

Redigering av relasjoner i egenskapsrutefunksjonen er for øyeblikket i forhåndsversjon. Mens du er i forhåndsvisning, vil funksjonalitet og dokumentasjon sannsynligvis endres. Du må aktivere denne funksjonen i Power BI Desktop ved å gå til funksjoner for forhåndsvisning av filalternativer > og innstillinger >>, og deretter merker du av for avmerkingsboksen ved siden av Relasjon-ruten i den globale delen.

Konfigurer flere alternativer

Når du oppretter eller redigerer en relasjon, kan du konfigurere flere alternativer. Som standard konfigurerer Power BI Desktop automatisk flere alternativer basert på den beste gjetningen, som kan være forskjellig for hver relasjon basert på dataene i kolonnene.

Kardinalitet

Kardinalitetsalternativet kan ha én av følgende innstillinger:

Mange til én (*:1): En mange-til-én-relasjon er den vanligste standardtypen for relasjon. Det betyr at kolonnen i en gitt tabell kan ha mer enn én forekomst av en verdi, og den andre relaterte tabellen, ofte kjent som oppslagstabellen, har bare én forekomst av en verdi.

Én til én (1:1): I en én-til-én-relasjon har kolonnen i én tabell bare én forekomst av en bestemt verdi, og den andre relaterte tabellen har bare én forekomst av en bestemt verdi.

Én til mange (1:*): I en én-til-mange-relasjon har kolonnen i én tabell bare én forekomst av en bestemt verdi, og den andre relaterte tabellen kan ha mer enn én forekomst av en verdi.

Mange til mange (*:*): Med sammensatte modeller kan du etablere en mange-til-mange-relasjon mellom tabeller, som fjerner krav til unike verdier i tabeller. Det fjerner også tidligere midlertidige løsninger, som for eksempel å introdusere nye tabeller bare for å etablere relasjoner. Hvis du vil ha mer informasjon, kan du se Relasjoner med en mange-mange-kardinalitet.

Hvis du vil ha mer informasjon om når du skal endre kardinalitet, kan du se Forstå flere alternativer.

Kryssfiltreringsretning

Alternativet Kryssfiltreringsretning kan ha én av følgende innstillinger:

Begge deler: For filtreringsformål behandles begge tabellene som om de er én enkelt tabell. Begge-innstillingen fungerer bra med én enkelt tabell som har mange oppslagstabeller som omgir den. Et eksempel er en salgstabell med en oppslagstabell for avdelingen. Denne konfigurasjonen kalles ofte en stjerneskjemakonfigurasjon (en sentral tabell med flere oppslagstabeller). Hvis du imidlertid har to eller flere tabeller som også har oppslagstabeller (med noen til felles), vil du ikke bruke begge innstillingene. Hvis du vil fortsette det forrige eksemplet, har du i dette tilfellet også en budsjettsalgstabell som registrerer målbudsjett for hver avdeling. Avdelingstabellen er også koblet til både salg og budsjetttabellen. Unngå begge innstillingene for denne typen konfigurasjon.

Enkel: Den vanligste standardretningen, som betyr at filtreringsvalg i tilkoblede tabeller fungerer på tabellen der verdiene aggregeres. Hvis du importerer en Power Pivot i Excel 2013 eller tidligere datamodell, har alle relasjoner én retning.

Hvis du vil ha mer informasjon om når du skal endre kryssfiltreringsretning, kan du se Forstå flere alternativer.

Gjør denne relasjonen aktiv

Når det er merket av for dette, fungerer relasjonen som den aktive standardrelasjonen. I tilfeller der det er mer enn én relasjon mellom to tabeller, gir den aktive relasjonen en måte for Power BI Desktop å automatisk opprette visualiseringer som inkluderer begge tabellene.

Hvis du vil ha mer informasjon om når du skal gjøre en bestemt relasjon aktiv, kan du se Forstå flere alternativer.

Forstå relasjoner

Når du har koblet to tabeller sammen med en relasjon, kan du arbeide med dataene i begge tabellene som om de var én enkelt tabell. Du er da fri fra å måtte bekymre deg for relasjonsdetaljer eller flate ut disse tabellene i én enkelt tabell før du importerer dem. I mange situasjoner kan Power BI Desktop automatisk opprette relasjoner for deg. Hvis Power BI Desktop imidlertid ikke kan fastslå med stor grad av sikkerhet at det skal finnes en relasjon mellom to tabeller, oppretter den ikke relasjonen automatisk. I så fall må du gjøre det.

La oss gå gjennom en rask opplæring for bedre å vise deg hvordan relasjoner fungerer i Power BI Desktop.

Tips

Du kan fullføre denne leksjonen selv:

  1. Kopier følgende ProjectHours-tabell til et Excel-regneark (unntatt tittelen), merk alle cellene, og velg deretter Sett inn>tabell.
  2. Velg OK i dialogboksen Opprett tabell.
  3. Merk en tabellcelle, velg Tabellutformingstabellnavn>, og skriv deretter inn ProjectHours.
  4. Gjør det samme for CompanyProject-tabellen .
  5. Importer dataene ved hjelp av Hent data i Power BI Desktop. Velg de to tabellene som en datakilde, og velg deretter Last inn.

Den første tabellen, ProjectHours, er en oversikt over arbeidsbilletter som registrerer antall timer en person har arbeidet med et bestemt prosjekt.

ProjectHours

Billett SubmittedBy Timer Prosjekt DateSubmit
1001 Brewer, Alan 22 Blå 1/1/2013
1 002 Brewer, Alan 26 Rød 2/1/2013
1003 Ito, Shu 34 Gul 12/4/2012
1004 Brewer, Alan 13 Oransje 1/2/2012
1005 Bowen, Eli 29 Purpur 10/1/2013
1006 Bento, Nuno 35 Grønn 2/1/2013
1007 Hamilton, David 10 Gul 10/1/2013
1008 Han, Mu 28 Oransje 1/2/2012
1009 Ito, Shu 22 Purpur 2/1/2013
1010 Bowen, Eli 28 Grønn 10/1/2013
1011 Bowen, Eli 9 Blå 10/15/2013

Denne andre tabellen, CompanyProject, er en liste over prosjekter med tilordnet prioritet: A, B eller C.

CompanyProject

ProjName Prioritet
Blå A
Rød F
Grønn C
Gul C
Purpur F
Oransje C

Legg merke til at hver tabell har en prosjektkolonne. Hver er litt forskjellig, men verdiene ser ut som de er de samme. Den forskjellen er viktig, og vi kommer tilbake til det snart.

Nå som vi har importert de to tabellene til en modell, kan vi opprette en rapport. Det første vi ønsker å få, er antall timer som sendes inn av prosjektprioritet, så vi velger Prioritet og timer fra Felter-ruten .

Screenshot of the Priority and Hours fields selected from the Fields pane.

Hvis vi ser på tabellen i rapportlerretet, ser du at antall timer er 256 for hvert prosjekt, som også er totalen. Dette tallet er tydeligvis ikke riktig. Hvorfor? Det er fordi vi ikke kan beregne en totalsum av verdier fra én tabell (timer i prosjekttabellen), delt opp av verdier i en annen tabell (Prioritet i CompanyProject-tabellen) uten en relasjon mellom disse to tabellene.

Så la oss opprette en relasjon mellom disse to tabellene.

Husker du kolonnene vi så i begge tabellene med et prosjektnavn, men med verdier som ser like ut? Vi bruker disse to kolonnene til å opprette en relasjon mellom tabellene våre.

Hvorfor disse kolonnene? Hvis vi ser på Prosjekt-kolonnen i ProjectHours-tabellen , ser vi verdier som Blå, Rød, Gul, Oransje og så videre. Vi ser faktisk flere rader som har samme verdi. I praksis har vi mange fargeverdier for Project.

Hvis vi ser på ProjName-kolonnen i CompanyProject-tabellen , ser vi at det bare finnes én av hver av fargeverdiene for prosjektnavnet. Hver fargeverdi i denne tabellen er unik, og det er viktig, fordi vi kan opprette en relasjon mellom disse to tabellene. I dette tilfellet en mange-til-én-relasjon. I en mange-til-én-relasjon må minst én kolonne i én av tabellene inneholde unike verdier. Det finnes flere alternativer for enkelte relasjoner, som vi skal se på senere. La oss nå opprette en relasjon mellom prosjektkolonnene i hver av våre to tabeller.

Slik oppretter du den nye relasjonen

  1. Velg Behandle relasjoner fra Modellering-fanen .

  2. Velg Ny i Behandle relasjoner for å åpne dialogboksen Opprett relasjon, der vi kan velge tabeller, kolonner og eventuelle andre innstillinger vi ønsker for relasjonen.

  3. Velg ProjectHours som den første tabellen i den første rullegardinlisten, og velg deretter Project-kolonnen . Denne siden er den mange siden av relasjonen vår.

  4. I den andre rullegardinlisten er CompanyProject forhåndsvalgt som den andre tabellen. Velg ProjName-kolonnen. Denne siden er den ene siden av relasjonen vår.

  5. Godta standardinnstillingene for relasjonsalternativene, og velg deretter OK.

    Screenshot of the Create relationship dialog box.

  6. Velg Lukk i dialogboksen Behandle relasjoner.

Når det gjelder full fremlegging, har du nettopp opprettet denne relasjonen på den harde måten. Du kan ha valgt Automatisk gjenkjenning i dialogboksen Behandle relasjoner . Automatisk gjenkjenning ville faktisk automatisk ha opprettet relasjonen for deg når du lastet inn dataene hvis begge kolonnene hadde samme navn.

La oss nå se på tabellen i rapportlerretet på nytt.

Screenshot of the Priority and Hours fields selected from the Fields pane with new relationship.

Det ser mye bedre ut, ikke sant?

Når vi oppsummerer timer etter prioritet, ser Power BI Desktop etter hver forekomst av de unike fargeverdiene i oppslagstabellen CompanyProject , ser etter hver forekomst av hver av disse verdiene i ProjectHours-tabellen , og beregner deretter en totalsum for hver unike verdi.

Med automatisk gjenkjenning trenger du kanskje ikke engang å gjøre så mye.

Forstå flere alternativer

Når en relasjon opprettes, enten med automatisk gjenkjenning eller en du oppretter manuelt, konfigurerer Power BI Desktop automatisk flere alternativer basert på dataene i tabellene. Disse ekstra relasjonsalternativene er plassert i den nedre delen av dialogboksene Opprett relasjon og Rediger relasjon .

Screenshot of the lower portion of the Create relationship dialog box showing Cardinality and Cross filter direction options.

Power BI angir vanligvis disse alternativene automatisk, og du trenger ikke å justere dem. Men det finnes flere situasjoner der du kanskje vil konfigurere disse alternativene selv.

Automatiske relasjonsoppdateringer

Du kan administrere hvordan Power BI behandler og justerer automatisk relasjoner i rapporter og modeller. Hvis du vil angi hvordan Power BI håndterer relasjonsalternativer, velger du Alternativer for filalternativer>og innstillinger> fra Power BI Desktop, og deretter velger du Datainnlasting i ruten til venstre. Alternativene for relasjoner vises.

Screenshot of the Options box showing the Relationships settings in the Data Load tab.

Det finnes tre alternativer som kan velges og aktiveres:

  • Importer relasjoner fra datakilder ved første innlasting: Dette alternativet er valgt som standard. Når det er valgt, ser Power BI etter relasjoner som er definert i datakilden, for eksempel sekundærnøkkel-/primærnøkkelrelasjoner i datalageret. Hvis slike relasjoner finnes, speiles de inn i Power BI-datamodellen når du først laster inn data. Med dette alternativet kan du raskt begynne å arbeide med modellen, i stedet for å kreve at du finner eller definerer disse relasjonene selv.

  • Oppdater eller slett relasjoner når du oppdaterer data: Dette alternativet er ikke merket som standard. Hvis du velger det, ser Power BI etter endringer i datakilderelasjoner når den semantiske modellen oppdateres. Hvis disse relasjonene endres eller fjernes, speiler Power BI disse endringene i sin egen datamodell, og oppdaterer eller sletter dem for å samsvare.

    Advarsel!

    Hvis du bruker sikkerhet på radnivå som er avhengig av de definerte relasjonene, anbefaler vi ikke at du velger dette alternativet. Hvis du fjerner en relasjon som RLS-innstillingene er avhengige av, kan modellen bli mindre sikker.

  • Automatisk gjenkjenning av nye relasjoner etter at data er lastet inn: Dette alternativet er beskrevet i Automatisk gjenkjenning under innlasting.

Fremtidige oppdateringer av dataene krever en annen kardinalitet

Vanligvis kan Power BI Desktop automatisk bestemme den beste kardinaliteten for relasjonen. Hvis du trenger å overstyre den automatiske innstillingen, fordi du vet at dataene vil endres i fremtiden, kan du endre dem med kardinalitetskontrollen. La oss se på et eksempel der vi må velge en annen kardinalitet.

CompanyProjectPriority-tabellen er en liste over alle firmaprosjekter og deres prioritet. ProjectBudget-tabellen er settet med prosjekter som et budsjett er godkjent for.

CompanyProjectPriority

ProjName Prioritet
Blå A
Rød F
Grønn C
Gul C
Purpur F
Oransje C

ProjectBudget

Godkjente prosjekter Budsjetttildeling Tildelingsdato
Blå 40 000 12/1/2012
Rød 100,000 12/1/2012
Grønn 50,000 12/1/2012

Hvis vi oppretter en relasjon mellom kolonnen Godkjente prosjekter i ProjectBudget-tabellen og ProjectName-kolonnen i Tabellen CompanyProjectPriority , angir Power BI automatisk kardinalitet til én (1:1) og kryssfiltreringsretning til begge.

Screenshot of the Create relationship dialog box with Cardinality to One to one (1:1) and Cross filter direction to Both.

Grunnen til at Power BI gjør disse innstillingene er fordi den beste kombinasjonen av de to tabellene er som følger for Power BI Desktop:

ProjName Prioritet Budsjetttildeling Tildelingsdato
Blå A 40 000 12/1/2012
Rød B 100,000 12/1/2012
Grønn C 50,000 12/1/2012
Gul C

Purpur F

Oransje C

Det finnes en én-til-én-relasjon mellom våre to tabeller fordi det ikke finnes noen gjentatte verdier i den kombinerte tabellens ProjName-kolonne . ProjName-kolonnen er unik fordi hver verdi bare forekommer én gang. Derfor kan radene fra de to tabellene kombineres direkte uten duplisering.

La oss imidlertid si at du vet at dataene endres neste gang du oppdaterer dem. En oppdatert versjon av ProjectBudget-tabellen har nå flere rader for de blå og røde prosjektene:

ProjectBudget

Godkjente prosjekter Budsjetttildeling Tildelingsdato
Blå 40 000 12/1/2012
Rød 100,000 12/1/2012
Grønn 50,000 12/1/2012
Blå 80,000 6/1/2013
Rød 90,000 6/1/2013

Disse ekstra radene betyr at den beste kombinasjonen av de to tabellene nå ser slik ut:

ProjName Prioritet Budsjetttildeling Tildelingsdato
Blå A 40 000 12/1/2012
Rød B 100,000 12/1/2012
Grønn C 50,000 12/1/2012
Gul C

Purpur F

Oransje C

Blå A 80000 6/1/2013
Rød F 90 000 6/1/2013

I denne nye kombinerte tabellen har ProjName-kolonnen gjentatte verdier. De to opprinnelige tabellene har ikke en én-til-én-relasjon når tabellen er oppdatert. I dette tilfellet, fordi vi vet at disse fremtidige oppdateringene vil føre til at ProjName-kolonnen har duplikater, ønsker vi å angi kardinaliteten til mange til én (*:1), med mange-siden ProjectBudget og den ene siden på CompanyProjectPriority.

Justere kryssfiltreringsretning for et komplekst sett med tabeller og relasjoner

For de fleste relasjoner er kryssfiltreringsretningen satt til Begge. Det finnes imidlertid noen mer uvanlige tilfeller der du kanskje må angi dette alternativet annerledes enn standardinnstillingen. Et eksempel er hvis du importerer en modell fra en eldre versjon av Power Pivot, der hver relasjon er satt til én retning.

Begge-innstillingen gjør det mulig for Power BI Desktop å behandle alle aspekter av tilkoblede tabeller som om de er én enkelt tabell. Det finnes imidlertid noen situasjoner der Power BI Desktop ikke kan angi en relasjons kryssfiltreringsretning til Begge og også beholde et entydig sett med standarder tilgjengelig for rapporteringsformål. Hvis en kryssfiltreringsretning for en relasjon ikke er satt til Begge, er det vanligvis fordi det ville skape tvetydighet. Hvis standardinnstillingen for kryssfiltrering ikke fungerer for deg, kan du prøve å angi den til en bestemt tabell eller begge deler.

Kryssfiltrering i én retning fungerer i mange situasjoner. Hvis du faktisk har importert en modell fra Power Pivot i Excel 2013 eller tidligere, blir alle relasjonene satt til én retning. Én retning betyr at filtreringsvalg i tilkoblede tabeller fungerer i tabellen der aggregasjonsarbeid skjer. Noen ganger kan det være litt vanskelig å forstå kryssfiltrering, så la oss se på et eksempel.

Med kryssfiltrering i én retning, hvis du oppretter en rapport som oppsummerer prosjekttimene, kan du deretter velge å summere (eller filtrere) etter CompanyProject-tabellen og prioritetskolonnen eller CompanyEmployee-tabellen og bykolonnen. Hvis du imidlertid vil telle antall ansatte per prosjekter (et mindre vanlig spørsmål), vil det ikke fungere. Du får en kolonne med verdier som alle er like. I eksemplet nedenfor er begge relasjonens kryssfiltreringsretning satt til én retning: mot ProjectHours-tabellen . I Verdier-brønnener Prosjekt-feltet satt til Antall:

Screenshot of the visualization tab used with the Employee and Project fields.

Filterspesifikasjonen vil flyte fra CompanyProject til ProjectHours (som vist i bildet nedenfor), men den flyter ikke opp til CompanyEmployee.

Diagram of a cross filtering example with flow from CompanyProject to ProjectHours.

Hvis du imidlertid angir kryssfiltreringsretningen til Begge, vil den fungere. Begge-innstillingen tillater at filterspesifikasjonen flyter opp til CompanyEmployee.

Diagram of a cross filtering example with flow both ways

Med kryssfiltreringsretningen satt til Begge, ser rapporten vår nå riktig ut:

Screenshot of cross filtering direction set to Both.

Kryssfiltrering av begge retninger fungerer bra for et mønster av tabellrelasjoner, for eksempel mønsteret som ble vist tidligere. Dette skjemaet kalles vanligvis et stjerneskjema, slik som dette:

Diagram of cross filtering both directions in star schema.

Kryssfiltreringsretning fungerer ikke bra med et mer generelt mønster som ofte finnes i databaser, som i dette diagrammet:

Diagram of cross filtering in both directions on a database pattern.

Hvis du har et tabellmønster som dette, med løkker, kan kryssfiltrering opprette et tvetydig sett med relasjoner. Hvis du for eksempel oppsummerer et felt fra TableX og deretter velger å filtrere etter et felt på TableY, er det ikke klart hvordan filteret skal bevege seg, gjennom den øverste tabellen eller den nederste tabellen. Et vanlig eksempel på denne typen mønster er med TableX som en salgstabell med faktiske data og for tabellY å være budsjettdata. Deretter er tabellene i midten oppslagstabeller som begge tabellene bruker, for eksempel divisjon eller område.

Som med aktive/inaktive relasjoner tillater ikke Power BI Desktop at en relasjon settes til Begge hvis det vil skape tvetydighet i rapporter. Det finnes flere måter du kan håndtere denne situasjonen på. Her er de to vanligste:

  • Slett eller merk relasjoner som inaktive for å redusere tvetydighet. Deretter kan du kanskje angi en kryssfiltrering av relasjoner som Begge.
  • Hent inn en tabell to ganger (med et annet navn den andre gangen) for å eliminere løkker. Dette gjør mønsteret for relasjoner som et stjerneskjema. Med et stjerneskjema kan alle relasjonene settes til Begge.

Feil aktiv relasjon

Når Power BI Desktop automatisk oppretter relasjoner, oppstår det noen ganger mer enn én relasjon mellom to tabeller. Når denne situasjonen oppstår, er bare én av relasjonene satt til å være aktive. Den aktive relasjonen fungerer som standardrelasjon, slik at når du velger felt fra to forskjellige tabeller, kan Power BI Desktop automatisk opprette en visualisering for deg. I noen tilfeller kan imidlertid den automatisk valgte relasjonen være feil. Bruk dialogboksen Behandle relasjoner til å angi en relasjon som aktiv eller inaktiv, eller angi den aktive relasjonen i dialogboksen Rediger relasjon.

For å sikre at det finnes en standardrelasjon, tillater Power BI Desktop bare én aktiv relasjon mellom to tabeller om gangen. Derfor må du først angi gjeldende relasjon som inaktiv og deretter angi relasjonen du vil skal være aktiv.

La oss se på et eksempel. Den første tabellen er ProjectTickets, og den andre tabellen er EmployeeRole.

ProjectTickets

Billett OpenedBy SubmittedBy Timer Prosjekt DateSubmit
1001 Perham, Tom Brewer, Alan 22 Blå 1/1/2013
1 002 Roman, Daniel Brewer, Alan 26 Rød 2/1/2013
1003 Roth, Daniel Ito, Shu 34 Gul 12/4/2012
1004 Perham, Tom Brewer, Alan 13 Oransje 1/2/2012
1005 Roman, Daniel Bowen, Eli 29 Purpur 10/1/2013
1006 Roth, Daniel Bento, Nuno 35 Grønn 2/1/2013
1007 Roth, Daniel Hamilton, David 10 Gul 10/1/2013
1008 Perham, Tom Han, Mu 28 Oransje 1/2/2012
1009 Roman, Daniel Ito, Shu 22 Purpur 2/1/2013
1010 Roth, Daniel Bowen, Eli 28 Grønn 10/1/2013
1011 Perham, Tom Bowen, Eli 9 Blå 10/15/2013

EmployeeRole

Ansatt Rolle
Bento, Nuno Prosjektleder
Bowen, Eli Prosjektledelse
Brewer, Alan Prosjektleder
Hamilton, David Prosjektledelse
Han, Mu Prosjektledelse
Ito, Shu Prosjektledelse
Perham, Tom Prosjektsponsor
Roman, Daniel Prosjektsponsor
Roth, Daniel Prosjektsponsor

Det finnes faktisk to relasjoner her:

  • Mellom Ansatt i EmployeeRole-tabellen og SubmittedBy i ProjectTickets-tabellen .
  • Mellom OpenedBy i ProjectTickets-tabellen og Ansatt i EmployeeRole-tabellen .

Screenshot of a two-relationship example.

Hvis vi legger til begge relasjonene i modellen (OpenedBy først), viser dialogboksen Behandle relasjoner at OpenedBy er aktiv:

Screenshot of a OpenedBy active in the Manage relationships dialog box.

Hvis vi nå oppretter en rapport som bruker rolle - og ansattfelt fra EmployeeRole, og Timer-feltet fra ProjectTickets i en tabellvisualisering i rapportlerretet , ser vi bare prosjektsponsorer fordi de er de eneste som åpnet en prosjektbillett.

Screenshot shows the Employee, Role, and Hours fields selected.

Vi kan endre den aktive relasjonen og få SubmittedBy i stedet for OpenedBy. Fjern merket for ProjectTickets(OpenedBy) til EmployeeRole(Employee) i Administrer relasjoner, og kontroller deretter employeeRole(Employee) til Project Tickets(SubmittedBy)-relasjonen.

Screenshot of changing the active relationship in the Manage relationship dialog box.

Se alle relasjonene dine i Relasjonsvisning

Noen ganger har modellen flere tabeller og komplekse relasjoner mellom seg. Relasjonsvisning i Power BI Desktop viser alle relasjonene i modellen, retningen og kardinaliteten i et diagram som er enkelt å forstå og tilpasse.

Hvis du vil ha mer informasjon, kan du se Arbeide med relasjonsvisning i Power BI Desktop.

Feilsøking

Denne delen gir veiledning og feilsøkingsinformasjon når du arbeider med relasjoner i Power BI.

Relasjoner mellom felt kan ikke fastslås

Power BI forsøker å vise relevante data i visualobjekter ved å utlede relasjonene fra modellen som brukes. Noen ganger er ikke slike slutninger åpenbare, og du kan bli overrasket over å se en feil i visualobjektet, noe som indikerer at det ikke er noen relasjon mellom bestemte kolonner.

Hvis du vil forklare hvordan Power BI bestemmer om felt er relatert, kan vi bruke en eksempelmodell til å illustrere noen scenarioer i de følgende delene. Bildet nedenfor viser eksempelmodellen vi skal bruke i eksempelscenarioene.

Screenshot of a sample model used in troubleshooting scenarios.

Scenario 1: Tradisjonelt stjerneskjema og ingen målbetingelse angitt. Med henvisning til eksempelmodellen i det forrige bildet, la oss først se på høyre halvdel av bildene med tabellene Leverandør – Kjøp – Produkt . Dette eksemplet er et tradisjonelt stjerneskjema med faktatabellen (Kjøp) og to dimensjonstabeller (produkt og leverandør). Relasjonen mellom dimensjonstabellene og faktatabellen er 1 til Mange (ett produkt tilsvarer mange kjøp, én leverandør tilsvarer mange kjøp). I denne typen skjema kan vi svare på spørsmål som Hva salg har vi for produkt X? og Hvilke salg har vi for Leverandør Y? og Hvilke produkter selger leverandør Y?

Hvis vi ønsker å korrelere produkter og leverandører, kan vi gjøre det ved å se på Kjøp-tabellen for å se om det finnes en oppføring med samme produkt og leverandør. En eksempelspørring kan se ut som følgende eksempel:

Correlate Product[Color] with Vendor[Name] where CountRows(Purchases)>0

Er where CountRows(Purchases)>0 en implisitt begrensning som Power BI legger til for å sikre at relevante data returneres. Ved å gjøre denne korrelasjonen gjennom Kjøp-tabellen , kan vi returnere sammenkoblinger av produktleverandør som har minst én oppføring i en faktatabell, sammenkoblinger som gir mening fra dataperspektivet. Du kan forvente at eventuelle nonsensiske kombinasjoner av produkt-leverandør som det aldri har vært et salg (som ville være ubrukelig for analyse) ikke vil bli vist.

Scenario 2: Tradisjonell stjerneskjema og målbetingelse angitt. I det forrige eksemplet i scenario 1, hvis brukeren gir en begrensning i form av summert kolonne (sum/gjennomsnitt/antall kjøpsantall, for eksempel) eller et modellmål (distinkt antall VendID), kan Power BI generere en spørring i form av følgende eksempel:

Correlate Product[Color] with Vendor[Name] where MeasureConstraint is not blank

I et slikt tilfelle forsøker Power BI å returnere kombinasjoner som har meningsfulle verdier for betingelsen som er angitt av brukeren (ikke tom). Power BI trenger ikke også å legge til sin egen implisitte begrensning for CountRows(Purchases)>0, for eksempel hvordan det ble gjort i forrige scenario 1, fordi begrensningen som ble gitt av brukeren er tilstrekkelig.

Scenario 3: Ikke-stjerneskjema og ingen målbetingelse angitt. I dette scenarioet fokuserer vi på midten av modellen, der vi har tabellene Salg – Produkt – Kjøp, der vi har én dimensjonstabell (Produkt) og to faktatabeller (Salg, Kjøp). Siden dette eksemplet ikke er et stjerneskjema, kan vi ikke svare på samme type spørsmål som vi hadde i scenario 1. La oss si at vi prøver å korrelere kjøp og salg, siden kjøp har en mange-til-1-relasjon med produktet, og produktet har en 1-til-mange-relasjon med salg. Salg og kjøp er indirekte mange for mange. Vi kan koble ett produkt til mange kjøp og ett produkt til mange salg, men vi kan ikke koble ett salg til mange kjøp eller omvendt. Vi kan bare koble mange kjøp til mange salg.

I denne situasjonen, hvis vi prøver å kombinere Kjøp[VenID] og Salg[CustID] i et visualobjekt, har ikke Power BI en konkret begrensning det kan gjelde, på grunn av mange til mange-relasjonen mellom disse tabellene. Selv om det kan være egendefinerte begrensninger (ikke nødvendigvis stammer fra relasjonene som er etablert i modellen) som kan brukes for ulike scenarier, kan ikke Power BI utlede en standardbetingelse utelukkende basert på relasjonene. Hvis Power BI prøvde å returnere alle kombinasjoner av de to tabellene, ville det opprette en stor krysskobling og returnere ikke-relevante data. I stedet for dette oppstår Power BI en feil i visualobjektet, for eksempel følgende.

Screenshot of an error dialog when relationship can’t be inferred. Alternatively, Screenshot of an error dialog where relationship isn’t inferred.

Scenario 4: Ikke-stjerneskjema og målbetingelse angitt. Hvis vi tar eksemplet fra scenario 3 og legger til en angitt brukerbetingelse i form av en oppsummert kolonne (for eksempel antall produkter[ProdID] eller et modellmål (Salg[Totalt antall]), kan Power BI generere en spørring i form av Korreler kjøp[VenID] og Salg[CustID] der MeasureConstraint ikke er tom.

I dette tilfellet respekterer Power BI brukerens begrensning som den eneste betingelsen Power BI må bruke, og returnere kombinasjonene som produserer ikke-tomme verdier for den. Brukeren har veiledet Power BI til scenarioet den ønsker, og Power BI bruker veiledningen.

Scenario 5: Når en målbetingelse er angitt, men den er delvis relatert til kolonnene. Det finnes tilfeller der målbetingelsen for brukeren ikke er helt relatert til alle kolonnene i visualobjektet. Et modellmål relaterer alltid alt. Power BI behandler dette scenarioet som en svart boks når du prøver å finne relasjoner mellom kolonner i visualobjektet, og det forutsetter at brukeren vet hva de gjør ved å bruke det. Oppsummerte kolonner i form av Summer, Gjennomsnitt og lignende sammendrag valgt fra brukergrensesnittet kan imidlertid bare være relatert til et delsett av kolonnene/tabellene som brukes i visualobjektet, basert på relasjonene i tabellen som kolonnen tilhører. Som sådan gjelder betingelsen for enkelte sammenkoblinger av kolonner, men ikke for alle. I så fall forsøker Power BI å finne standardbetingelser som kan gjelde for kolonnene som ikke er relatert av den angitte betingelsen for brukeren (for eksempel i scenario 1). Hvis Power BI ikke finner noen, returneres følgende feil.

Screenshot of an error dialog when Power BI can’t find default constraints.

Løse relasjonsfeil

Når du ser kan ikke bestemme relasjoner mellom feltfeilen , kan du utføre følgende trinn for å forsøke å løse feilen:

  1. Kontroller modellen din. Er den riktig konfigurert for spørsmålstypene du vil besvares fra analysen? Kan du endre noen av relasjonene mellom tabeller? Kan du unngå å opprette en indirekte mange til mange?

    Vurder å konvertere det omvendte V-figurskjemaet til to tabeller, og bruk en direkte mange-til-mange-relasjon mellom dem som beskrevet i bruk mange-mange-relasjoner i Power BI Desktop.

  2. Legg til en betingelse i visualobjektet i form av en oppsummert kolonne eller et modellmål.

  3. Hvis en summert kolonne legges til og det fremdeles er en feil, kan du vurdere å bruke et modellmål.

Hvis du vil ha mer informasjon om modeller og relasjoner, kan du se følgende artikler: