Skapa och hantera relationer i Power BI Desktop

När du har flera tabeller är chansen stor att du kommer att göra en del analys med hjälp av data från alla dessa tabeller. Relationerna mellan dessa tabeller är nödvändiga för att korrekt beräkna resultat och visa rätt information i dina rapporter. I de flesta fall behöver du inte göra något. Funktionen identifiera automatiskt gör det åt dig. Ibland kan du dock behöva skapa relationer själv eller göra ändringar i en relation. Hur som helst är det viktigt att förstå relationer i Power BI Desktop och hur du skapar och redigerar dem.

Identifiera automatiskt under inläsning

Om du kör frågor mot två eller flera tabeller samtidigt, när data läses in, försöker Power BI Desktop hitta och skapa relationer åt dig. Relationsalternativen Kardinalitet, Korsfilterriktning och Gör den här relationen aktiv anges automatiskt. Power BI Desktop tittar på kolumnnamnen i de tabeller som du frågar efter för att avgöra om det finns några potentiella relationer. Om det finns det skapas dessa relationer automatiskt. Om Power BI Desktop inte kan avgöra med hög konfidensnivå finns det en matchning, det skapar inte relationen. Du kan dock fortfarande använda dialogrutan Hantera relationer för att manuellt skapa eller redigera relationer.

Skapa en relation med autodetect

På fliken Modellering väljer du Hantera relationer>Identifiera automatiskt.

Animation showing how to create a relationship with autodetect.

Skapa en relation manuellt

  1. På fliken Modellering väljer du Hantera relationer>Ny.

  2. I dialogrutan Skapa relation i den första listrutan i tabellen väljer du en tabell. Välj den kolumn som du vill använda i relationen.

  3. I listrutan i den andra tabellen väljer du den andra tabell som du vill använda i relationen. Välj den andra kolumnen som du vill använda och välj sedan OK.

    Animation showing how to create a manual relationship.

Som standard konfigurerar Power BI Desktop automatiskt alternativen Kardinalitet (riktning), Korsfilterriktning och Gör den här relationen aktiv för din nya relation. Du kan dock ändra de här inställningarna om det behövs. Mer information finns i Förstå ytterligare alternativ.

Om ingen av de tabeller som valts för relationen har unika värden visas följande fel: En av kolumnerna måste ha unika värden. Minst en tabell i en relation måste ha en distinkt, unik lista med nyckelvärden, vilket är ett vanligt krav för alla relationsdatabastekniker.

Om du stöter på det felet finns det några sätt att åtgärda problemet:

  • Använd Ta bort dubbletter för att skapa en kolumn med unika värden. Nackdelen med den här metoden är att du kan förlora information när dubbletter av rader tas bort. Ofta dupliceras en nyckel (rad) av goda skäl.
  • Lägg till en mellanliggande tabell som består av listan med distinkta nyckelvärden i modellen, som sedan länkas till båda de ursprungliga kolumnerna i relationen.

Mer information finns i detta blogginlägg.

I diagramlayouterna för modellvyn kan du också dra och släppa en kolumn från en tabell till en kolumn i en annan tabell för att skapa en relation.

Redigera en relation

Det finns två sätt att redigera en relation i Power BI.

Den första metoden för att redigera en relation är att använda redigeringsrelationer i fönstret Egenskaper i modellvyn, där du kan välja valfri rad mellan två tabeller för att se relationsalternativen i fönstret Egenskaper . Se till att expandera fönstret Egenskaper för att se relationsalternativen.

Screenshot of adjusting relationships in the properties pane.

Du kan också se en videodemonstration av redigering av relationer i fönstret Egenskaper .

Den andra metoden för att redigera en relation är att använda dialogrutan Relationsredigerare, som du kan öppna på många olika sätt i Power BI Desktop. I följande lista visas olika sätt att öppna dialogrutan Relationsredigerare:

Gör något av följande från rapportvyn :

  • Välj menyfliksområdet Modellering Hantera relationer, välj sedan relationen och välj Redigera.>
  • Välj en tabell i listan Fält och välj sedan menyfliksområdet> Tabellverktyg Hantera relationer, välj sedan relationen och välj sedan Redigera.

I vyn Data väljer du menyfliksområdet Tabellverktyg Hantera relationer, väljer sedan relationen och väljer sedan Redigera.>

Gör något av följande i modellvyn :

  • Välj menyfliksområdet Start Hantera relationer, välj sedan relationen och välj sedan Redigera.>
  • Dubbelklicka på valfri rad mellan två tabeller.
  • Högerklicka på valfri rad mellan två tabeller och välj sedan Egenskaper.
  • Välj en rad mellan två tabeller och välj sedan Öppna relationsredigeraren i fönstret Egenskaper .

Slutligen kan du också redigera en relation från valfri vy, högerklicka eller välja ellipsen för att komma till snabbmenyn i en tabell, sedan välja Hantera relationer, välja relationen och sedan redigera

Följande bild visar en skärmbild av fönstret Redigera relation .

Screenshot of the edit relationship window.

Redigera relationer med olika metoder

Att använda dialogrutan Redigera relationer är en mer guidad upplevelse för att redigera relationer i Power BI och är för närvarande i förhandsversion. Du kan se en förhandsgranskning av data i varje tabell. När du väljer olika kolumner validerar fönstret automatiskt relationen och erbjuder lämpliga kardinalitets- och korsfilterval.

Att redigera relationer i fönstret Egenskaper är en effektiv metod för att redigera relationer i Power BI. Du ser bara de tabellnamn och kolumner som du kan välja mellan, du visas inte med en dataförhandsgranskning och de relationsval du gör verifieras bara när du väljer Tillämpa ändringar. Med hjälp av fönstret Egenskaper och dess effektiviserade metod minskar antalet frågor som genereras när du redigerar en relation, vilket kan vara viktigt för stordatascenarier, särskilt när du använder DirectQuery-anslutningar. Relationer som skapas med hjälp av fönstret Egenskaper kan också vara mer avancerade än de relationer som tillåts skapas i dialogrutan Redigera relationer.

Du kan också välja flera relationer i layouterna för modellvydiagram genom att trycka på Ctrl-tangenten och välja fler än en rad för att välja flera relationer. Vanliga egenskaper kan redigeras i fönstret Egenskaper och Tillämpa ändringar bearbetar ändringarna i en transaktion.

Enkla eller flervalsrelationer kan också tas bort genom att trycka på Ta bort på tangentbordet. Du kan inte ångra borttagningsåtgärden, så en dialogruta uppmanar dig att bekräfta borttagningen av relationerna.

Viktigt!

Redigering av relationer i egenskapsfönstrets funktion är för närvarande i förhandsversion. I förhandsversionen kommer funktionerna och dokumentationen sannolikt att ändras. Du måste aktivera den här funktionen i Power BI Desktop genom att gå till Arkivalternativ > och inställningar > Alternativ > Förhandsversionsfunktioner och i avsnittet GLOBAL markerar du kryssrutan bredvid fönstret Relation.

Konfigurera fler alternativ

När du skapar eller redigerar en relation kan du konfigurera fler alternativ. Som standard konfigurerar Power BI Desktop automatiskt fler alternativ baserat på dess bästa gissning, vilket kan vara olika för varje relation baserat på data i kolumnerna.

Kardinalitet

Alternativet Kardinalitet kan ha någon av följande inställningar:

Många till en (*:1): En många-till-en-relation är den vanligaste standardtypen för relationen. Det innebär att kolumnen i en viss tabell kan ha mer än en instans av ett värde, och den andra relaterade tabellen, som ofta kallas uppslagstabell, har bara en instans av ett värde.

En till en (1:1): I en en-till-en-relation har kolumnen i en tabell bara en instans av ett visst värde, och den andra relaterade tabellen har bara en instans av ett visst värde.

En till många (1:*): I en en-till-många-relation har kolumnen i en tabell bara en instans av ett visst värde, och den andra relaterade tabellen kan ha mer än en instans av ett värde.

Många till många (*:*): Med sammansatta modeller kan du upprätta en många-till-många-relation mellan tabeller, vilket tar bort kraven på unika värden i tabeller. Den tar också bort tidigare lösningar, som att introducera nya tabeller endast för att upprätta relationer. Mer information finns i Relationer med kardinaliteten många-många.

Mer information om när du ska ändra kardinalitet finns i Förstå ytterligare alternativ.

Korsfilterriktning

Alternativet Korsfilterriktning kan ha följande inställningar:

Båda: I filtreringssyfte behandlas båda tabellerna som om de vore en enda tabell. Inställningen Båda fungerar bra med en enda tabell som har många uppslagstabeller som omger den. Ett exempel är en tabell med faktiska försäljningar med en uppslagstabell för avdelningen. Den här konfigurationen kallas ofta för en star-schemakonfiguration (en central tabell med flera uppslagstabeller). Men om du har två eller flera tabeller som också har uppslagstabeller (med några gemensamt) vill du inte använda inställningen Båda . Om du vill fortsätta med föregående exempel har du i det här fallet även en budgetförsäljningstabell som registrerar målbudgeten för varje avdelning. Och avdelningstabellen är ansluten till både försäljnings- och budgettabellen. Undvik inställningen Båda för den här typen av konfiguration.

Enkel: Den vanligaste standardriktningen, vilket innebär att filtreringsalternativ i anslutna tabeller fungerar i tabellen där värden aggregeras. Om du importerar en Power Pivot i Excel 2013 eller tidigare datamodell har alla relationer en enda riktning.

Mer information om när du ska ändra korsfilterriktning finns i Förstå ytterligare alternativ.

Aktivera den här relationen

När den är markerad fungerar relationen som den aktiva standardrelationen. I fall där det finns mer än en relation mellan två tabeller ger den aktiva relationen ett sätt för Power BI Desktop att automatiskt skapa visualiseringar som innehåller båda tabellerna.

Mer information om när du ska göra en viss relation aktiv finns i Förstå ytterligare alternativ.

Förstå relationer

När du har anslutit två tabeller tillsammans med en relation kan du arbeta med data i båda tabellerna som om de vore en enda tabell. Du är sedan fri från att behöva oroa dig för relationsinformation eller platta ut tabellerna till en enda tabell innan du importerar dem. I många situationer kan Power BI Desktop automatiskt skapa relationer åt dig. Men om Power BI Desktop inte kan avgöra med hög grad av säkerhet att en relation mellan två tabeller ska finnas, skapar den inte automatiskt relationen. I så fall måste du göra det.

Nu ska vi gå igenom en snabb självstudie för att bättre visa hur relationer fungerar i Power BI Desktop.

Dricks

Du kan slutföra den här lektionen själv:

  1. Kopiera följande ProjectHours-tabell till ett Excel-kalkylblad (exklusive rubriken), markera alla celler och välj sedan Infoga>tabell.
  2. I dialogrutan Skapa tabell väljer du OK.
  3. Välj valfri tabellcell, välj Tabelldesigntabellnamn> och ange sedan ProjectHours.
  4. Gör samma sak för tabellen CompanyProject .
  5. Importera data med hjälp av Hämta data i Power BI Desktop. Välj de två tabellerna som en datakälla och välj sedan Läs in.

Den första tabellen, ProjectHours, är en post med arbetsbiljetter som registrerar antalet timmar som en person har arbetat med ett visst projekt.

ProjectHours

Biljett SubmittedBy Timmar Projekt DateSubmit
1001 Brewer, Alan 22 Blått 1/1/2013
1002 Brewer, Alan 26 Röd 2/1/2013
1003 Ito, Shu 34 Gul 12/4/2012
1004 Brewer, Alan 13 Orange 1/2/2012
1005 Bowen, Eli 29 Lila 10/1/2013
1006 Bento, Nuno 35 Grönt 2/1/2013
1007 Hamilton, David 10 Gul 10/1/2013
1008 Han, Mu 28 Orange 1/2/2012
1009 Ito, Shu 22 Lila 2/1/2013
1010 Bowen, Eli 28 Grönt 10/1/2013
1011 Bowen, Eli 9 Blått 10/15/2013

Den andra tabellen, CompanyProject, är en lista över projekt med en tilldelad prioritet: A, B eller C.

CompanyProject

ProjName Prioritet
Blått A
Röd F
Grönt C
Gul C
Lila F
Orange C

Observera att varje tabell har en projektkolumn. Var och en heter något annorlunda, men värdena ser ut som om de är desamma. Den skillnaden är viktig, och vi kommer tillbaka till den snart.

Nu när vi har importerat våra två tabeller till en modell ska vi skapa en rapport. Det första vi vill få är antalet timmar som skickas efter projektprioritet, så vi väljer Prioritet och Timmar i fönstret Fält .

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

Om vi tittar på tabellen på rapportarbetsytan ser du att antalet timmar är 256 för varje projekt, vilket också är summan. Det är uppenbart att det här talet inte är korrekt. Varför? Det beror på att vi inte kan beräkna summan av värden från en tabell (timmar i tabellen Projekt), utdelade efter värden i en annan tabell (Prioritet i tabellen CompanyProject) utan en relation mellan dessa två tabeller.

Så nu ska vi skapa en relation mellan de här två tabellerna.

Kommer du ihåg de kolumner som vi såg i båda tabellerna med ett projektnamn, men med värden som ser likadana ut? Vi använder dessa två kolumner för att skapa en relation mellan våra tabeller.

Varför dessa kolumner? Om vi tittar på kolumnen Projekt i tabellen ProjectHours ser vi värden som Blå, Röd, Gul, Orange och så vidare. Faktum är att vi ser flera rader som har samma värde. I själva verket har vi många färgvärden för Project.

Om vi tittar på kolumnen ProjName i tabellen CompanyProject ser vi att det bara finns ett av vart och ett av färgvärdena för projektnamnet. Varje färgvärde i den här tabellen är unikt, och det är viktigt eftersom vi kan skapa en relation mellan dessa två tabeller. I det här fallet en många-till-en-relation. I en många-till-en-relation måste minst en kolumn i en av tabellerna innehålla unika värden. Det finns några fler alternativ för vissa relationer, som vi ska titta på senare. Nu ska vi skapa en relation mellan projektkolumnerna i var och en av våra två tabeller.

Så här skapar du den nya relationen

  1. Välj Hantera relationer på fliken Modellering .

  2. I Hantera relationer väljer du Ny för att öppna dialogrutan Skapa relation , där vi kan välja tabeller, kolumner och andra inställningar som vi vill ha för relationen.

  3. I den första listrutan väljer du ProjectHours som den första tabellen och väljer sedan kolumnen Projekt . Den här sidan är den många sidan av vårt förhållande.

  4. I den andra listrutan är CompanyProject förvalt som den andra tabellen. Välj kolumnen ProjName. Den här sidan är den ena sidan av vårt förhållande.

  5. Acceptera standardvärdena för relationsalternativen och välj sedan OK.

    Screenshot of the Create relationship dialog box.

  6. I dialogrutan Hantera relationer väljer du Stäng.

För att få ett fullständigt avslöjande skapade du just den här relationen den hårda vägen. Du kunde ha valt Identifiera automatiskt i dialogrutan Hantera relationer . Faktum är att autodetect automatiskt skulle ha skapat relationen åt dig när du läste in data om båda kolumnerna hade samma namn.

Nu ska vi titta på tabellen på rapportarbetsytan igen.

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

Det ser mycket bättre ut, eller hur?

När vi summerar timmar efter prioritet letar Power BI Desktop efter varje instans av de unika färgvärdena i uppslagstabellen CompanyProject , letar efter varje instans av vart och ett av dessa värden i tabellen ProjectHours och beräknar sedan en summasumma för varje unikt värde.

Med autodetect kanske du inte ens behöver göra så mycket.

Förstå ytterligare alternativ

När en relation skapas, antingen med automatisk identifiering eller en som du skapar manuellt, konfigurerar Power BI Desktop automatiskt ytterligare alternativ baserat på data i dina tabeller. Dessa ytterligare relationsalternativ finns i den nedre delen av dialogrutorna Skapa relation och Redigera relation .

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

Power BI anger vanligtvis dessa alternativ automatiskt och du behöver inte justera dem. Men det finns flera situationer där du kanske vill konfigurera de här alternativen själv.

Automatiska relationsuppdateringar

Du kan hantera hur Power BI behandlar och automatiskt justerar relationer i dina rapporter och modeller. Om du vill ange hur Power BI hanterar relationsalternativ väljer du Alternativ för filalternativ>och inställningar> från Power BI Desktop och väljer sedan Datainläsning i det vänstra fönstret. Alternativen för Relationer visas.

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

Det finns tre alternativ som kan väljas och aktiveras:

  • Importera relationer från datakällor vid första inläsningen: Det här alternativet är markerat som standard. När den har valts söker Power BI efter relationer som definierats i datakällan, till exempel sekundärnyckel-/primärnyckelrelationer i informationslagret. Om sådana relationer finns speglas de i Power BI-datamodellen när du först läser in data. Med det här alternativet kan du snabbt börja arbeta med din modell i stället för att kräva att du hittar eller definierar dessa relationer själv.

  • Uppdatera eller ta bort relationer vid uppdatering av data: Det här alternativet är avmarkerat som standard. Om du väljer det söker Power BI efter ändringar i datakällans relationer när din semantiska modell uppdateras. Om dessa relationer ändras eller tas bort speglar Power BI ändringarna i sin egen datamodell, uppdaterar eller tar bort dem så att de matchar.

    Varning

    Om du använder säkerhet på radnivå som förlitar sig på de definierade relationerna rekommenderar vi inte att du väljer det här alternativet. Om du tar bort en relation som RLS-inställningarna förlitar sig på kan din modell bli mindre säker.

  • Identifiera nya relationer automatiskt när data har lästs in: Det här alternativet beskrivs i Identifiera automatiskt under inläsning.

Framtida uppdateringar av data kräver en annan kardinalitet

Normalt kan Power BI Desktop automatiskt fastställa den bästa kardinaliteten för relationen. Om du behöver åsidosätta den automatiska inställningen, eftersom du vet att data kommer att ändras i framtiden, kan du ändra dem med kardinalitetskontrollen . Nu ska vi titta på ett exempel där vi behöver välja en annan kardinalitet.

Tabellen CompanyProjectPriority är en lista över alla företagsprojekt och deras prioritet. Tabellen ProjectBudget är den uppsättning projekt som en budget har godkänts för.

CompanyProjectPriority

ProjName Prioritet
Blått A
Röd F
Grönt C
Gul C
Lila F
Orange C

ProjectBudget

Godkända projekt BudgetAllocation AllocationDate
Blått 40,000 12/1/2012
Röd 100,000 12/1/2012
Grönt 50,000 12/1/2012

Om vi skapar en relation mellan kolumnen Godkända projekt i tabellen ProjectBudget och kolumnen ProjectName i tabellen CompanyProjectPriority , anger Power BI automatiskt Kardinalitet till En till en (1:1) och Korsfilterriktning till Båda.

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

Anledningen till att Power BI gör de här inställningarna är att den bästa kombinationen av de två tabellerna för Power BI Desktop är följande:

ProjName Prioritet BudgetAllocation AllocationDate
Blått A 40,000 12/1/2012
Röd B 100,000 12/1/2012
Grönt C 50,000 12/1/2012
Gul C

Lila F

Orange C

Det finns en en-till-en-relation mellan våra två tabeller eftersom det inte finns några upprepande värden i den kombinerade tabellens ProjName-kolumn . Kolumnen ProjName är unik eftersom varje värde bara inträffar en gång. Därför kan raderna från de två tabellerna kombineras direkt utan duplicering.

Men anta att du vet att data ändras nästa gång du uppdaterar dem. En uppdaterad version av ProjectBudget-tabellen har nu ytterligare rader för de blå och röda projekten:

ProjectBudget

Godkända projekt BudgetAllocation AllocationDate
Blått 40,000 12/1/2012
Röd 100,000 12/1/2012
Grönt 50,000 12/1/2012
Blått 80 000 6/1/2013
Röd 90,000 6/1/2013

Dessa ytterligare rader innebär att den bästa kombinationen av de två tabellerna nu ser ut så här:

ProjName Prioritet BudgetAllocation AllocationDate
Blått A 40,000 12/1/2012
Röd B 100,000 12/1/2012
Grönt C 50,000 12/1/2012
Gul C

Lila F

Orange C

Blått A 80000 6/1/2013
Röd F 90000 6/1/2013

I den här nya kombinerade tabellen har kolumnen ProjName upprepade värden. De två ursprungliga tabellerna har ingen en-till-en-relation när tabellen har uppdaterats. I det här fallet, eftersom vi vet att dessa framtida uppdateringar kommer att orsaka att kolumnen ProjName har dubbletter, vill vi ange kardinaliteten till Många till en (*:1), med många-sidanProjectBudget och den ena sidan på CompanyProjectPriority.

Justera korsfilterriktningen för en komplex uppsättning tabeller och relationer

För de flesta relationer är korsfilterriktningen inställd på Båda. Det finns dock några mer ovanliga omständigheter där du kan behöva ange det här alternativet på ett annat sätt än standardinställningen. Ett exempel är om du importerar en modell från en äldre version av Power Pivot, där varje relation är inställd på en enda riktning.

Med inställningen Båda kan Power BI Desktop behandla alla aspekter av anslutna tabeller som om de vore en enda tabell. Det finns dock vissa situationer där Power BI Desktop inte kan ange en relations korsfilterriktning till Båda och även hålla en entydig uppsättning standardvärden tillgängliga i rapporteringssyfte. Om en relations korsfilterriktning inte är inställd på Båda beror det vanligtvis på att det skulle skapa tvetydighet. Om standardinställningen för korsfilter inte fungerar för dig kan du prova att ange den till en viss tabell eller till Båda.

Korsfiltrering i enkel riktning fungerar i många situationer. Om du har importerat en modell från Power Pivot i Excel 2013 eller tidigare kommer alla relationer att vara inställda på enkel riktning. Enkel riktning innebär att filtreringsalternativ i anslutna tabeller fungerar i tabellen där aggregeringsarbete pågår. Ibland kan det vara lite svårt att förstå korsfiltrering, så låt oss titta på ett exempel.

Om du skapar en rapport som sammanfattar projekttimmarna med enkelriktad korsfiltrering kan du sedan välja att sammanfatta (eller filtrera) efter tabellen CompanyProject och kolumnen Prioritet eller tabellen CompanyEmployee och dess kolumn Stad . Men om du vill räkna antalet anställda per projekt (en mindre vanlig fråga) fungerar det inte. Du får en kolumn med värden som är likadana. I följande exempel anges båda relationernas korsfiltreringsriktning till en enda riktning: mot tabellen ProjectHours . I brunnen Värden är fältet Projekt inställt på Antal:

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

Filterspecifikationen flödar från CompanyProject till ProjectHours (som visas i följande bild), men den flödar inte upp till CompanyEmployee.

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

Men om du anger korsfiltreringsriktningen till Båda fungerar den. Med inställningen Båda kan filterspecifikationen flöda upp till CompanyEmployee.

Diagram of a cross filtering example with flow both ways

Med korsfiltreringsriktningen inställd på Båda ser rapporten nu korrekt ut:

Screenshot of cross filtering direction set to Both.

Korsfiltrering i båda riktningarna fungerar bra för ett mönster av tabellrelationer, till exempel det mönster som visades tidigare. Det här schemat kallas oftast för ett star-schema, så här:

Diagram of cross filtering both directions in star schema.

Korsfiltreringsriktningen fungerar inte bra med ett mer allmänt mönster som ofta finns i databaser, som i det här diagrammet:

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

Om du har ett tabellmönster som detta, med loopar, kan korsfiltrering skapa en tvetydig uppsättning relationer. Om du till exempel summerar ett fält från TableX och sedan väljer att filtrera efter ett fält på TableY, är det inte klart hur filtret ska färdas, genom den översta tabellen eller den nedre tabellen. Ett vanligt exempel på den här typen av mönster är med TableX som en försäljningstabell med faktiska data och att TableY ska vara budgetdata. Sedan är tabellerna i mitten uppslagstabeller som båda tabellerna använder, till exempel division eller region.

Precis som med aktiva/inaktiva relationer tillåter Inte Power BI Desktop att en relation anges till Båda om det skapar tvetydighet i rapporter. Det finns flera olika sätt att hantera den här situationen. Här är de två vanligaste:

  • Ta bort eller markera relationer som inaktiva för att minska tvetydigheten. Sedan kanske du kan ange en relations korsfiltrering som Båda.
  • Ta in en tabell två gånger (med ett annat namn den andra gången) för att eliminera loopar. Det gör mönstret för relationer som ett stjärnschema. Med ett stjärnschema kan alla relationer anges till Båda.

Fel aktiv relation

När Power BI Desktop skapar relationer automatiskt uppstår ibland mer än en relation mellan två tabeller. När den här situationen inträffar är bara en av relationerna inställd på att vara aktiv. Den aktiva relationen fungerar som standardrelation, så att Power BI Desktop automatiskt kan skapa en visualisering åt dig när du väljer fält från två olika tabeller. I vissa fall kan dock den automatiskt valda relationen vara fel. Använd dialogrutan Hantera relationer för att ange en relation som aktiv eller inaktiv, eller ange den aktiva relationen i dialogrutan Redigera relation.

För att säkerställa att det finns en standardrelation tillåter Power BI Desktop endast en enda aktiv relation mellan två tabeller vid en viss tidpunkt. Därför måste du först ange den aktuella relationen som inaktiv och sedan ange den relation som du vill vara aktiv för.

Låt oss titta på ett exempel. Den första tabellen är ProjectTickets och den andra tabellen är EmployeeRole.

ProjectTickets

Biljett OpenedBy SubmittedBy Timmar Projekt DateSubmit
1001 Perham, Tom Brewer, Alan 22 Blått 1/1/2013
1002 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 Orange 1/2/2012
1005 Roman, Daniel Bowen, Eli 29 Lila 10/1/2013
1006 Roth, Daniel Bento, Nuno 35 Grönt 2/1/2013
1007 Roth, Daniel Hamilton, David 10 Gul 10/1/2013
1008 Perham, Tom Han, Mu 28 Orange 1/2/2012
1009 Roman, Daniel Ito, Shu 22 Lila 2/1/2013
1010 Roth, Daniel Bowen, Eli 28 Grönt 10/1/2013
1011 Perham, Tom Bowen, Eli 9 Blått 10/15/2013

EmployeeRole

Anställd Roll
Bento, Nuno Projektchef
Bowen, Eli Projektledning
Brewer, Alan Projektchef
Hamilton, David Projektledning
Han, Mu Projektledning
Ito, Shu Projektledning
Perham, Tom Projektsponsor
Roman, Daniel Projektsponsor
Roth, Daniel Projektsponsor

Det finns faktiskt två relationer här:

  • Mellan Anställd i tabellen EmployeeRole och SubmittedBy i tabellen ProjectTickets .
  • Mellan OpenedBy i tabellen ProjectTickets och Employee i tabellen EmployeeRole .

Screenshot of a two-relationship example.

Om vi lägger till båda relationerna i modellen (OpenedBy först) visar dialogrutan Hantera relationer att OpenedBy är aktivt:

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

Om vi nu skapar en rapport som använder fälten Roll och Anställd från EmployeeRole och fältet Timmar från ProjectTickets i en tabellvisualisering på rapportarbetsytan, ser vi bara projektsponsorer eftersom de är de enda som öppnade ett projektärende.

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

Vi kan ändra den aktiva relationen och hämta SubmittedBy i stället för OpenedBy. I Hantera relationer avmarkerar du relationen ProjectTickets(OpenedBy) till EmployeeRole(Employee) och kontrollerar sedan relationen EmployeeRole(Employee) till Project Tickets(SubmittedBy).

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

Se alla dina relationer i relationsvyn

Ibland har din modell flera tabeller och komplexa relationer mellan dem. Relationsvyn i Power BI Desktop visar alla relationer i din modell, deras riktning och kardinalitet i ett enkelt och anpassningsbart diagram.

Mer information finns i vyn Arbeta med relation i Power BI Desktop.

Felsökning

Det här avsnittet innehåller vägledning och felsökningsinformation när du arbetar med relationer i Power BI.

Relationer mellan fält kan inte fastställas

Power BI försöker visa relevanta data i visuella objekt genom att härleda relationerna från modellen som används. Ibland är sådana slutsatsdragningar inte uppenbara, och du kan bli förvånad över att se ett fel i ditt visuella objekt, vilket indikerar att det inte finns någon relation mellan vissa kolumner.

För att förklara hur Power BI avgör om fält är relaterade ska vi använda en exempelmodell för att illustrera några scenarier i följande avsnitt. Följande bild visar exempelmodellen som vi ska använda i exempelscenarierna.

Screenshot of a sample model used in troubleshooting scenarios.

Scenario 1: Traditionellt stjärnschema och ingen måttbegränsning tillhandahålls. Med hänvisning till exempelmodellen i föregående bild ska vi titta först på den högra halvan av bilderna med tabellerna Leverantör – Inköp – Produkt . Det här exemplet är ett traditionellt stjärnschema med tabellen Fact (Inköp) och två Dimensionstabeller (produkt och leverantör). Relationen mellan dimensionstabellerna och faktatabellen är 1 till Många (en produkt motsvarar många inköp, en leverantör motsvarar många inköp). I den här typen av schema kan vi svara på frågor som Vilken försäljning har vi för produkt X? och Vilken försäljning har vi för leverantör Y? och vilka produkter säljer leverantör Y?

Om vi vill korrelera produkter och leverantörer kan vi göra det genom att titta på tabellen Inköp för att se om det finns en post med samma produkt och leverantör. En exempelfråga kan se ut som i följande exempel:

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

where CountRows(Purchases)>0 Är en implicit begränsning som Power BI skulle lägga till för att säkerställa att relevanta data returneras. Genom att göra den här korrelationen via tabellen Inköp kan vi returnera parkopplingar av Product-Vendor som har minst en post i en faktatabell, parkopplingar som är meningsfulla ur dataperspektiv. Du kan förvänta dig att alla meningslösa kombinationer av Product-Vendor som det aldrig har skett en försäljning för (vilket skulle vara värdelöst för analys) inte visas.

Scenario 2: Traditionellt star-schema och måttvillkor tillhandahålls. Om användaren i föregående exempel i Scenario 1 tillhandahåller en begränsning i form av sammanfattad kolumn (t.ex. summa/medelvärde/antal inköpskvart) eller ett modellmått (distinkt antal VendID) kan Power BI generera en fråga i form av följande exempel:

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

I sådana fall försöker Power BI returnera kombinationer som har meningsfulla värden för villkoret som användaren har angett (ej tomt). Power BI behöver inte heller lägga till sin egen implicita begränsning för CountRows(Inköp)>0, till exempel vad som gjordes som i föregående scenario 1, eftersom villkoret som användaren har angett är tillräckligt.

Scenario 3: Icke-star-schema och ingen måttbegränsning har angetts. I det här scenariot fokuserar vi vår uppmärksamhet på mitten av modellen, där vi har tabellerna Försäljning – Produkt – Inköp , där vi har en dimensionstabell (produkt) och två faktatabeller (försäljning, inköp). Eftersom det här exemplet inte är ett stjärnschema kan vi inte svara på samma typ av frågor som vi hade i scenario 1. Anta att vi försöker korrelera inköp och försäljning, eftersom köp har en många till en-relation med produkten och produkten har en 1-till-många-relation med Försäljning. Försäljning och inköp är indirekt många till många. Vi kan länka en produkt till många inköp och en produkt till många försäljningar, men vi kan inte länka en försäljning till många köp eller vice versa. Vi kan bara länka många köp till många försäljningar.

Om vi i det här fallet försöker kombinera Purchase[VenID] och Sales[CustID] i ett visuellt objekt har Power BI inte någon konkret begränsning som kan tillämpas på grund av många-till-många-relationen mellan dessa tabeller. Även om det kan finnas anpassade begränsningar (som inte nödvändigtvis härrör från de relationer som har upprättats i modellen) som kan tillämpas för olika scenarier, kan Power BI inte härleda en standardbegränsning enbart baserat på relationerna. Om Power BI försökte returnera alla kombinationer av de två tabellerna skulle det skapa en stor korskoppling och returnera icke-relevanta data. I stället genererar Power BI ett fel i det visuella objektet, till exempel följande.

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

Scenario 4: Schema- och måttbegränsning som inte är star-schema tillhandahålls. Om vi tar exemplet från Scenario 3 och lägger till en användarvillkor i form av en sammanfattad kolumn (t.ex. Antal produkter[ProdID] eller ett modellmått (Försäljning[Totalt antal]), kan Power BI generera en fråga i form av Korrelera köp[VenID] och försäljning[CustID] där MeasureConstraint inte är tomt.

I det här fallet respekterar Power BI användarens villkor som den enda begränsning som Power BI måste tillämpa och returnerar de kombinationer som producerar icke-tomma värden för den. Användaren har guidat Power BI till det scenario som den vill ha och Power BI tillämpar vägledningen.

Scenario 5: När ett måttvillkor anges men delvis är relaterat till kolumnerna. Det finns fall där måttbegränsningen som tillhandahålls av användaren inte är helt relaterad till alla kolumner i det visuella objektet. Ett modellmått relaterar alltid allt. Power BI behandlar det här scenariot som en svart ruta när man försöker hitta relationer mellan kolumner i det visuella objektet, och förutsätter att användaren vet vad de gör med hjälp av det. Sammanfattade kolumner i form av Sum, Average och liknande sammanfattningar som valts från användargränssnittet kan dock bara relateras till en delmängd av kolumnerna/tabellerna som används i det visuella objektet baserat på relationerna i den tabell som kolumnen tillhör. Som sådan gäller begränsningen för vissa parkopplingar av kolumner, men inte för alla. I så fall försöker Power BI hitta standardbegränsningar som kan gälla för kolumner som inte är relaterade till användarens villkor (till exempel i scenario 1). Om Power BI inte kan hitta några returneras följande fel.

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

Lösa relationsfel

När du ser felet Det går inte att fastställa relationer mellan fälten kan du utföra följande steg för att försöka lösa felet:

  1. Kontrollera din modell. Är den korrekt konfigurerad för de typer av frågor som du vill få svar på från din analys? Kan du ändra några av relationerna mellan tabeller? Kan du undvika att skapa en indirekt många till många?

    Överväg att konvertera ditt omvända V-formschema till två tabeller och använd en direkt många-till-många-relation mellan dem enligt beskrivningen i tillämpa många-många-relationer i Power BI Desktop.

  2. Lägg till en begränsning i det visuella objektet i form av en sammanfattad kolumn eller ett modellmått.

  3. Om en sammanfattad kolumn läggs till och det fortfarande finns ett fel bör du överväga att använda ett modellmått.

Mer information om modeller och relationer finns i följande artiklar: