Werken met relaties en kardinaliteit

Voltooid

In tegenstelling tot andere databasebeheersystemen heeft Power BI het concept richtinggevoeligheid van een relatie. Deze directionaliteit speelt een belangrijke rol bij het filteren van gegevens tussen meerdere tabellen. Wanneer u gegevens laadt, zoekt Power BI automatisch naar in de gegevens voorkomende relaties via overeenkomende kolomnamen. U kunt ook Relaties beheren gebruiken om deze opties handmatig te bewerken.

U hebt bijvoorbeeld veel tabellen opgehaald uit de database Sales en de volgende afbeelding is een voorbeeld van uw semantische model. Power BI heeft automatisch verschillende relaties gedetecteerd, maar u kunt niet onderscheiden wat ze betekenen. U wilt er zeker van zijn dat de relaties nauwkeurig overeenkomen met die in uw gegevens.

Schermopname van het voorbeeld van een semantisch model

Relaties

Hier volgen verschillende typen relaties die u in Power BI kunt vinden.

Veel-op-een(*:1)- of een-op-veel-relatie (1: *)

  • Hiermee wordt een relatie beschreven waarin u veel exemplaren van een waarde in een kolom hebt die betrekking hebben op slechts één uniek overeenkomstig exemplaar in een andere kolom.

  • Hiermee wordt de richtinggevoeligheid beschreven tussen feiten- en dimensietabellen.

  • Dit is het meest voorkomende type richtinggevoeligheid en het is de Power BI-standaardinstelling wanneer u automatisch relaties maakt.

Een voorbeeld van een een-op-veel-relatie is tussen de tabellen CountryName en Territory, waar u veel gebieden kunt hebben die zijn gekoppeld aan één uniek land.

Schermopname van de veel-op-een-relatie.

Een-op-een-relatie (1:1):

  • Hiermee wordt een relatie beschreven waarbij twee tabellen slechts één exemplaar van een waarde gemeenschappelijk hebben.

  • Hiervoor zijn unieke waarden in beide tabellen vereist.

  • Dit wordt niet aanbevolen omdat met deze relatie redundante informatie wordt opgeslagen en wordt gesuggereerd dat het model niet correct is ontworpen. Het is raadzamer om de tabellen te combineren.

Een voorbeeld van een een-op-een-relatie is als u producten en product-id's in twee verschillende tabellen hebt. Het maken van een een-op-een-relatie is overbodig en deze twee tabellen moeten worden gecombineerd.

Schermopname van de een-op-een-relatie.

Veel-op-veel-relatie (.):

  • Hiermee wordt een relatie beschreven waarbij twee tabellen veel waarden gemeenschappelijk hebben.

  • Hiervoor zijn geen unieke waarden in elk van beide tabellen in een relatie vereist.

  • Dit wordt niet aanbevolen. Als er geen unieke waarden zijn, kan sprake zijn van dubbelzinnigheid en weten uw gebruikers mogelijk niet waarnaar met welke kolom met waarden wordt verwezen.

In de volgende afbeelding ziet u bijvoorbeeld een veel-op-veel-relatie tussen de tabellen Sales en Order in de kolom OrderDate, omdat aan meerdere verkopen meerdere orders kunnen worden gekoppeld. Er is sprake van dubbelzinnigheid omdat beide tabellen dezelfde orderdatum kunnen hebben.

Schermopname van de veel-op-veel-relatie.

Richting van kruislings filteren

Gegevens kunnen worden gefilterd op een of beide zijden van een relatie.

Met kruislings filteren in één richting:

  • Er kan slechts één tabel in een relatie worden gebruikt om de gegevens te filteren. Zo kan tabel 1 worden gefilterd op tabel 2, maar tabel 2 kan niet worden gefilterd op tabel 1.

    Tip

    Volg de richting van de pijl voor de relatie tussen uw tabellen om te bepalen in welke richting het filter stroomt. Normaal gesproken wilt u dat deze pijlen naar uw feitentabel wijzen.

  • Voor een een-op-veel- of veel-op-een-relatie is de richting voor kruislings filteren van de 'een'-kant, wat betekent dat het filteren plaatsvindt in de tabel met veel waarden.

Bij kruislings filteren in beide richtingen of in twee richtingen:

  • Er kan slechts één tabel in een relatie worden gebruikt om de andere te filteren. Een dimensietabel kan bijvoorbeeld worden gefilterd via de feitentabel en de feitentabellen kunnen worden gefilterd via de dimensietabel.

  • Mogelijk hebt u lagere prestaties wanneer u kruislings filteren in twee richtingen gebruikt bij veel-op-veel-relaties.

Wees voorzichtig met kruislings filteren in twee richtingen: Het is beter geen relaties met kruislings filteren in twee richtingen in te schakelen, tenzij u de consequenties hiervan volledig begrijpt. Wanneer u deze functie inschakelt, kan dit leiden tot dubbelzinnigheid, te veel steekproeven, onverwachte resultaten en mogelijke prestatievermindering.

Kardinaliteit en richting van kruislings filteren

Voor een-op-een-relaties is de enige beschikbare optie kruislings filteren in twee richtingen. Gegevens kunnen worden gefilterd aan elk van beide zijden van deze relatie en resulteren in één afzonderlijke, ondubbelzinnige waarde. U kunt bijvoorbeeld filteren op één product-id, waarbij één product wordt geretourneerd, en u kunt filteren op een product, waarbij één product-id wordt geretourneerd.

Bij veel-op-veel-relaties kunt u ervoor kiezen om in één richting of in beide richtingen te filteren met behulp van kruislings filteren in twee richtingen. De dubbelzinnigheid die is gekoppeld aan kruislings filteren in twee richtingen wordt versterkt in een veel-op-veel-relatie, omdat er meerdere paden voorkomen tussen verschillende tabellen. Als u een meting, berekening of filtering uitvoert, kunnen onbedoelde gevolgen optreden waarbij uw gegevens worden gefilterd en, afhankelijk van de relatie die de Power BI-engine kiest bij het toepassen van het filter, het uiteindelijke resultaat mogelijk verschillend is. Deze situatie geldt ook voor bidirectionele relaties, en dat is de reden waarom u voorzichtig moet zijn wanneer u ze gebruikt.

Daarom zijn veel-op-veel-relaties en/of bidirectionele relaties gecompliceerd. Tenzij u zeker weet hoe uw gegevens eruitzien wanneer ze zijn geaggregeerd, kunnen deze typen open-end-relaties met meerdere filterrichtingen meerdere paden door de gegevens aanleggen.

Veel-op-veel-relaties maken

Denk na over het scenario waarin u opdracht krijgt om een visual te maken waarmee budgetten voor klanten en accounts worden onderzocht. U kunt meerdere klanten hebben op hetzelfde account en meerdere accounts met dezelfde klant; dus u weet dat u een veel-op-veel-relatie moet maken.

Schermopname van veel-op-veel-relatie.

Als u deze relatie wilt maken, gaat u naar Relaties beheren>Nieuw. Maak in het resulterende venster een relatie tussen de kolom Customer ID in CustomerTable en AccountTable. De relatie is ingesteld op veel-op-veel en het filtertype bevindt zich in beide richtingen. U wordt onmiddellijk gewaarschuwd dat u alleen dit type relatie moet gebruiken als er wordt verwacht dat geen van beide kolommen unieke waarden heeft omdat u mogelijk onverwachte waarden krijgt. Omdat u wilt filteren in beide richtingen, kiest u kruislings filteren in twee richtingen.

Selecteer OK. U hebt nu een veel-op-veel-relatie gemaakt.

Schermopname van veel-op-veel-relatie in Relatie beheren.

Zie Veel-op-veel-relaties in Power BI voor meer informatie.