Arbeta med relationer och komplexitet

Slutförd

Till skillnad från andra databashanteringssystem Power BI används riktningsbegreppet till en relation. Denna directionality är en viktig roll när du filtrerar data mellan flera register. När du läser in data söker Power BI du automatiskt efter relationer som finns i data genom att matcha kolumnnamn. Du kan också använda Hantera relationer om du vill redigera dessa alternativ manuellt.

Du har till exempel hämtat många register från försäljningsdatabasen, och bilden nedan är ett exempel på din modell för modellförsäljning. Power BI har flera relationer automatiskt, men du kan inte se vad de betyder. Du vill försäkra dig om att relationerna återspeglar de som finns i dina data.

Relationer

Följande är olika typer av relationer som du kommer att hitta i Power BI.

Flera-till-en-relation (*:1) eller en-till-många-relation (1: *)

  • Beskriver en relation där du har många instanser av ett värde i en kolumn som bara är relaterade till en unik motsvarande instans i en annan kolumn.

  • Beskriver riktningsriktningen mellan fakta- och dimensionsregister.

  • Är den vanligaste typen av riktning och är standard Power BI när du skapar relationer automatiskt.

Ett exempel på en en-till-många-relation skulle vara mellan registren För landsnamn och Territorier, där du kan ha många territorier som är associerade med ett unikt land.

En-till-en-relation (1:1):

  • Beskriver en relation där det bara finns en instans av ett värde som är gemensam mellan två register.

  • Kräver unika värden i båda registren.

  • Rekommenderas inte eftersom denna relation lagrar redundant information och föreslår att modellen inte har utformats på rätt sätt. Det är bättre att kombinera registren.

Ett exempel på en en-till-en-relation skulle vara om du hade produkter och produkt-ID:er i två olika register. Att skapa en en-till-en-relation är redundant och dessa två register ska kombineras.

Relation mellan många (.):

  • Beskriver en relation där många värden är gemensamma för två register.

  • Kräver inte unika värden i något av register i en relation.

  • Rekommenderas inte; en brist på unika värden introducerar ambiguity och dina användare kanske inte vet vilken kolumn med värden som refererar till vad.

I bilden nedan visas till exempel en flera-till-många-relation mellan försäljnings- och orderregistren i kolumnen Orderdatum eftersom flera försäljningar kan ha flera order kopplade till sig. Ambiguity finns eftersom båda registren kan ha samma orderdatum.

Riktning mellan filter

Data kan filtreras på en eller bådas beroende av en relation.

Med en riktning mellan filter:

  • Endast ett register i en relation kan användas för att filtrera data. Tabell 1 kan till exempel filtreras efter Tabell 2, men Register 2 kan inte filtreras efter Tabell 1.

    Dricks

    Följ pilens riktning på relationen mellan registren för att veta vilken riktning filtret ska flöda i. Vanligtvis vill du att pilarna ska peka på faktatabellen.

  • För en en-till-flera- eller flera-till-en-relation kommer korsfilterriktningen att vara från sidan "en", vilket innebär att filtreringen förekommer i registret som har många värden.

Med både korsfilterriktningar eller dubbelriktade korsfiltrering:

  • Ett register i en relation kan användas för att filtrera det andra. Ett dimensionsregister kan till exempel filtreras via faktaregistret, och faktaregistren kan filtreras via dimensionsregistret.

  • Du kan ha lägre prestanda när du använder dubbelriktad korsfiltrering med relationer mellan flera.

Ett varnings ord om dubbelriktad korsfiltrering: Du bör inte aktivera dubbelriktade korsfiltreringsrelationer om du inte helt och hållet förstår förgreningar när du gör det. Att aktivera den kan leda till ambiguity, översampling, oväntade resultat och potentiell prestanda.

Äkthet och korsfilterriktning

För en-till-en-relationer är det enda alternativ som är tillgängligt dubbelriktad korsfiltrering. Data kan filtreras på antingen sidan om den här relationen och resultera i ett helt otvetydigt värde. Du kan till exempel filtrera på ett produkt-ID och returnera en enstaka produkt, och du kan filtrera efter en produkt och returneras med ett enda produkt-ID.

För flera till många relationer kan du välja att filtrera i en enda riktning eller i båda riktningarna genom att använda dubbelriktad korsfiltrering. Den ambiguitet som associeras med dubbelriktad korsfiltrering förstärs i en flera-till-många-relation eftersom det finns flera sökvägar mellan olika register. Om du skapar ett mått, en beräkning eller ett filter kan oavsiktliga följder inträffa när dina data filtreras och, Power BI beroende på vilken relation som motorn väljer när filtret används, kan slutresultatet bli olika. Denna situation gäller även för tvåriktningsrelationer och varför du bör förkänna när du använder dem.

Därför komplicerades många till många relationer och/eller dubbelriktade relationer. Om du inte är säker på hur dina data ser ut när de aggregeras kan dessa typer av öppna relationer med flera filtreringsriktningar införa flera sökvägar genom data.

Skapa relationer mellan flera

Tänk på det scenario där du har till uppgift att bygga ett visuellt scenario som granskar budgetar för kunder och konton. Du kan ha flera kunder på samma konto och flera konton med samma kund, så du vet att du behöver skapa en relation mellan flera.

Om du vill skapa den här relationen går du till Hantera relationer>ny. Skapa en relation mellan kolumnen Kund-ID i CustomerTable och AccountTable i fönstret som visas. Relationen har ställts in på flera eller flera och filtertypen ligger i båda riktningarna. Omedelbart får du en varning om att du endast ska använda den här typen av relation om det förväntas att ingen av kolumnerna kommer att ha unika värden eftersom du kan få oväntade värden. Eftersom du vill filtrera i båda riktningarna kan du välja dubbelriktad korsfiltrering.

Välj OK. Du har nu skapat en flera-till-många-relation.

Mer information finns i Flera till många-relationer. Power BI