Relaties maken en beheren in Power BI Desktop

Wanneer u meerdere tabellen importeert, gaat u waarschijnlijk analyses uitvoeren met gegevens uit de tabellen. Relaties tussen deze tabellen zijn nodig om nauwkeurig resultaten te berekenen en de juiste gegevens in uw rapporten weer te geven. Met Power BI Desktop is het maken van deze relaties eenvoudig. In de meeste gevallen hoeft u niets te doen. De functie Autodetectie doet het voor u. In sommige gevallen moet u echter mogelijk zelf relaties maken of moet u enkele wijzigingen in een relatie aanbrengen. Hoe dan ook is het belangrijk om relaties in Power BI Desktop te begrijpen en te weten hoe u ze maakt en bewerkt.

Autodetectie tijdens laden

Als u query's uitvoert op twee of meer tabellen tegelijk, probeert Power BI Desktop tijdens het laden van de gegevens relaties te zoeken en te maken. De relatieopties Kardinaliteit, Richting voor kruislings filteren en Deze relatie activeren zijn automatisch ingesteld. Power BI Desktop kijkt naar kolomnamen in de tabellen waarop u query's toepast, om te bepalen of er mogelijke relaties zijn. Als dat het geval is, worden de relaties automatisch gemaakt. Als Power BI Desktop niet met grote zekerheid kan vaststellen of er een overeenkomst is, wordt er geen relatie gemaakt. U kunt echter nog steeds het dialoogvenster Relaties beheren gebruiken om handmatig relaties te maken of te bewerken.

Een relatie maken met automatische detectie

Selecteer relatiesAutodetect>beheren op het tabblad Modellering.

Create a relationship with autodetect

Handmatig een relatie maken

  1. Selecteer Op het tabblad Modelleringde optie RelatiesbeherenNew>.

  2. Selecteer in het dialoogvenster Relatie maken een tabel in de vervolgkeuzelijst voor de eerste tabel. Selecteer de kolom die u in de relatie wilt gebruiken.

  3. Selecteer in de vervolgkeuzelijst voor de tweede tabel de andere tabel die u voor de relatie wilt gebruiken. Selecteer de andere kolom die u wilt gebruiken en selecteer VERVOLGENS OK.

    Create a manual relationship

Power BI Desktop configureert standaard automatisch de opties Kardinaliteit (richting), Richting voor kruislings filteren en Deze relatie activeren voor uw nieuwe relatie. U kunt deze instellingen indien nodig wijzigen. Zie Inzicht in extra opties voor meer informatie.

Als geen van de tabellen die voor de relatie zijn geselecteerd, unieke waarden bevat, ziet u de volgende fout: Een van de kolommen moet unieke waarden bevatten. Ten minste één tabel in een relatie moet over een specifieke, unieke lijst sleutelwaarden beschikken. Dit is een algemene vereiste voor alle databasetechnologieën op basis van relaties.

Als deze fout optreedt, zijn er verschillende manieren om het probleem te verhelpen:

  • Gebruik Dubbele waarden verwijderen om een kolom met unieke waarden te maken. Het nadeel van deze benadering is dat er mogelijk informatie verloren gaat bij het verwijderen van dubbele rijen. Vaak wordt een sleutel (rij) met een goede reden gedupliceerd.
  • Voeg een tussenliggende tabel op basis van de lijst afzonderlijke sleutelwaarden toe aan het model. Deze tabel wordt dan gekoppeld aan beide oorspronkelijke kolommen in de relatie.

Zie dit blogbericht voor meer informatie.

Een relatie bewerken

  1. Selecteer Relaties beheren op het tabblad Modellering.

  2. Selecteer in het dialoogvenster Relaties beheren de relatie en selecteer vervolgens Bewerken.

Extra opties configureren

Wanneer u een relatie maakt of bewerkt, kunt u extra opties configureren. Standaard configureert Power BI Desktop automatisch extra opties op basis van een schatting die voor elke relatie anders kan zijn op basis van de gegevens in de kolommen.

Kardinaliteit

De optie Kardinaliteit kan een van de volgende instellingen hebben:

Veel-op-een (*:1): Een veel-op-een-relatie is het meest voorkomende, standaardtype relatie. Dit betekent dat de kolom in de ene tabel meer dan één exemplaar van een waarde kan hebben en dat de andere, gerelateerde tabel, vaak de opzoektabel genoemd, slechts één exemplaar van een waarde heeft.

Een-op-een (1:1) : in een een-op-een-relatie heeft de kolom in de ene tabel slechts één exemplaar van een bepaalde waarde en heeft de andere, gerelateerde tabel slechts één exemplaar van een bepaalde waarde.

Een-op-veel (1:*) : in een een-op-veel-relatie heeft de kolom in de ene tabel slechts één exemplaar van een bepaalde waarde en kan de andere, gerelateerde tabel meer dan een exemplaar van een waarde hebben.

Veel tot veel (*:*): met samengestelde modellen kunt u een veel-op-veel-relatie tussen tabellen tot stand brengen, waardoor de vereisten voor unieke waarden in tabellen worden verwijderd. Ook zijn eerdere tijdelijke oplossingen niet meer nodig, zoals de introductie van nieuwe tabellen om relaties tot stand te brengen. Zie Relaties met een veel-op-veel-kardinaliteit voor meer informatie.

Zie Inzicht in extra opties voor meer informatie over wanneer de kardinaliteit moet worden gewijzigd.

Kruisfilterrichting

De optie Richting voor kruislings filteren kan de volgende instellingen hebben:

Beide: voor filterdoeleinden worden beide tabellen behandeld alsof ze één tabel vormen. De instelling Beide werkt goed met één tabel met veel opzoektabellen eromheen. Een voorbeeld is een tabel van de actuele verkoop met een opzoektabel voor afdelingen. Deze configuratie wordt vaak een configuratie met een stervormig schema genoemd (een centrale tabel met verschillende opzoektabellen). Als u twee of meer tabellen hebt die ook opzoektabellen hebben (met een aantal gemeenschappelijke opzoektabellen), kunt u de instelling Beide beter niet gebruiken. We gaan door met het vorige voorbeeld. Stel dat u ook een tabel voor verkoopbudget hebt die het beoogde budget voor elke afdeling bevat. Daarnaast is de afdelingstabel gekoppeld aan de verkoop- en de budgettabel. Vermijd de instelling Beide voor dit type configuratie.

Enkel: de meestgebruikte standaardrichting. Hierbij worden filterkeuzen in gekoppelde tabellen toegepast op de tabel waarin de waarden worden samengevoegd. Als u een Power Pivot in een Excel 2013-gegevensmodel of een eerder gegevensmodel importeert, hebben alle relaties één richting.

Zie Inzicht in extra opties voor meer informatie over wanneer de kruisfilterrichting moet worden gewijzigd.

Deze relatie activeren

Wanneer deze optie is ingeschakeld, fungeert de relatie als de actieve standaardrelatie. In gevallen waarbij er meer dan één relatie tussen twee tabellen bestaat, helpt de actieve relatie Power BI Desktop om automatisch visualisaties te maken die beide tabellen bevatten.

Zie Inzicht in extra opties voor meer informatie over wanneer een bepaalde relatie moet worden geactiveerd.

Inzicht in relaties

Als u een relatie tussen twee tabellen tot stand hebt gebracht, kunt u in beide tabellen met de gegevens werken alsof ze één tabel vormen. Zo hoeft u zich niet druk te maken om relatiegegevens of het samenvoegen van tabellen tot één tabel voordat u ze importeert. In veel gevallen kan Power BI Desktop automatisch relaties voor u maken. Als Power BI Desktop echter niet met een hoge mate van zekerheid kan vaststellen dat er een relatie tussen twee tabellen bestaat, wordt er niet automatisch een relatie gemaakt. In dat geval moet u dit doen.

We doen even een korte zelfstudie om meer inzicht te krijgen in hoe relaties werken in Power BI Desktop.

Tip

U kunt deze les zelf afronden:

  1. Kopieer de volgende tabel ProjectHours naar een Excel-werkblad (behalve de titel), selecteer alle cellen en selecteer vervolgens Invoegen>Tabel.
  2. Klik in het dialoogvenster Tabel maken op OK.
  3. Selecteer een tabelcel, selecteer Tabelontwerptabelnaam> en voer Vervolgens ProjectHours in.
  4. Doe hetzelfde voor de tabel CompanyProject.
  5. Importeer de gegevens met behulp van Gegevens ophalen in Power BI Desktop. Selecteer de twee tabellen als gegevensbron en selecteer vervolgens Laden.

De eerste tabel, ProjectHours, is een overzicht van werktickets met het aantal uren dat een persoon aan een bepaald project heeft gewerkt.

ProjectHours

Ticket SubmittedBy Hours Project DateSubmit
1001 Brewer, Alan 22 Blauw 1/1/2013
1002 Brewer, Alan 26 Rood 2/1/2013
1003 Ito, Shu 34 Geel 12/4/2012
1004 Brewer, Alan 13 Oranje 1/2/2012
1005 Bowen, Eli 29 Paars 01-10-2013
1006 Bento, Nuno 35 Groen 2/1/2013
1007 Hamilton, David 10 Geel 01-10-2013
1008 Han, Mu 28 Oranje 1/2/2012
1009 Ito, Shu 22 Paars 2/1/2013
1010 Bowen, Eli 28 Groen 10/1/2013
1011 Bowen, Eli 9 Blauw 10/15/2013

Deze tweede tabel, CompanyProject, is een lijst met projecten met een toegewezen prioriteit: A, B of C.

CompanyProject

ProjName Priority
Blauw A
Rood B
Groen C
Geel C
Paars B
Oranje C

U ziet dat elke tabel een projectkolom bevat. Elke kolom heeft een net iets andere naam, maar de waarden lijken hetzelfde te zijn. Dat is belangrijk en we komen er zo op terug.

Nu we de twee tabellen in een model hebben geïmporteerd, gaan we een rapport maken. Het eerste dat we willen ophalen, is het aantal uren dat is ingediend per projectprioriteit. Daarvoor selecteren we Priority en Hours in het deelvenster Velden.

Select Priority and Hours from Fields pane

Als u de tabel in het rapportcanvas bekijkt, ziet u dat het aantal uur 256 is voor elk project. Dit is ook het totale aantal. Dit getal is duidelijk niet juist. Hoe kan dat? Dit komt doordat we niet een totaalaantal van waarden uit één tabel kunnen berekenen (Hours in de tabel Project) en dit kunnen delen door waarden in een andere tabel (Priority in de tabel CompanyProject) zonder dat er een relatie tussen deze twee tabellen bestaat.

Daarom gaan we een relatie tussen deze twee tabellen maken.

Weet u nog, die kolommen in beide tabellen met een projectnaam, maar met waarden die op elkaar lijken? We gebruiken deze twee kolommen om een relatie tussen de tabellen te maken.

Waarom deze kolommen? Als we kijken naar de kolom Project in de tabel ProjectHours, zien we waarden zoals blauw, rood, geel, oranje enzovoort. Er zijn zelfs meerdere rijen die dezelfde waarde hebben. We hebben veel kleurwaarden voor Project.

In de kolom ProjName in de tabel CompanyProject zien we dat er maar één van elk van de kleurwaarden voor de projectnaam is. Elke kleurwaarde in deze tabel is uniek, en dat is belangrijk, omdat we een relatie tussen deze twee tabellen kunnen maken. In dit geval een veel-op-een-relatie. Bij een veel-op-een-relatie moet ten minste één kolom in een van de tabellen unieke waarden bevatten. Er zijn enkele aanvullende opties voor sommige relaties die we later bekijken. We gaan nu een relatie maken tussen de projectkolommen in beide tabellen.

De nieuwe relatie maken

  1. Selecteer Relaties beheren op het tabblad Modellering .

  2. Selecteer in Relaties beheren de optie Nieuw om het dialoogvenster Relatie maken te openen, waarin u de tabellen, kolommen en eventuele extra instellingen voor de relatie kunt selecteren.

  3. Selecteer in de eerste vervolgkeuzelijst ProjectHours als de eerste tabel en selecteer vervolgens de kolom Project. Deze zijde is de veel-zijde van de relatie.

  4. In de tweede vervolgkeuzelijst is CompanyProject vooraf geselecteerd als de tweede tabel. Selecteer de kolom ProjName. Deze zijde is de een-zijde van de relatie.

  5. Accepteer de standaardwaarden voor de relatieopties en selecteer OK.

    Create relationship dialog box

  6. Klik in het dialoogvenster Relaties beheren op Sluiten.

We moeten er eerlijkheidshalve wel even bij zeggen dat u deze relatie op de moeilijke manier hebt gemaakt. U had gewoon Autodetectie in het dialoogvenster Relaties beheren kunnen selecteren. Autodetectie had de relatie automatisch voor u gemaakt bij het laden van de gegevens als beide kolommen dezelfde naam hadden gehad. Maar daar zit natuurlijk geen uitdaging in.

Kijk nu nog eens naar de tabel in het rapportcanvas.

Created relationship with Priority and Hours

Dat ziet er een stuk beter uit, toch?

Als we uren optellen per Priority, zoekt Power BI Desktop naar elk exemplaar van de unieke kleurwaarden in de opzoektabel CompanyProject en vervolgens naar elk exemplaar van die waarden in de tabel ProjectHours, waarna het totale aantal voor elke unieke waarde wordt berekend.

Dat was makkelijk. Met Autodetectie gaat het waarschijnlijk nog veel eenvoudiger.

Inzicht in extra opties

Wanneer een relatie is gemaakt, met Autodetectie of handmatig, configureert Power BI Desktop automatisch extra opties op basis van de gegevens in de tabellen. Deze extra relatieopties bevinden zich in het laagste gedeelte van de dialoogvensters Relatie maken en Relatie bewerken.

Relationship options

Deze opties worden meestal automatisch door Power BI ingesteld; u hoeft hier niets aan te veranderen. Er zijn echter enkele situaties mogelijk waarin u deze opties zelf wilt configureren.

Relaties automatisch bijwerken

U kunt instellen hoe Power BI relaties in uw rapporten en modellen behandelt en automatisch aanpast. Selecteer hiervoor Bestand>Opties en instellingen>Opties in Power BI Desktop en selecteer vervolgens Gegevens laden in het linkerdeelvenster. U ziet nu de opties voor Relaties.

Relationships options

Er zijn drie opties die kunnen worden geselecteerd en ingeschakeld:

  • Relaties uit gegevensbronnen importeren tijdens de eerste keer laden: Deze optie is standaard ingeschakeld. Wanneer de optie is ingeschakeld, controleert Power BI op relaties die zijn gedefinieerd in uw gegevensbron, zoals relaties tussen een refererende sleutel en een primaire sleutel in uw datawarehouse. Als dergelijke relaties bestaan, worden deze gespiegeld in het Power BI-gegevensmodel wanneer u gegevens voor het eerst laadt. Met deze optie kunt u snel aan de slag met uw model en hoeft u deze relaties niet eerst zelf te vinden of te definiëren.

  • Relaties bijwerken of verwijderen tijdens het vernieuwen van gegevens: Deze optie is standaard uitgeschakeld. Als u de optie inschakelt, controleert Power BI op wijzigingen in gegevensbronrelaties wanneer uw gegevensset wordt vernieuwd. Als deze relaties zijn gewijzigd of worden verwijderd, spiegelt Power BI deze wijzigingen in het eigen gegevensmodel, door relaties bij te werken of te verwijderen.

    Waarschuwing

    Als u beveiliging op rijniveau gebruikt die afhankelijk is van de gedefinieerde relaties, wordt afgeraden deze optie te selecteren. Als u een relatie verwijdert die nodig is voor uw instellingen voor beveiliging op rijniveau, wordt uw model mogelijk minder veilig.

  • Nieuwe relaties automatisch detecteren na het laden van gegevens: Deze optie wordt beschreven in Autodetectie tijdens laden.

Toekomstige updates voor de gegevens vereisen een andere kardinaliteit

Power BI Desktop kan normaal gesproken automatisch de beste kardinaliteit voor de relatie bepalen. Als u de automatische instelling wilt overschrijven omdat u weet dat de gegevens in de toekomst veranderen, kunt u deze wijzigen in het besturingselement Kardinaliteit. Hieronder volgt een voorbeeld waarin een andere kardinaliteit moet worden geselecteerd.

De tabel CompanyProjectPriority bevat een lijst met alle bedrijfsprojecten en de bijbehorende prioriteit. De tabel ProjectBudget bevat de projecten waarvoor een budget is goedgekeurd.

CompanyProjectPriority

ProjName Priority
Blauw A
Rood B
Groen C
Geel C
Paars B
Oranje C

ProjectBudget

Approved Projects BudgetAllocation AllocationDate
Blauw 40,000 12/1/2012
Rood 100,000 12/1/2012
Groen 50.000 12/1/2012

Als we een relatie maken tussen de kolom Approved Projects in de tabel ProjectBudget en de kolom ProjectName in de tabel CompanyProjectPriority, stelt Power BI automatisch Kardinaliteit in op Een-op-een (1:1) en Richting voor kruislings filteren op Beide.

Create relationship between table columns

Power BI maakt deze instellingen omdat volgens Power BI Desktop dit de beste combinatie van de twee tabellen is:

ProjName Priority BudgetAllocation AllocationDate
Blauw A 40,000 12/1/2012
Rood B 100.000 12/1/2012
Groen C 50,000 12/1/2012
Geel C

Paars B

Oranje C

Er is een een-op-een-relatie tussen de twee tabellen omdat er geen herhaalde waarden zijn in de kolom ProjName van de gecombineerde tabel. De kolom ProjName is uniek, omdat elke waarde slechts één keer voorkomt. Daardoor kunnen de rijen van de twee tabellen rechtstreeks zonder duplicatie worden gecombineerd.

Maar stel dat u weet dat de gegevens worden gewijzigd de volgende keer dat u ze vernieuwd. Een vernieuwde versie van de tabel ProjectBudget bevat nu extra rijen voor de blauwe en rode projecten:

ProjectBudget

Approved Projects BudgetAllocation AllocationDate
Blauw 40,000 12/1/2012
Rood 100,000 12/1/2012
Groen 50.000 12/1/2012
Blauw 80,000 6/1/2013
Rood 90,000 6/1/2013

De beste combinatie van de twee tabellen ziet er met deze extra rijen nu als volgt uit:

ProjName Priority BudgetAllocation AllocationDate
Blauw A 40,000 12/1/2012
Rood B 100.000 12/1/2012
Groen C 50,000 12/1/2012
Geel C

Paars B

Oranje C

Blauw A 80000 6/1/2013
Rood B 90000 6/1/2013

In deze nieuwe gecombineerde tabel bevat de kolom ProjName herhaalde waarden. De twee oorspronkelijke tabellen hebben geen één-op-éénrelatie meer zodra de tabel wordt vernieuwd. In dit geval, omdat we weten dat deze toekomstige updates ervoor zorgen dat de kolom ProjName duplicaten heeft, willen we de kardinaliteit instellen op Veel op één (*:1), met de vele kant op ProjectBudget en de ene kant op CompanyProjectPriority.

Richting voor kruislings filteren aanpassen voor een complexe reeks tabellen en relaties

Voor de meeste relaties wordt de richting voor kruislings filteren ingesteld op Beide. Er zijn echter enkele minder gebruikelijke gevallen waarin u van de standaardinstelling wilt afwijken, bijvoorbeeld als u een model vanuit een oudere versie van Power Pivot wilt importeren, waarbij elke relatie op één richting is ingesteld.

Met de instelling Beide kan Power BI Desktop alle aspecten van de gekoppelde tabellen behandelen alsof ze bij één tabel horen. Er zijn echter enkele situaties waarin Power BI Desktop de kruisfilterrichting van een relatie niet op Beide kan instellen en tegelijkertijd een ondubbelzinnige set standaardinstellingen kan bieden voor rapportagedoeleinden. Als de kruisfilterrichting van een relatie niet op Beide wordt ingesteld, komt dit meestal omdat er anders dubbelzinnigheid zou ontstaan. Als de standaardinstelling voor kruislings filteren niet handig is, kunt u het filteren op een bepaalde tabel of op Beide instellen.

Kruislings filteren in één richting werkt in de meeste gevallen. Als u een model uit Power Pivot in Excel 2013 of eerder hebt geïmporteerd, worden alle relaties op één richting ingesteld. Eén richting betekent dat filterkeuzes in gekoppelde tabellen worden toegepast op de tabel waarin waarden worden samengevoegd. Kruislings filteren kan soms lastig te begrijpen zijn. Daarom volgt hier een voorbeeld.

Als u kruislings filteren in één richting gebruikt, kunt u bij een rapport met een overzicht van de projecturen ervoor kiezen om samen te vatten (of te filteren) op de tabel CompanyProject en de kolom Priority of de tabel CompanyEmployee en de kolom City. U kunt echter niet het aantal werknemers per project tellen (een minder gebruikelijke opdracht). U krijgt een kolom met waarden die allemaal hetzelfde zijn. In het volgende voorbeeld is de kruisfilterrichting van beide relaties ingesteld op één richting: in de richting van de tabel ProjectHours. Bij Waarden is het veld Project ingesteld op Aantal:

Cross filtering direction

De filterspecificatie wordt overgebracht van CompanyProject naar ProjectHours (zoals weergegeven in de volgende afbeelding), maar niet naar CompanyEmployee.

Cross filtering example

Als u de kruisfilterrichting echter instelt op Beide, werkt het wel. De instelling Beide zorgt ervoor dat de filterspecificatie naar CompanyEmployee kan worden overgebracht.

Filter specification flow

Wanneer de kruisfilterrichting op Beide is ingesteld, wordt het rapport correct weergegeven:

Cross filtering direction set to Both

Kruislings filteren in beide richtingen is geschikt voor een patroon van relaties tussen tabellen zoals het bovenstaande patroon. Dit schema wordt meestal een stervormig schema genoemd en ziet er als volgt uit:

Cross filtering both directions in star schema

De kruisfilterrichting werkt niet goed met een meer algemeen patroon dat vaak geldt voor databases, zoals in dit diagram:

Cross filtering both directions in database pattern

Als u een dergelijk tabelpatroon hebt, met lussen, kan kruislings filteren een reeks dubbelzinnige relaties vormen. Als u bijvoorbeeld een veld van TableX optelt en vervolgens filtert op een veld in TableY, is het niet duidelijk hoe het filter moet worden toegepast: via de bovenste of onderste tabel. Een veelvoorkomend voorbeeld voor dit type patroon is wanneer TableX een verkooptabel is met actuele gegevens en TableY budgetgegevens bevat. In dat geval zijn de tabellen in het midden opzoektabellen die door beide tabellen worden gebruikt, zoals Division of Region.

Net als bij actieve/inactieve relaties staat Power BI Desktop niet toe dat een relatie wordt ingesteld op Beide als er daardoor dubbelzinnigheid in rapporten ontstaat. U kunt deze situatie op verschillende manieren afhandelen. Dit zijn de twee meestgebruikte manieren:

  • Verwijder relaties of stel ze in als inactief om dubbelzinnigheid te verminderen. Vervolgens kunt u kruislings filteren voor een relatie mogelijk op Beide instellen.
  • Haal een tabel twee keer op (de tweede keer met een andere naam) om lussen te voorkomen. Hierdoor wordt het patroon van relaties vergelijkbaar met een stervormig schema. Bij een stervormig schema kunnen alle relaties op Beide worden ingesteld.

Verkeerde actieve relatie

Wanneer Power BI Desktop automatisch relaties maakt, wordt er soms meer dan één relatie tussen twee tabellen aangetroffen. In een dergelijk geval wordt maar een van de relaties als actief ingesteld. De actieve relatie fungeert als de standaardrelatie, zodat Power BI Desktop automatisch een visualisatie voor u kan maken wanneer u velden uit twee verschillende tabellen kiest. In sommige gevallen is de automatisch geselecteerde relatie echter de verkeerde. Gebruik het dialoogvenster Relaties beheren om een relatie als actief of inactief in te stellen. U kunt ook de actieve relatie instellen in het dialoogvenster Relatie bewerken.

Power BI Desktop staat slechts één actieve relatie tegelijk tussen twee tabellen toe om ervoor te zorgen dat er een standaardrelatie is. Daarom moet u eerst de huidige relatie als inactief instellen en kunt u vervolgens de gewenste relatie op actief instellen.

Hier volgt een voorbeeld. De eerste tabel is ProjectTickets en de tweede tabel is EmployeeRole.

ProjectTickets

Ticket OpenedBy SubmittedBy Hours Project DateSubmit
1001 Perham, Tom Brewer, Alan 22 Blauw 1/1/2013
1002 Roman, Daniel Brewer, Alan 26 Rood 2/1/2013
1003 Roth, Daniel Ito, Shu 34 Geel 12/4/2012
1004 Perham, Tom Brewer, Alan 13 Oranje 1/2/2012
1005 Roman, Daniel Bowen, Eli 29 Paars 01-10-2013
1006 Roth, Daniel Bento, Nuno 35 Groen 2/1/2013
1007 Roth, Daniel Hamilton, David 10 Geel 01-10-2013
1008 Perham, Tom Han, Mu 28 Oranje 1/2/2012
1009 Roman, Daniel Ito, Shu 22 Paars 2/1/2013
1010 Roth, Daniel Bowen, Eli 28 Groen 10/1/2013
1011 Perham, Tom Bowen, Eli 9 Blauw 10/15/2013

EmployeeRole

Employee Role
Bento, Nuno Project Manager
Bowen, Eli Project Lead
Brewer, Alan Project Manager
Hamilton, David Project Lead
Han, Mu Project Lead
Ito, Shu Project Lead
Perham, Tom Project Sponsor
Roman, Daniel Project Sponsor
Roth, Daniel Project Sponsor

Er bestaan hier eigenlijk twee relaties:

  • Tussen Employee in de tabel EmployeeRole en SubmittedBy in de tabel ProjectTickets.
  • Tussen OpenedBy in de tabel ProjectTickets en Employee in de tabel EmployeeRole.

Two-relationship example

Als we beide relaties aan het model toevoegen (OpenedBy eerst), wordt in het dialoogvenster Relaties beheren weergegeven dat OpenedBy actief is:

OpenedBy active in Manage relationships dialog box

Als we vervolgens een rapport maken dat de velden Role en Employee uit EmployeeRole gebruikt, en het veld Hours uit ProjectTickets in een tabelvisualisatie in het rapportcanvas, worden er alleen projectsponsoren weergegeven omdat zij de enigen zijn die een projectticket hebben geopend.

Employee, Role, and Hours fields selected

We kunnen de actieve relatie wijzigen en SubmittedBy in plaats van OpenedBy ophalen. Schakel in Relaties beheren de relatie van ProjectTickets(OpenedBy) naar EmployeeRole(Employee) uit en schakel vervolgens de relatie EmployeeRole(Employee) naar Project Tickets(SubmittedBy) in.

Change active relationship in Manage relationship dialog box

Al uw relaties bekijken in de weergave Relatie

Soms heeft uw model meerdere tabellen en complexe relaties tussen deze tabellen. De weergave Relatie in Power BI Desktop bevat alle relaties in het model, de bijbehorende richting en de kardinaliteit in een eenvoudig en aanpasbaar diagram.

Zie Werken met de relatieweergave in Power BI Desktop voor meer informatie.

Problemen oplossen

Deze sectie bevat richtlijnen en informatie over het oplossen van problemen bij het werken met relaties in Power BI.

Relaties tussen velden kunnen niet worden bepaald

Power BI probeert relevante gegevens in visuals weer te geven door de relaties van het gebruikte model uit te stellen. Soms zijn dergelijke deducties niet duidelijk en u bent misschien verrast om een fout in uw visual te zien, wat aangeeft dat er geen relatie is tussen bepaalde kolommen.

Als u wilt uitleggen hoe Power BI bepaalt of velden gerelateerd zijn, gebruiken we een voorbeeldmodel om een aantal scenario's in de volgende secties te illustreren. In de volgende afbeelding ziet u het voorbeeldmodel dat we in de voorbeeldscenario's gaan gebruiken.

Sample model used in troubleshooting scenarios

Scenario 1: Traditioneel sterschema en geen metingsbeperking opgegeven. Als u naar het voorbeeldmodel in de vorige afbeelding verwijst, kijken we eerst naar de rechter helft van de afbeeldingen met de leveranciers - Aankopen - Producttabellen . Dit is een traditioneel sterschema met de feitentabel (Aankopen) en twee dimensietabellen (Product en Leverancier). De relatie tussen de dimensietabellen en de feitentabel is 1 tot Veel (één product komt overeen met veel aankopen, één leverancier komt overeen met veel aankopen). In dit type schema kunnen we vragen beantwoorden zoals Welke verkopen hebben we voor product X? en welke verkopen hebben we voor Leverancier Y? en Welke producten verkoopt Vendor Y?

Als we producten en leveranciers willen correleren, kunnen we dit doen door naar de tabel Aankopen te kijken om te zien of er een vermelding is met hetzelfde product en dezelfde leverancier. Een voorbeeldquery kan er als volgt uitzien:

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

Dit where CountRows(Purchases)>0 is een impliciete beperking die Power BI zou toevoegen om ervoor te zorgen dat relevante gegevens worden geretourneerd. Door deze correlatie uit te voeren via de tabel Aankopen , kunnen we koppelingen retourneren van Product-Vendor met ten minste één vermelding in een feitentabel, koppelingen die logisch zijn vanuit het gegevensperspectief. U kunt verwachten dat er geen onzinnige combinaties van Product-Vendor worden weergegeven waarvoor nooit een verkoop is geweest (die nutteloos zou zijn voor analyse).

Scenario 2: Traditionele sterschema en metingsbeperking opgegeven. In het vorige voorbeeld in Scenario 1, als de gebruiker een beperking biedt in de vorm van een samengevatte kolom (som/gemiddelde/aantal aankopen, bijvoorbeeld) of een modelmeting (Distinct Count of VendID), kan Power BI een query genereren in de vorm van het volgende:

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

In dat geval probeert Power BI combinaties te retourneren die zinvolle waarden hebben voor de beperking die de gebruiker heeft opgegeven (niet-leeg). Power BI hoeft niet ook een eigen impliciete beperking van CountRows(Aankopen)>0 toe te voegen, zoals wat er is gedaan zoals in het vorige scenario 1, omdat de beperking die door de gebruiker is opgegeven, voldoende is.

Scenario 3: Niet-stervormig schema en geen metingsbeperking opgegeven. In dit scenario richten we ons op het midden van het model, waar we de tabellen Sales - Product - Aankopen hebben, waarbij we één dimensietabel (Product) en twee Feitentabellen (Verkoop, Aankopen) hebben. Omdat dit geen stervormig schema is, kunnen we niet dezelfde soort vragen beantwoorden als in Scenario 1. Stel dat we aankopen en verkopen proberen te correleren; omdat aankopen een veel-op-1-relatie met Product hebben en Product een 1-op-Veel-relatie heeft met Verkoop, Verkoop en Aankopen , zijn indirect Veel op Veel. We kunnen één product koppelen aan veel aankopen en één product aan veel verkopen, maar we kunnen niet één verkoop koppelen aan veel aankopen of omgekeerd. We kunnen alleen veel aankopen koppelen aan veel verkopen.

In dit geval heeft Power BI geen concrete beperking die kan worden toegepast vanwege de veel-op-veel-relatie tussen deze tabellen als we Kopen[VenID] en Sales[CustID] in een visual willen combineren. Hoewel er aangepaste beperkingen (niet noodzakelijkerwijs afkomstig zijn van de relaties die in het model zijn ingesteld) die kunnen worden toegepast voor verschillende scenario's, kan Power BI geen standaardbeperking afleiden die uitsluitend is gebaseerd op de relaties. Als Power BI geprobeerd alle combinaties van de twee tabellen te retourneren, wordt er een grote cross join gemaakt en worden niet-relevante gegevens geretourneerd. In plaats daarvan wordt Power BI een fout in de visual gegenereerd, zoals het volgende.

Error dialog when relationship cannot be inferred

Scenario 4: Er is een niet-stervormig schema en een beperking voor meting opgegeven. Als we het voorbeeld uit Scenario 3 gebruiken en een door de gebruiker opgegeven beperking toevoegen in de vorm van een samengevatte kolom (bijvoorbeeld Aantal producten[ProdID] of een modelmeting (Sales[Total Qty]) Power BI een query kunnen genereren in de vorm van Aankoop correleren[VenID] en Sales[CustID] waarbij MeasureConstraint niet leeg is.

In dit geval respecteert Power BI de beperking van de gebruiker als de enige beperking die Power BI moet toepassen en retourneert u de combinaties die er niet-lege waarden voor produceren. De gebruiker heeft Power BI geleid naar het gewenste scenario en Power BI de richtlijnen toepast.

Scenario 5: Wanneer een metingsbeperking wordt opgegeven, maar gedeeltelijk is gerelateerd aan de kolommen. Er zijn gevallen waarin de beperking van de meting die door de gebruiker is opgegeven, niet volledig is gerelateerd aan alle kolommen in de visual. Een modelmeting heeft altijd betrekking op alles; Power BI behandelt dit als een zwart vak wanneer wordt geprobeerd relaties tussen kolommen in de visual te vinden en ervan uit te gaan dat de gebruiker weet wat ze doen door deze te gebruiken. Samengevatte kolommen in de vorm van Som, Gemiddelde en vergelijkbare samenvattingen die zijn gekozen in de gebruikersinterface, kunnen echter alleen betrekking hebben op een subset van de kolommen/tabellen die in de visual worden gebruikt op basis van de relaties van de tabel waartoe die kolom behoort. Als zodanig is de beperking van toepassing op bepaalde combinaties van kolommen, maar niet op alle, in welk geval Power BI probeert standaardbeperkingen te vinden die van toepassing zijn op de kolommen die niet zijn gerelateerd door de gebruiker opgegeven beperking (zoals in Scenario 1). Als Power BI er geen kan vinden, wordt de volgende fout geretourneerd.

Error dialog when Power BI cannot find default constraints

Relatiefouten oplossen

Wanneer u de fout Kan geen relaties tussen de veldenfout ziet , kunt u de volgende stappen uitvoeren om de fout op te lossen:

  1. Controleer uw model. Is deze op de juiste manier ingesteld voor de typen vragen die u wilt beantwoorden vanuit uw analyse? Kunt u enkele relaties tussen tabellen wijzigen? Kunt u voorkomen dat u een indirect veel-op-veel-bestand maakt?

    Overweeg het omgekeerde V-shapeschema te converteren naar twee tabellen en gebruik een directe veel-op-veel-relatie tussen deze tabellen, zoals beschreven in veel-veel-relaties toepassen in Power BI Desktop.

  2. Voeg een beperking toe aan de visual in de vorm van een samengevatte kolom of een modelmeting.

  3. Als een samengevatte kolom wordt toegevoegd en er nog steeds een fout optreedt, kunt u overwegen een modelmeting te gebruiken.

Volgende stappen

Zie de volgende artikelen voor meer informatie over modellen en relaties: