Relaties maken en beheren in Power BI Desktop

Wanneer u meerdere tabellen hebt, kunt u waarschijnlijk een analyse uitvoeren met behulp van gegevens uit al deze tabellen. Relaties tussen deze tabellen zijn nodig om nauwkeurig resultaten te berekenen en de juiste informatie in uw rapporten weer te geven. In de meeste gevallen hoeft u niets te doen. De functie autodetectie doet dit voor u. Soms moet u echter zelf relaties maken of wijzigingen aanbrengen in een relatie. Hoe dan ook, het is belangrijk om relaties in Power BI Desktop te begrijpen en hoe u deze maakt en bewerkt.

Automatisch detecteren tijdens het laden

Als u tegelijkertijd een query uitvoert op twee of meer tabellen, probeert Power BI Desktop relaties voor u te vinden en te maken wanneer de gegevens worden geladen. De relatieopties kardinaliteit, kruisfilterrichting en Deze relatie actief maken worden automatisch ingesteld. Power BI Desktop bekijkt kolomnamen in de tabellen waarop u query's uitvoert om te bepalen of er potentiële relaties zijn. Als dat zo is, worden deze relaties automatisch gemaakt. Als Power BI Desktop niet met een hoge mate van vertrouwen kan bepalen of er een overeenkomst is, wordt de relatie niet gemaakt. U kunt echter nog steeds het dialoogvenster Relaties beheren gebruiken om handmatig relaties te maken of te bewerken.

Een relatie maken met autodetectie

Selecteer Op het tabblad Modelleren de optie Relaties>automatisch detecteren.

Animation showing how to create a relationship with autodetect.

Handmatig een relatie maken

  1. Selecteer Op het tabblad Modellering relaties beheren>.

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

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

    Animation showing how to create a manual relationship.

Standaard configureert Power BI Desktop automatisch de opties Kardinaliteit (richting), Kruisfilterrichting en Deze relatie actief maken voor uw nieuwe relatie. U kunt deze instellingen echter indien nodig wijzigen. Zie Meer informatie over aanvullende opties.

Als geen van de tabellen die zijn geselecteerd voor de relatie unieke waarden heeft, ziet u de volgende fout: een van de kolommen moet unieke waarden hebben. Ten minste één tabel in een relatie moet een afzonderlijke, unieke lijst met sleutelwaarden hebben. Dit is een algemene vereiste voor alle relationele databasetechnologieën.

Als deze fout optreedt, zijn er een aantal manieren om het probleem op te lossen:

  • Gebruik Duplicaten verwijderen om een kolom met unieke waarden te maken. Het nadeel van deze benadering is dat u mogelijk gegevens kwijtraakt wanneer dubbele rijen worden verwijderd. Vaak wordt een sleutel (rij) om een goede reden gedupliceerd.
  • Voeg een tussenliggende tabel toe van de lijst met afzonderlijke sleutelwaarden aan het model, die vervolgens wordt gekoppeld aan beide oorspronkelijke kolommen in de relatie.

Zie dit blogbericht voor meer informatie.

U kunt ook in de indelingen van het modelweergavediagram een kolom van de ene tabel naar een kolom in een andere tabel slepen en neerzetten om een relatie te maken.

Een relatie bewerken

Er zijn twee manieren om een relatie in Power BI te bewerken.

De eerste methode voor het bewerken van een relatie is het gebruik van de bewerkingsrelaties in het deelvenster Eigenschappen in de modelweergave, waar u een lijn tussen twee tabellen kunt selecteren om de relatieopties in het deelvenster Eigenschappen weer te geven. Vouw het deelvenster Eigenschappen uit om de relatieopties weer te geven.

Screenshot of adjusting relationships in the properties pane.

U kunt ook een videodemonstratie zien van het bewerken van relaties in het deelvenster Eigenschappen .

De andere methode voor het bewerken van een relatie is het dialoogvenster Relatie-editor, dat u op veel manieren vanuit Power BI Desktop kunt openen. In de volgende lijst ziet u verschillende manieren waarop u het dialoogvenster Relatieeditor kunt openen:

Ga in de rapportweergave op een van de volgende manieren te werk:

  • Selecteer het lint> Modelleren relaties beheren en selecteer vervolgens de relatie en selecteer Bewerken.
  • Selecteer een tabel in de lijst Velden en selecteer vervolgens het lint> Hulpmiddelen voor tabellen beheren, selecteer vervolgens de relatie en selecteer Vervolgens Bewerken.

Selecteer in de gegevensweergave het lint >Hulpmiddelen voor tabellen beheren, selecteer vervolgens de relatie en kies Bewerken.

Ga in de modelweergave op een van de volgende manieren te werk:

  • Selecteer het startlint> Relaties beheren en kies vervolgens de relatie en selecteer Vervolgens Bewerken.
  • Dubbelklik op een lijn tussen twee tabellen.
  • Klik met de rechtermuisknop op een lijn tussen twee tabellen en kies Eigenschappen.
  • Selecteer een lijn tussen twee tabellen en kies vervolgens Relatie-editor openen in het deelvenster Eigenschappen .

Ten slotte kunt u ook een relatie bewerken vanuit elke weergave, met de rechtermuisknop klikken of het beletselteken selecteren om naar het contextmenu van een tabel te gaan, vervolgens Relaties beheren te selecteren, de relatie te selecteren en vervolgens Bewerken te selecteren

In de volgende afbeelding ziet u een schermopname van het venster Relatie bewerken.

Screenshot of the edit relationship window.

Relaties bewerken met behulp van verschillende methoden

Het dialoogvenster Relaties bewerken is een meer begeleide ervaring voor het bewerken van relaties in Power BI en is momenteel in preview. In elke tabel ziet u een voorbeeld van de gegevens. Wanneer u verschillende kolommen selecteert, valideert het venster automatisch de relatie en biedt het de juiste kardinaliteit en kruisfilterselecties.

Het bewerken van relaties in het deelvenster Eigenschappen is een gestroomlijnde benadering voor het bewerken van relaties in Power BI. U ziet alleen de tabelnamen en kolommen waaruit u kunt kiezen, u ziet geen voorbeeld van gegevens en de relatiekeuzes die u maakt, worden alleen gevalideerd wanneer u Wijzigingen toepassen selecteert. Het gebruik van het deelvenster Eigenschappen en de gestroomlijnde benadering vermindert het aantal query's dat wordt gegenereerd bij het bewerken van een relatie, wat belangrijk kan zijn voor big data-scenario's, met name bij het gebruik van DirectQuery-verbindingen. Relaties die zijn gemaakt met behulp van het deelvenster Eigenschappen kunnen ook geavanceerder zijn dan de relaties die mogen worden gemaakt in het dialoogvenster Relaties bewerken.

U kunt ook relaties met meerdere selecties selecteren in de indelingen van het modelweergavediagram door op Ctrl te drukken en meer dan één regel te selecteren om meerdere relaties te kiezen. Algemene eigenschappen kunnen worden bewerkt in het deelvenster Eigenschappen en Wijzigingen toepassen verwerken de wijzigingen in één transactie.

Relaties met één of meerdere geselecteerde relaties kunnen ook worden verwijderd door op Delete op het toetsenbord te drukken. U kunt de verwijderactie niet ongedaan maken, dus in een dialoogvenster wordt u gevraagd om de relaties te verwijderen.

Belangrijk

Het bewerken van relaties in het deelvenster Eigenschappen is momenteel beschikbaar als preview-versie. Tijdens de preview-versie zullen functionaliteit en documentatie waarschijnlijk veranderen. U moet deze functie inSchakelen in Power BI Desktop door naar de functies Opties voor bestandsopties > en instellingen >> preview te gaan en schakel vervolgens in de sectie GLOBAL het selectievakje naast het deelvenster Relatie in.

Meer opties configureren

Wanneer u een relatie maakt of bewerkt, kunt u meer opties configureren. Standaard configureert Power BI Desktop automatisch meer opties op basis van de beste schatting. Dit kan voor elke relatie verschillen 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 een bepaalde tabel meerdere exemplaren van een waarde kan hebben en dat de andere gerelateerde tabel, vaak bekend als de opzoektabel, slechts één exemplaar van een waarde heeft.

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

Eén op veel (1:*): In een een-op-veel-relatie heeft de kolom in één tabel slechts één exemplaar van een bepaalde waarde en kan de andere gerelateerde tabel meerdere exemplaren van een waarde hebben.

Veel op 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 eerdere tijdelijke oplossingen, zoals het introduceren van nieuwe tabellen om relaties tot stand te brengen, hoeven in dit geval niet te worden gebruikt. Zie Relaties met een veel-op-veel-kardinaliteit voor meer informatie.

Zie Inzicht in aanvullende opties voor meer informatie over wanneer u kardinaliteit wilt wijzigen.

Kruisfilterrichting

De optie Kruisfilterrichting kan een van de volgende instellingen hebben:

Beide: Voor filterdoeleinden worden beide tabellen behandeld alsof ze één tabel zijn. De instelling Beide werkt goed met één tabel met veel opzoektabellen eromheen. Een voorbeeld is een tabel met werkelijke verkoopcijfers met een opzoektabel voor de afdeling. Deze configuratie wordt vaak een configuratie van een stervormig schema genoemd (een centrale tabel met verschillende opzoektabellen). Als u echter twee of meer tabellen hebt die ook opzoektabellen bevatten (met een aantal veelvoorkomende tabellen), wilt u de instelling Beide niet gebruiken. Als u wilt doorgaan met het vorige voorbeeld, hebt u in dit geval ook een tabel met budgetverkoop die het doelbudget voor elke afdeling registreert. En de afdelingstabel is verbonden met zowel de verkoop- als de budgettabel. Vermijd de beide instelling voor dit soort configuraties.

Eén: De meest voorkomende standaardrichting, wat betekent dat filterkeuzen in verbonden tabellen werken in de tabel waarin waarden worden samengevoegd. Als u een Power Pivot in Excel 2013 of een eerder gegevensmodel importeert, hebben alle relaties één richting.

Zie Inzicht in aanvullende opties voor meer informatie over wanneer u de richting van kruislings filteren kunt wijzigen.

Deze relatie activeren

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

Zie Inzicht in aanvullende opties voor meer informatie over wanneer u een bepaalde relatie actief wilt maken.

Relaties begrijpen

Zodra u twee tabellen met een relatie hebt verbonden, kunt u met de gegevens in beide tabellen werken alsof ze één tabel zijn. U hoeft zich dan geen zorgen te maken over relatiedetails of het platmaken van deze tabellen in één tabel voordat u ze importeert. In veel situaties kan Power BI Desktop automatisch relaties voor u maken. Als Power BI Desktop echter niet met een hoge mate van zekerheid kan bepalen dat er een relatie tussen twee tabellen moet bestaan, wordt de relatie niet automatisch gemaakt. In dat geval moet u dit doen.

Laten we een korte zelfstudie volgen om u beter te laten zien hoe relaties werken in Power BI Desktop.

Tip

U kunt deze les zelf voltooien:

  1. Kopieer de volgende ProjectHours-tabel naar een Excel-werkblad (met uitzondering van de titel), selecteer alle cellen en selecteer Vervolgens Tabel invoegen>.
  2. Selecteer OK in het dialoogvenster Tabel maken.
  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 record van werktickets die het aantal uren registreren dat een persoon aan een bepaald project heeft gewerkt.

ProjectHours

Ticket SubmittedBy Uur 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 Orange 1/2/2012
1005 Bowen, Eli 29 Paars 10/1/2013
1006 Bento, Nuno 35 Groen 2/1/2013
1007 Hamilton, David 10 Geel 10/1/2013
1008 Han, Mu 28 Orange 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 Prioriteit
Blauw A
Rood B
Green E
Geel E
Paars B
Orange E

U ziet dat elke tabel een projectkolom heeft. Elke naam is iets anders, maar de waarden zien eruit alsof ze hetzelfde zijn. Dat verschil is belangrijk en we komen er binnenkort weer bij.

Nu we onze twee tabellen in een model hebben geïmporteerd, gaan we een rapport maken. Het eerste wat we willen ophalen, is het aantal uren dat is ingediend op projectprioriteit, dus selecteren we Prioriteit en Uren in het deelvenster Velden .

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

Als we onze tabel in het rapportcanvas bekijken, ziet u dat het aantal uren 256 is voor elk project, wat ook het totaal is. Dit getal is duidelijk niet juist. Waarom? Dit komt doordat we geen totaal van waarden uit één tabel (uren in de tabel Project) kunnen berekenen, gesegmenteerd op waarden in een andere tabel (Priority in de tabel CompanyProject) zonder een relatie tussen deze twee tabellen.

Laten we dus een relatie tussen deze twee tabellen maken.

Weet u nog welke kolommen we in beide tabellen hebben gezien met een projectnaam, maar met waarden die er hetzelfde uitzien? We gebruiken deze twee kolommen om een relatie tussen onze tabellen te maken.

Waarom deze kolommen? Als we de kolom Project in de tabel ProjectHours bekijken, zien we waarden zoals Blauw, Rood, Geel, Oranje, enzovoort. In feite zien we verschillende rijen met dezelfde waarde. In feite hebben we veel kleurwaarden voor Project.

Als we de kolom ProjName in de tabel CompanyProject bekijken, zien we dat er slechts één 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. In een veel-op-een-relatie moet ten minste één kolom in een van de tabellen unieke waarden bevatten. Er zijn nog enkele opties voor sommige relaties, waar we later naar kijken. We gaan nu een relatie maken tussen de projectkolommen in elk van onze twee tabellen.

De nieuwe relatie maken

  1. Selecteer Relaties beheren op het tabblad Modellering .

  2. In Relaties beheren selecteert u Nieuw om het dialoogvenster Relatie maken te openen, waar we de tabellen, kolommen en andere instellingen voor onze relatie kunnen selecteren.

  3. Selecteer In de eerste vervolgkeuzelijst ProjectHours als de eerste tabel en selecteer vervolgens de kolom Project . Deze kant is de vele kant van onze relatie.

  4. In de tweede vervolgkeuzelijst wordt CompanyProject vooraf geselecteerd als de tweede tabel. Selecteer de kolom ProjName . Deze kant is de ene kant van onze relatie.

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

    Screenshot of the Create relationship dialog box.

  6. Selecteer Sluiten in het dialoogvenster Relaties beheren.

In het belang van volledige openbaarmaking hebt u deze relatie zojuist gemaakt. Mogelijk hebt u Autodetectie geselecteerd in het dialoogvenster Relaties beheren. Autodetectie zou zelfs automatisch de relatie voor u hebben gemaakt wanneer u de gegevens laadde als beide kolommen dezelfde naam hadden.

Laten we nu de tabel in het rapportcanvas nog eens bekijken.

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

Dat ziet er veel beter uit, hè?

Wanneer we uren optellen op prioriteit, zoekt Power BI Desktop naar elk exemplaar van de unieke kleurwaarden in de opzoektabel CompanyProject , zoekt naar elk exemplaar van elk van deze waarden in de tabel ProjectHours en berekent vervolgens een totaal voor elke unieke waarde.

Met autodetectie hoeft u misschien niet eens zoveel te doen.

Meer informatie over aanvullende opties

Wanneer een relatie wordt gemaakt, met autodetectie of een relatie die u handmatig maakt, configureert Power BI Desktop automatisch aanvullende opties op basis van de gegevens in uw tabellen. Deze extra relatieopties bevinden zich in het onderste gedeelte van de dialoogvensters Relatie maken en Relatie bewerken.

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

In Power BI worden deze opties doorgaans automatisch ingesteld en hoeft u ze niet aan te passen. Maar er zijn verschillende situaties waarin u deze opties mogelijk zelf wilt configureren.

Automatische relatie-updates

U kunt beheren hoe Power BI relaties in uw rapporten en modellen behandelt en automatisch aanpast. Als u wilt opgeven hoe Relaties in Power BI worden verwerkt, selecteert u Opties voor bestanden>en instellingen> in Power BI Desktop en selecteert u Vervolgens Gegevens laden in het linkerdeelvenster. De opties voor Relaties worden weergegeven.

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

Er zijn drie opties die kunnen worden geselecteerd en ingeschakeld:

  • Relaties importeren uit gegevensbronnen bij eerste laden: deze optie is standaard geselecteerd. Wanneer deze optie is geselecteerd, controleert Power BI op relaties die zijn gedefinieerd in uw gegevensbron, zoals relaties met refererende sleutels/primaire sleutels in uw datawarehouse. Als dergelijke relaties bestaan, worden ze gespiegeld in het Power BI-gegevensmodel wanneer u in eerste instantie gegevens laadt. Met deze optie kunt u snel aan de slag met uw model, in plaats van dat u deze relaties zelf moet vinden of definiëren.

  • Relaties bijwerken of verwijderen bij het vernieuwen van gegevens: deze optie is standaard uitgeschakeld. Als u deze optie selecteert, controleert Power BI op wijzigingen in gegevensbronrelaties wanneer uw semantische model wordt vernieuwd. Als deze relaties zijn gewijzigd of verwijderd, spiegelt Power BI deze wijzigingen in een eigen gegevensmodel, waarbij ze worden bijgewerkt of verwijderd zodat deze overeenkomen.

    Waarschuwing

    Als u beveiliging op rijniveau gebruikt die afhankelijk is van de gedefinieerde relaties, raden we u niet aan deze optie te selecteren. Als u een relatie verwijdert waarop uw RLS-instellingen afhankelijk zijn, wordt uw model mogelijk minder veilig.

  • Nieuwe relaties automatisch detecteren nadat gegevens zijn geladen: deze optie wordt tijdens het laden beschreven in Autodetectie.

Toekomstige updates voor de gegevens vereisen een andere kardinaliteit

Normaal gesproken kan Power BI Desktop automatisch de beste kardinaliteit voor de relatie bepalen. Als u de automatische instelling moet overschrijven, omdat u weet dat de gegevens in de toekomst veranderen, kunt u deze wijzigen met het besturingselement Kardinaliteit . Laten we eens kijken naar een voorbeeld waarin we een andere kardinaliteit moeten selecteren.

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

CompanyProjectPriority

ProjName Prioriteit
Blauw A
Rood B
Green E
Geel E
Paars B
Orange E

ProjectBudget

Goedgekeurde projecten 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 Goedgekeurde projecten in de tabel ProjectBudget en de kolom ProjectName in de tabel CompanyProjectPriority , stelt Power BI kardinaliteitautomatisch in op Één (1:1) en kruisfilterrichting op Beide.

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

De reden waarom Power BI deze instellingen maakt, is omdat in Power BI Desktop de beste combinatie van de twee tabellen als volgt is:

ProjName Prioriteit BudgetAllocation AllocationDate
Blauw A 40.000 12/1/2012
Rood B 100,000 12/1/2012
Green E 50,000 12/1/2012
Geel E

Paars B

Orange E

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

Stel dat u weet dat de gegevens de volgende keer dat u deze vernieuwt, worden gewijzigd. Een vernieuwde versie van de tabel ProjectBudget bevat nu extra rijen voor de projecten Blauw en Rood:

ProjectBudget

Goedgekeurde projecten 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

Deze extra rijen betekenen dat de beste combinatie van de twee tabellen er nu als volgt uitziet:

ProjName Prioriteit BudgetAllocation AllocationDate
Blauw A 40.000 12/1/2012
Rood B 100,000 12/1/2012
Green E 50,000 12/1/2012
Geel E

Paars B

Orange E

Blauw A 80.000 6/1/2013
Rood B 90.000 6/1/2013

In deze nieuwe gecombineerde tabel bevat de kolom ProjName herhalende waarden. De twee oorspronkelijke tabellen hebben geen een-op-een-relatie zodra de tabel is vernieuwd. In dit geval, omdat we weten dat deze toekomstige updates ervoor zorgen dat de kolom ProjName dubbele waarden bevat, willen we de kardinaliteit instellen op Veel op één (*:1), met de vele zijden van ProjectBudget en de ene kant op CompanyProjectPriority.

Kruisfilterrichting aanpassen voor een complexe set tabellen en relaties

Voor de meeste relaties is de kruisfilterrichting ingesteld op Beide. Er zijn echter enkele meer ongebruikelijke omstandigheden waarbij u deze optie mogelijk anders moet instellen dan de standaardinstelling. Een voorbeeld is als u een model importeert uit een oudere versie van Power Pivot, waarbij elke relatie is ingesteld op één richting.

Met de instelling Beide kan Power BI Desktop alle aspecten van verbonden tabellen behandelen alsof ze één tabel zijn. Er zijn echter situaties waarin power BI Desktop de kruisfilterrichting van een relatie niet kan instellen op Beide en ook een ondubbelzinnige set standaardwaarden beschikbaar kan houden voor rapportagedoeleinden. Als een kruisfilterrichting voor relaties niet is ingesteld op Beide, is dit meestal omdat er dubbelzinnigheid ontstaat. Als de standaardinstelling voor kruislings filteren niet werkt, kunt u deze instellen op een bepaalde tabel of op Beide.

Kruislings filteren in één richting werkt voor veel situaties. Als u een model hebt geïmporteerd uit Power Pivot in Excel 2013 of eerder, worden alle relaties ingesteld op één richting. Eén richting betekent dat het filteren van keuzen in verbonden tabellen werkt in de tabel waarin het aggregatiewerk plaatsvindt. Soms kan het begrijpen van kruislings filteren een beetje lastig zijn, dus laten we eens kijken naar een voorbeeld.

Als u met kruislings filteren in één richting een rapport maakt dat de projecturen samenvat, kunt u er vervolgens voor kiezen om samen te vatten (of te filteren) op de tabel CompanyProject en de kolom Priority of de tabel CompanyEmployee en de kolom Plaats. Als u echter het aantal werknemers per project wilt tellen (een minder voorkomende vraag), werkt dit niet. U krijgt een kolom met waarden die allemaal hetzelfde zijn. In het volgende voorbeeld is de kruisfilterrichting van beide relaties ingesteld op één richting: naar de tabel ProjectHours . In de bron Waarden is het veld Project ingesteld op Aantal:

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

Filterspecificatie stroomt van CompanyProject naar ProjectHours (zoals weergegeven in de volgende afbeelding), maar wordt niet naar CompanyEmployee gestroomd.

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

Als u de richting voor kruislings filteren echter instelt op Beide, werkt dit wel. Met de instelling Beide kan de filterspecificatie naar CompanyEmployee stromen.

Diagram of a cross filtering example with flow both ways

Nu de richting voor kruislings filteren is ingesteld op Beide, wordt ons rapport nu correct weergegeven:

Screenshot of cross filtering direction set to Both.

Kruislings filteren in beide richtingen werkt goed voor een patroon van tabelrelaties, zoals het patroon dat eerder werd weergegeven. Dit schema wordt meestal een stervormig schema genoemd, zoals hier:

Diagram of cross filtering both directions in star schema.

Kruislings filteren werkt niet goed met een meer algemeen patroon dat vaak wordt gevonden in databases, zoals in dit diagram:

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

Als u een tabelpatroon als dit hebt, met lussen, kan kruislings filteren een dubbelzinnige set relaties maken. Als u bijvoorbeeld een veld optelt uit TableX en er vervolgens voor kiest om te filteren op een veld in TableY, is het niet duidelijk hoe het filter moet reizen, door de bovenste tabel of de onderste tabel. Een veelvoorkomend voorbeeld van dit type patroon is met TableX als een verkooptabel met werkelijke gegevens en voor TableY om budgetgegevens te zijn. Vervolgens zijn de tabellen in het midden opzoektabellen die beide tabellen gebruiken, zoals delen of regio's.

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

  • Verwijder of markeer relaties als inactief om dubbelzinnigheid te verminderen. Vervolgens kunt u mogelijk kruislings filteren op relaties instellen als Beide.
  • Breng twee keer een tabel in (met een andere naam de tweede keer) om lussen te elimineren. Hierdoor wordt het patroon van relaties als een stervormig schema. Met een stervormig schema kunnen alle relaties worden ingesteld op Beide.

Verkeerde actieve relatie

Wanneer Power BI Desktop automatisch relaties maakt, treedt er soms meer dan één relatie tussen twee tabellen op. Wanneer deze situatie zich voordoet, wordt slechts één van de relaties ingesteld op actief. De actieve relatie fungeert als de standaardrelatie, zodat wanneer u velden uit twee verschillende tabellen kiest, Power BI Desktop automatisch een visualisatie voor u kan maken. In sommige gevallen kan de automatisch geselecteerde relatie echter onjuist zijn. Gebruik het dialoogvenster Relaties beheren om een relatie in te stellen als actief of inactief, of stel de actieve relatie in het dialoogvenster Relatie bewerken in.

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

Laten we een voorbeeld bekijken. De eerste tabel is ProjectTickets en de tweede tabel is EmployeeRole.

ProjectTickets

Ticket OpenedBy SubmittedBy Uur 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 Orange 1/2/2012
1005 Roman, Daniel Bowen, Eli 29 Paars 10/1/2013
1006 Roth, Daniel Bento, Nuno 35 Groen 2/1/2013
1007 Roth, Daniel Hamilton, David 10 Geel 10/1/2013
1008 Perham, Tom Han, Mu 28 Orange 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

Werknemer - Rol
Bento, Nuno Projectmanager
Bowen, Eli Projectleider
Brewer, Alan Projectmanager
Hamilton, David Projectleider
Han, Mu Projectleider
Ito, Shu Projectleider
Perham, Tom Projectsponsor
Roman, Daniel Projectsponsor
Roth, Daniel Projectsponsor

Er zijn hier eigenlijk twee relaties:

  • Between Employee in the EmployeeRole table and SubmittedBy in the ProjectTickets table.
  • Between OpenedBy in the ProjectTickets table and Employee in the EmployeeRole table.

Screenshot of a two-relationship example.

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

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

Als we nu een rapport maken dat gebruikmaakt van de velden Rol en Werknemer van EmployeeRole en het veld Uren van ProjectTickets in een tabelvisualisatie in het rapportcanvas, zien we alleen projectsponsoren omdat ze de enige zijn die een projectticket hebben geopend.

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

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

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

Al uw relaties weergeven in de relatieweergave

Soms heeft uw model meerdere tabellen en complexe relaties ertussen. In de relatieweergave in Power BI Desktop ziet u alle relaties in uw model, hun richting en 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 verbaasd 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 gaan gebruiken in de voorbeeldscenario's.

Screenshot of a sample model used in troubleshooting scenarios.

Scenario 1: Traditioneel stervormig schema en geen metingsbeperking opgegeven. Als u verwijst naar het voorbeeldmodel in de vorige afbeelding, kijken we eerst naar de rechter helft van de afbeeldingen met de leveranciers - Aankopen - Producttabellen . Dit voorbeeld is een traditioneel stervormig schema 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 Leverancier 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 eruitzien als in het volgende voorbeeld:

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 die ten minste één vermelding in een feitentabel hebben, die logisch zijn vanuit het perspectief van de gegevens. U kunt verwachten dat er geen onzinnige combinaties van Product-Vendor zijn waarvoor nooit een verkoop is geweest (die nutteloos zou zijn voor analyse) niet wordt weergegeven.

Scenario 2: Traditioneel sterschema en opgegeven beperking voor meting. Als de gebruiker in het vorige voorbeeld in Scenario 1 een beperking biedt in de vorm van een samengevatte kolom (Som/Gemiddelde/Aantal aankopen, bijvoorbeeld) of een modelmeting (Uniek aantal Van VendID), kan Power BI een query genereren in de vorm van het volgende voorbeeld:

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

In dat geval probeert Power BI combinaties te retourneren met zinvolle waarden 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 in het vorige scenario 1 is gedaan, 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 middelpunt van het model, waar we de tabellen Sales - Product - Purchases hebben, waarbij we één dimensietabel (Product) en twee Feitentabellen (Verkoop, Aankopen) hebben. Omdat dit voorbeeld geen stervormig schema is, kunnen we niet hetzelfde soort vragen beantwoorden als in Scenario 1. Stel dat we proberen aankopen en verkopen te correleren, omdat aankopen een veel-op-1-relatie met Product hebben en Product een relatie van 1 tot veel 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 één verkoop niet koppelen aan veel aankopen of omgekeerd. We kunnen alleen veel aankopen koppelen aan veel verkopen.

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

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

Scenario 4: Er is een niet-stervormig schema en een beperking voor meting opgegeven. Als we het voorbeeld uit Scenario 3 nemen 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]), kan Power BI een query genereren in de vorm van Correleren Purchase[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 niet-lege waarden voor de gebruiker produceren. De gebruiker heeft Power BI geleid naar het gewenste scenario en Power BI past de richtlijnen toe.

Scenario 5: Wanneer een metingsbeperking wordt opgegeven, maar deze gedeeltelijk is gerelateerd aan de kolommen. Er zijn gevallen waarin de metingsbeperking van de gebruiker niet volledig is gerelateerd aan alle kolommen in de visual. Een modelmeting heeft altijd betrekking op alles. Power BI behandelt dit scenario als een zwart vak wanneer wordt geprobeerd relaties tussen kolommen in de visual te vinden en wordt ervan uitgegaan dat de gebruiker weet wat ze doen door het 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 sommige combinaties van kolommen, maar niet op alle. In dat geval probeert Power BI standaardbeperkingen te vinden die van toepassing zijn op de kolommen die niet zijn gerelateerd door de door de gebruiker opgegeven beperking (zoals in Scenario 1). Als Power BI er geen kan vinden, wordt de volgende fout geretourneerd.

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

Relatiefouten oplossen

Wanneer u de fout Kan de relaties tussen de veldenfout niet bepalen, 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 een aantal relaties tussen tabellen wijzigen? Kunt u het maken van een indirecte veel-op-veel voorkomen?

    U kunt het omgekeerde V-shapeschema converteren naar twee tabellen en een directe veel-op-veel-relatie gebruiken, 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.

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