Delen via


Richtlijnen voor een-op-een-relatie

Dit artikel is bedoeld voor u als gegevensmodelleur die met Power BI Desktop werkt. Het biedt u richtlijnen voor het werken met een-op-een-modelrelaties. Er kan een een-op-een-relatie worden gemaakt wanneer beide tabellen elk een kolom met gemeenschappelijke en unieke waarden bevatten.

Notitie

In dit artikel wordt geen inleiding tot modelrelaties behandeld. Als u niet volledig bekend bent met relaties, hun eigenschappen of hoe u ze configureert, raden we u aan eerst de modelrelaties in Power BI Desktop te lezen.

Het is ook belangrijk dat u inzicht hebt in het ontwerp van stervormige schema's. Zie Meer informatie over stervormige schema's en het belang van Power BI.

Er zijn twee scenario's met een-op-een-relaties:

  • Gegeneerde dimensies: U kunt een gegeneerde dimensie uit een feitentabel afleiden.

  • rijgegevens die verspreid zijn over tabellen: één bedrijfsentiteit of onderwerp wordt geladen als twee (of meer) modeltabellen, mogelijk omdat hun gegevens afkomstig zijn uit verschillende databronnen. Dit scenario kan gebruikelijk zijn voor dimensietabellen. Hoofdproductdetails worden bijvoorbeeld opgeslagen in een operationeel verkoopsysteem en aanvullende productdetails worden opgeslagen in een andere bron.

    Het is echter ongebruikelijk dat u twee feitentabellen koppelt aan een een-op-een-relatie. Dat komt doordat beide feitentabellen dezelfde dimensionaliteit en granulariteit moeten hebben. Elke feitentabel heeft ook unieke kolommen nodig om de modelrelatie te kunnen maken.

Gedegenereerde dimensies

Wanneer kolommen uit een feitentabel worden gebruikt voor filteren of groeperen, kunt u overwegen deze beschikbaar te maken in een afzonderlijke tabel. Op deze manier scheidt u kolommen die worden gebruikt voor filteren of groeperen van die kolommen die worden gebruikt om feitenrijen samen te vatten. Deze scheiding kan:

  • Verminder de opslagruimte.
  • Modelberekeningen vereenvoudigen.
  • Bijdragen aan het verbeteren van de queryprestaties.
  • Bied uw rapportauteurs een intuïtievere ervaring met het deelvenster Gegevens.

Bekijk een brontabel met de naam Sales waarin de verkooporderregelgegevens in twee kolommen worden opgeslagen.

diagram met tabelrijen voor de tabel Sales degenerate dimension. Het ontwerp wordt beschreven in de volgende alinea.

In de kolom OrderNumber wordt het ordernummer opgeslagen en in de kolom OrderLineNumber wordt een reeks regels in de order opgeslagen.

In de volgende afbeelding ziet u dat de kolommen ordernummer en orderregelnummer niet in de Sales tabel zijn geladen. In plaats daarvan werden hun waarden gebruikt om een surrogaatsleutel te maken kolom met de naam OrderLineNumberID. (De sleutelwaarde wordt berekend door het ordernummer te vermenigvuldigen met 1000 en vervolgens het orderregelnummer toe te voegen.)

Diagram met twee tabellen: Verkoop en Verkooporder. Een een-op-eenrelatie heeft betrekking op de kolommen Orderregelnummer-ID.

De Sales Order dimensietabel biedt een uitgebreide ervaring voor rapportauteurs met twee kolommen: Sales Order en Sales Order Line. Deze specifieke kolommen ondersteunen rapportontwerpen die moeten worden gefilterd, gegroepeerd of ingezoomd op orders en orderregels.

Omdat de Sales Order tabel is afgeleid van de verkoopgegevens, moet er precies hetzelfde aantal rijen in elke tabel zijn. Verder moeten er overeenkomende waarden zijn tussen elke OrderLineNumberID kolom.

Rijgegevens omvatten meerdere tabellen

Bekijk een voorbeeld met twee een-op-een-gerelateerde dimensietabellen: Product en Product Category. Elke tabel vertegenwoordigt geïmporteerde gegevens en heeft een kolom SKU (voorraadbeheereenheid) die unieke waarden bevat.

Hier volgt een gedeeltelijk modeldiagram van de twee tabellen.

diagram met een model dat twee tabellen bevat waarin rijgegevens tussen tabellen staan. Het ontwerp wordt beschreven in de volgende alinea.

De eerste tabel heeft de naam Producten bevat drie kolommen: Color, Producten SKU. De tweede tabel heet Product Categoryen bevat twee kolommen: Category en SKU. Een een-op-een-relatie verbindt de twee SKU kolommen. De relatie filtert in beide richtingen, wat altijd het geval is voor een-op-een-relaties.

Om te beschrijven hoe de doorgifte van het relatiefilter werkt, worden in de volgende afbeelding enkele tabelrijen weergegeven. Alle voorbeelden in dit artikel zijn gebaseerd op deze gegevens.

diagram met de tabellen Product en Productcategorie en enkele rijen met gegevens. De rijdetails worden beschreven in de volgende alinea.

De rijdetails voor de twee tabellen worden beschreven in de volgende lijst met opsommingstekens:

  • De tabel Product heeft drie rijen:
    • SKU CL-01, ProductT-shirt, ColorGroen
    • SKU CL-02, ProductJeans, ColorBlue
    • SKU AC-01, ProductHat, ColorBlue
  • De tabel Product Category heeft twee rijen:
    • SKU CL-01, CategoryKleding
    • SKU AC-01, CategoryAccessoires

U ziet dat de tabel Product Category geen rij bevat voor de product-SKU CL-02. Verderop in dit artikel bespreken we de gevolgen van deze ontbrekende rij.

In het deelvenster Gegevens zoeken rapportauteurs productgerelateerde velden in twee tabellen: Product en Product Category. Laten we eens kijken wat er gebeurt wanneer velden uit beide tabellen worden toegevoegd aan een tabelvisual. In dit voorbeeld is de kolom SKU afkomstig uit de Product tabel.

Diagram dat het Gegevensvenster toont met twee tabellen en een tabelweergave die vier kolommen bevat. De categorieënwaarde voor product-SKU CL-02 is LEEG.

Let op dat de Category-waarde voor product-SKU CL-02 leeg is. Dat komt doordat er geen overeenkomende rij in de tabel Product Category voor dit product staat.

Aanbevelingen

Indien mogelijk wordt u aangeraden geen een-op-een-modelrelaties te maken wanneer rijgegevens over modeltabellen bestaan. Dat komt doordat dit ontwerp het volgende kan doen:

  • Bijdragen aan onbelangrijke gegevensvensters, waarin meer tabellen worden weergegeven dan nodig is.
  • Het is moeilijk voor rapportauteurs om gerelateerde velden te vinden, omdat ze over meerdere tabellen worden verdeeld.
  • Beperk de mogelijkheid om hiërarchieën te maken, omdat hun niveaus moeten zijn gebaseerd op kolommen uit dezelfde tabel.
  • Onverwachte resultaten produceren wanneer er geen volledige overeenkomst is tussen rijen tussen de tabellen.

Specifieke aanbevelingen verschillen, afhankelijk van of de een-op-een-relatie intra-brongroep of cross-sourcegroep is. Zie Modelrelaties in Power BI Desktopvoor meer informatie over de evaluatie van relaties.

Een-op-een-relatie tussen brongroepen

Wanneer er een een-op-een-relatie tussen de brongroepen tussen tabellen bestaat, raden we u aan de gegevens samen te brengen in één modeltabel. U kunt dit doen door de Power Query-query's samen te voegen.

De volgende stappen bevatten een methodologie voor het samenvoegen en modelleren van de een-op-een gerelateerde gegevens.

  1. Query's samenvoegen: Bij het combineren van de twee query's moet u rekening houden met de volledigheid van gegevens in elke query. Als één query een volledige set rijen (zoals een hoofdlijst) bevat, voegt u de andere query eraan samen. Stel de samenvoegtransformatie in om een left outer jointe gebruiken, dat het standaard jointype is. Dit jointype zorgt ervoor dat u alle rijen van de eerste query bewaart en deze aanvult met overeenkomende rijen van de tweede query. Vouw alle vereiste kolommen van de tweede query uit in de eerste query.

    Diagram met gegevens die zijn samengevoegd tot een enkele Product-dimensietabel.

  2. Querybelasting uitschakelen: zorg ervoor dat u de belasting van de tweede query uitschakelt. Op deze manier wordt het resultaat niet geladen als een modeltabel. Deze configuratie vermindert de opslaggrootte van het gegevensmodel en helpt bij het opheffen van het deelvenster Gegevens .

    In ons voorbeeld zoeken rapportauteurs nu één tabel met de naam Product in het deelvenster Gegevens. Het bevat alle productgerelateerde velden.

  3. Ontbrekende waarden vervangen: Als de tweede query niet-overeenkomende rijen bevat, worden null-waarden weergegeven in de kolommen die ermee worden geïntroduceerd. U kunt eventueel null-waarden vervangen door een tokenwaarde. Het vervangen van ontbrekende waarden is vooral belangrijk wanneer auteurs van rapporten filteren of groeperen op de kolomwaarden, omdat LEGE WAARDEN kunnen worden weergegeven in rapportvisuals.

    In de volgende afbeelding ziet u dat de categorie voor product-SKU CL-02 nu [Niet gedefinieerd]leest. In de query zijn null-categorieën vervangen door deze tokentekstwaarde.

    diagram met het Gegevens-paneel voor de Producttabel. Er wordt ook een tabelweergave met vier kolommen weergegeven. De categoriewaarde voor product-SKU CL-02 heeft nu het label Ongedefinieerd.

  4. Hiërarchieën maken: Als er relaties bestaan tussen de kolommen van de nu geconsolideerde tabel, kunt u overwegen om hiërarchieën te maken. Op deze manier identificeren rapportauteurs snel mogelijkheden voor het analyseren van rapportvisuals.

    In ons voorbeeld kunnen auteurs van rapporten nu een hiërarchie met twee niveaus gebruiken: Category en Product.

    diagram met het deelvenster Gegevens. De tabel Product bevat de hiërarchie Producten.

Als u wilt hoe afzonderlijke tabellen helpen bij het organiseren van uw velden, raden we u nog steeds aan om samen te voegen in één tabel. U kunt uw velden nog steeds ordenen, maar in plaats daarvan kunt u weergavemappen gebruiken.

In ons voorbeeld kunnen rapportauteurs het Category veld vinden in de Marketing weergavemap.

diagram met het deelvenster Gegevens waarin het veld Categorie zich in een weergavemap met de naam Marketing bevindt.

Als u nog steeds besluit om een-op-een-relaties binnen de brongroep in uw model te definiëren, moet u, indien mogelijk, ervoor zorgen dat er overeenkomende rijen in de gerelateerde tabellen zijn. Omdat een een-op-een-relatie binnen een brongroep wordt geëvalueerd als een reguliere relatie, kunnen problemen met gegevensintegriteit in uw rapportvisuals worden weergegeven als BLANK's. (U ziet een voorbeeld van een LEGE groepering in de eerste tabelvisual die in dit artikel wordt weergegeven.)

Een-op-een-relatie tussen brongroepen

Wanneer er een een-op-een-meerdere brongroepen relatie tussen tabellen bestaat, is er geen alternatief modelontwerp, tenzij u de gegevens in uw gegevensbron vooraf samenvoegt. Power BI evalueert de een-op-een-modelrelatie als een beperkte relatie. Zorg er daarom voor dat er overeenkomende rijen in de gerelateerde tabellen zijn, omdat niet-overeenkomende rijen worden geëlimineerd uit queryresultaten.

diagram met een een-op-een-relatie tussen meerdere brongroepen, een beperkte relatie.

Laten we eens kijken wat er gebeurt wanneer velden uit beide tabellen worden toegevoegd aan een tabelvisual en er een beperkte relatie tussen de tabellen bestaat.

Diagram met twee tabelvisualisaties, welke in de volgende alinea worden beschreven.

In de eerste tabelvisual, die gebruikmaakt van een relatie tussen meerdere brongroepen, worden alleen twee rijen weergegeven. Product-SKU CL-02 ontbreekt omdat er geen overeenkomende rij in de Product Category tabel staat. In de tweede tabelvisual, op basis van één geconsolideerde tabel in het model, worden drie rijen weergegeven.

Raadpleeg de volgende bronnen voor meer informatie over dit artikel: