Ge dina dataanalyser mer kraft genom att skapa relationer med amogn olika tabeller. En relation är en koppling mellan två tabeller som innehåller data: en kolumn i varje tabell är grunden för relationen. Du märker hur användbara relationer kan vara genom att föreställa dig att du spårar data för verksamhetens kundorder. Du kan spåra alla data i en enskild tabell med en struktur som den här:
Kund-ID |
Namn |
E-post |
Rabatt |
Order-ID |
Orderdatum |
Produkt |
Antal |
---|---|---|---|---|---|---|---|
1 |
Ashton |
chris.ashton@contoso.com |
.05 |
256 |
2010-01-07 |
Compact Digital |
11 |
1 |
Ashton |
chris.ashton@contoso.com |
.05 |
255 |
2010-01-03 |
SLR Camera |
15 |
2 |
Jaworski |
michal.jaworski@contoso.com |
.10 |
254 |
2010-01-03 |
Budget Movie-Maker |
27 |
Den här metoden kan fungera, men då uppstår en mängd redundanta data, till exempel kundens e-postadress för varje order. Lagring är billigt, men om e-postadressen ändras måste du uppdatera varje rad för den kunden. En lösning på det här problemet är att dela upp data i flera tabeller och ange relationer mellan tabellerna. Det här är den metod som används i relationsdatabaser som SQL Server. En databas som du importerar kan exempelvis representera orderdata med hjälp av följande tre relaterade tabeller:
Kunder
[Kund-ID] |
Namn |
E-post |
---|---|---|
1 |
Ashton |
chris.ashton@contoso.com |
2 |
Jaworski |
michal.jaworski@contoso.com |
Kundrabatter
[Kund-ID] |
Rabatt |
---|---|
1 |
.05 |
2 |
.10 |
Order
[Kund-ID] |
Order-ID |
Orderdatum |
Produkt |
Antal |
---|---|---|---|---|
1 |
256 |
2010-01-07 |
Compact Digital |
11 |
1 |
255 |
2010-01-03 |
SLR Camera |
15 |
2 |
254 |
2010-01-03 |
Budget Movie-Maker |
27 |
Relationer finns i en datamodell – en som du skapar explicit, eller en som Excel skapar automatiskt åt dig när du samtidigt importerar flera tabeller. Du kan även använda Power Pivot-tilläggsprogrammet för att skapa eller hantera modellen. Mer information finns i Skapa en datamodell i Excel.
Om du använder Power Pivot-tilläggsprogrammet för att importera tabeller från samma databas kan Power Pivot identifiera relationerna mellan tabellerna baserat på vilka kolumner som står inom [hakparentes] och kan sedan återge dessa relationer i en datamodell som genereras i bakgrunden. Mer information finns i Automatisk identifiering och slutledning av relationer i den här artikeln. Om du importerar tabeller från flera källor kan du skapa relationer manuellt genom att följa anvisningarna i Skapa en relation mellan två tabeller.
Relationer baseras på kolumner i respektive tabell som innehåller samma data. Du kan till exempel relatera tabellen Kunder till tabellen Order om var och en innehåller en kolumn som lagrar ett kund-ID. I exemplet är kolumnnamnen samma, men detta är inget krav. En kan heta Kund-ID och en annan Kundnummer, bara alla raderna i tabellen Order innehåller ett ID som också lagras i tabellen Kunder.
I en relationsdatabas finns det flera typer av nycklar. En nyckel är vanligtvis en kolumn med särskilda egenskaper. Genom att förstå syftet med varje nyckel kan det bli lättare att hantera en datamodell med flera tabeller som tillhandahåller data till en pivottabell, ett pivotdiagram eller en Power View-rapport.
Även om det finns många typer av nycklar är dessa de viktigaste för vårt syfte här:
-
Primärnyckel: identifierar unikt en rad i en tabell, till exempel Kundnr i tabellen Kunder .
-
Alternativ nyckel (eller kandidatnyckel): en annan kolumn än primärnyckeln som är unik. Till exempel tabellen Anställda kan innehålla ett anställnings-ID och ett personnummer, som båda är unika.
-
Sekundärnyckel: en kolumn som refererar till en unik kolumn i en annan tabell, till exempel Kundnr i tabellen Order , som refererar till Kundnr i tabellen Kunder.
I en datamodell kallas primärnyckeln eller den alternativa nyckeln för relaterad kolumn. Om en tabell har både en primärnyckel och en alternativ nyckel kan du använda någon av dessa som grund för en tabellrelation. Sekundärnyckeln kallas för källkolumnen eller bara kolumnen. I vårt exempel definieras en relation mellan Kundnr i tabellen Order (kolumnen) och Kundnr i tabellen Kunder (uppslagskolumnen). Om du importerar data från en relationsdatabas väljer Excel sekundärnyckeln från en tabell och motsvarande primärnyckel från en annan tabell som standard. Du kan emellertid använda valfri kolumn som har unika värden för uppslagskolumnen.
Relationen mellan en kund och en order är en 1:N-relation. Varje kund kan ha flera order, men en order kan inte ha flera kunder. En annan viktig tabellrelation är 1:1. I vårt exempel här har tabellen CustomerDiscounts , som definierar en enda diskonteringsränta för varje kund, en 1:1-relation med tabellen Kunder.
I den här tabellen visas relationerna mellan de tre tabellerna (Kunder, Kundantal och Order):
Relation |
Typ |
Uppslagskolumn |
Kolumn |
---|---|---|---|
Kunder-Kundrabatter |
en-till-en |
Kunder.Kund-ID |
Kundrabatter.Kund-ID |
Kunder-Order |
en-till-många |
Kunder.Kund-ID |
Order.Kund-ID |
Obs!: En datamodell kan inte ha många-till-många-relationer. Ett exempel på en många-till-många-relation är en direkt relation mellan Products och Customers, där en kund kan köpa flera produkter och samma produkt kan köpas av flera kunder.
När en relation har skapats måste alla formler som använder kolumner från tabeller i den nya relationen beräknas om. Bearbetningen kan ta en stund, beroende på mängden data och hur komplexa relationerna är. Mer information finns i Beräkna om formler.
En datamodell kan ha flera relationer mellan två tabeller. För att skapa korrekta beräkningar behöver Excel en enda sökväg från en tabell till nästa. Därför är bara en relation mellan varje tabellpar aktiv i taget. Även om de andra är inaktiva kan du ange en inaktiv relation i formler och frågor.
I diagramvyn är den aktiva relationen en heldragen linje och de inaktiva är streckade linjer. I AdventureWorksDW2012 innehåller till exempel tabellen DimDate en kolumn, DateKey, som är relaterad till tre olika kolumner i tabellen FactInternetSales: OrderDate, DueDate och ShipDate. Om den aktiva relationen är mellan DateKey och OrderDate, är det standardrelationen i formler om inget annat anges.
En relation kan skapas när följande krav uppfylls:
Villkor |
Beskrivning |
---|---|
Unik identifierare för varje tabell |
Varje tabell måste ha en enstaka kolumn som unikt identifierar varje rad i tabellen. Den här kolumnen kallas ofta för primärnyckeln. |
Unika uppslagskolumner |
Datavärdena i uppslagskolumnen måste vara unika. Med andra ord kan kolumnen inte innehålla dubbletter. I en datamodell motsvaras null-värden och tomma strängar av blankvärden, som är ett särskilt datavärde. Det betyder att det inte får finnas flera null-värden i uppslagskolumnen. |
Kompatibla datatyper |
Datatyperna i källkolumnen och uppslagskolumnen måste vara kompatibla. Mer information om datatyper finns i Datatyper som stöds i datamodeller. |
Du kan inte skapa en tabellrelation i en datamodell om nyckeln är en sammansatt nyckel. Du är också begränsad till att skapa en-till-en-relation och en-till-många-relationer. Andra relationstyper stöds inte.
Sammansatta nycklar och uppslagskolumner
En sammansatt nyckel består av mer än en kolumn. Datamodeller kan inte använda sammansatta nycklar: en tabell måste alltid ha exakt en kolumn som unikt identifierar varje rad i tabellen. Om du importerar tabeller som har en befintlig relation baserat på en sammansatt nyckel ignorerar tabellimportguiden i Power Pivot den relationen eftersom den inte kan skapas i modellen.
Om du vill skapa en relation mellan två tabeller som innehåller flera kolumner som definierar primärnyckeln och sekundärnyckeln, kombinerar du värdena för att skapa en enda nyckelkolumn innan du skapar relationen. Det kan du göra innan du importerar data eller genom att skapa en beräknad kolumn i datamodellen med powerpivot-tillägget.
Många-till-många-relationer
En datamodell kan inte ha många-till-många-relationer. Du kan inte bara lägga till kopplingstabeller i modellen. Du kan emellertid använda DAX-funktioner för att skapa många-till-många-relationer.
Självkopplingar och loopar
Självkopplingar tillåts inte i en datamodell. En självkoppling är en rekursiv relation mellan en tabell och sig själv. Självkopplingar används ofta för att definiera hierarkier mellan överordnade och underordnade. Du kan till exempel koppla tabellen Anställda till sig själv och skapa en hierarki som visar beslutskedjan i ett företag.
I Excel går det inte att skapa loopar mellan relationer i en arbetsbok. Med andra ord tillåts inte följande uppsättning med relationer.
Tabell 1, kolumn a till Tabell 2, kolumn f
Tabell 2, kolumn f till Tabell 3, kolumn n
Tabell 3, kolumn n till Tabell 1, kolumn a
Om du försöker skapa en relation som medför att en loop skapas, uppstår ett fel.
En av fördelarna med att importera data med hjälp av Power Pivot-tilläggsprogrammet är att Power Pivot ibland identifierar relationer och skapar nya relationer i datamodellen som skapas i Excel.
När du importerar flera tabeller identifierar Power Pivot befintliga relationer mellan tabellerna automatiskt. När du skapar en pivottabell analyserar Power Pivot också de data som finns i tabellerna. Programmet identifierar möjliga relationer som inte har skapats, och föreslår lämpliga kolumner som bör användas i dessa relationer.
I identifieringsalgoritmen används statistiska data om värden och metadata i kolumner för antaganden om sannolikheten för relationer.
-
Datatyperna i alla relaterade kolumner måste vara kompatibla. Vid automatisk identifiering stöds bara datatyper med heltal och text. Mer information om datatyper finns i Datatyper som stöds idatamodeller.
-
För att relationen ska upptäckas måste antalet unika nycklar i uppslagskolumnen vara större än värdena i tabellen på "många"-sidan. Det betyder att nyckelkolumnen på "många"-sidan av relationen inte får innehålla några värden som inte finns i uppslagstabellens nyckelkolumn. Anta till exempel att du har en tabell som visar produkter med deras ID:n (uppslagstabellen) och en försäljningstabell som visar försäljningen för varje produkt ("många"-sidan av relationen). Om försäljningsposterna innehåller ID:t för en produkt som inte har något motsvarande ID i tabellen Products så kan relationen inte skapas automatiskt, men du kan kanske skapa den manuellt. För att relationen ska upptäckas av Excel måste du först uppdatera uppslagstabellen Product med ID:na för de produkter som saknas.
-
Kontrollera att namnet på nyckelkolumnen på "många"-sidan liknar namnet på nyckelkolumnen i uppslagskolumnen. Namnen måste inte vara identiska. I en affärsinställning har du till exempel ofta variationer på namnen på kolumner som innehåller i princip samma data: Emp ID, EmployeeID, Anställnings-ID, EMP_ID och så vidare. Med algoritmen upptäcks namn som liknar varandra och en högre sannolikhet tilldelas de kolumner som har liknande namn eller namn som matchar exakt. För att öka sannolikheten att en relation skapas kan du därför prova att ändra namn på kolumnerna i de data du importerar till något som liknar kolumnerna i de befintliga tabellerna. Om Excel hittar flera möjliga relationer skapas ingen relation automatiskt.
Den här informationen kan hjälpa dig att förstå varför inte alla relationer identifieras, eller hur ändringar i metadata, till exempel fältnamn och datatyper, kan leda till bättre resultat vid automatisk identifiering av relationer. Mer information finns i Felsöka relationer.
Automatisk identifiering för namngivna uppsättningar
Relationer identifieras inte automatiskt mellan namngivna uppsättningar och relaterade fält i en pivottabell. Du kan skapa dessa relationer manuellt. Om du vill använda automatisk identifiering av relationer tar du bort alla namngivna uppsättningar och lägger till de enskilda fälten från den namngivna uppsättningen direkt i pivottabellen.
Slutledning av relationer
I vissa fall länkas relationer mellan tabeller automatiskt. Om du till exempel skapar en relation mellan de två första uppsättningarna med tabeller nedan, antas en relation förekomma mellan de andra två tabellerna, och en relation upprättas automatiskt.
Produkter och Kategori -- skapas manuellt
Kategori och Underkategori -- skapas manuellt
Produkter och Underkategori -- relation antas förekomma
För att relationer ska kunna länkas automatiskt, måste relationerna gå i en riktning, på det sätt som visas ovan. Om de inledande relationerna finns mellan till exempel Försäljning och Produkter, och Försäljning och Kunder, antas ingen relation förekomma. Detta beror på att relationen mellan Products och Customers är en många-till-många-relation.