Kardinalitet och referensintegritet
Konfigurationen av en datakälla kräver, oavsett hur du kombinerar data, kunskap om datastrukturen för varje tabell och om hur de kan kombineras. Det finns flera viktiga element som bör övervägas:
- Detaljnivå: hur detaljerade data är – dess detaljnivå. Du kan se det som ett svar på frågan ”vad definierar en rad?”. Mer information om detaljnivå finns i Strukturera data för analys
- Delat fält: Det måste finnas minst ett fält som kan användas som en länk mellan tabeller. För en koppling definierar dessa fält kopplingssatsen. I relaterade tabeller fastställer de relationen.
- Kardinalitet: hur många eller hur få unika värden som finns för det delade fältet (unikhet). Mer information finns i nästa avsnitt.
- Referensintegritet: ett värde i en tabell garanteras en matchning i den andra tabellen. Med andra ord kan det inte finnas en post i en tabell som inte har en motsvarande post i den andra tabellen. Mer information finns nedan.
Kardinalitet
Kardinalitet i en enskild kolumn eller ett enskilt fält pekar på hur unika värdena är. Låg kardinalitet innebär att det endast finns ett fåtal unika värden (som till exempel i ett fält för ögonfärg). Hög kardinalitet innebär att det finns många unika värden (som till exempel i ett fält för telefonnummer).
Kardinaliteten är ungefär lika hög i tabellerna, men pekar på huruvida en rad från en tabell kan länkas till mer än en rad i en annan tabell. (Det är viktigt att komma ihåg att kardinalitet inte visar om det finns data som saknas i någon tabell. Att data saknas är referensintegritet. Även om dessa koncept fungerar tillsammans finns det två olika attribut i relationen.)
Alternativen är en-till-en, en-till-många, många-till-en och många-till-många.
En-till-en
Exempel: Varje bil har en egen registreringsskylt och en registreringsskylt är specifik för en enskild bil. Bil-till-registreringsskylt är en-till-en. Observera att även om en bil är oregistrerad eller om en registreringsskylt inte har tilldelats en bil, så beskrivs den avvikelsen av referensintegriteten. En bil kan endast ha en registreringsskylt och en registreringsskylt kan endast tilldelas en bil, så kardinaliteten förblir en-till-en. |
|
En-till-många eller Många-till-en
Exempel: Många anställda har samma chef. Anställda-till-chef är många-till-en. Chef-till-anställda är en-till-många. |
|
Många-till-många
Exempel: En skådespelare spelar i många filmer och en film innehåller många skådespelare. Skådespelare-till-film är många-till-många. Flera böcker kan köpas i samma transaktion och en bok kan köpas flera gånger. ISBN-till-Order-ID är många-till-många. |
|
Kardinalitet kan anges i inställningarna Prestanda-alternativ. Mer information finns i Optimera relationssökningar med prestandaalternativ.
Referensintegritet
Det finns ett koncept som kallas referensintegritet, vilket innebär att en rad i en tabell alltid har en matchande rad i den andra tabellen, baserat på värdet i de delade fälten. Om databasen inte innehåller några poster för bilar utan registreringsskyltar eller registreringsskyltar utan bilar har den relationen referensintegritet.
I Tableau konfigureras referensintegritet på båda sidor av relationen. I inställningarna Prestanda-alternativ innebär Vissa poster matchar att det inte finns (eller att du inte vet om det finns) referensintegritet. Alla poster matchar innebär att det finns referensintegritet. Standardinställningen är att inte anta referensintegritet (Vissa poster matchar).
Mer information finns i Optimera relationssökningar med prestandaalternativ.
Testa dig själv
Kan du definiera kardinaliteten och referensintegriteten för varje diagram? Vad innebär detta i ord?
Exempel:
Om vi ställer in tabellen till vänster som böcker och tabellen till höger som författare länkade via Författar-ID, översätt diagrammet till ord:
- En bok kan ha flera författare (de lila posterna visar en rad i boktabellen till vänster som motsvarar flera poster i författartabellen till höger).
- Inga författare har mer än en bok (varje författarpost till höger leder endast till en bokpost till vänster).
- Det finns inga böcker utan författare (alla poster till vänster motsvarar en post till höger).
- Det kan hända att vissa författare inte har några böcker (den grå författarposten till höger har ingen motsvarande bokpost till vänster).
Klicka på varje del nedan för att expandera.
Varför spelar det någon roll?
Att korrekt konfigurera kardinaliteten eller referensintegriteten kan förbättra prestandan genom frågeoptimering. Felaktiga konfigurationer däremot kan leda till problem med aggregering, på grund av förlorade eller duplicerade data. Standardinställningarna för prestanda-alternativ är Många för kardinalitet och Vissa poster matchar för referensintegritet. Dessa inställningar bör endast justeras om du är säker på egenskaperna hos dina data.
Mer information om hur Tableau hanterar varje inställning finns i Vad inställningarna för kardinalitet och referensintegritet innebär.
Ett exempel i Tableau
Låt oss se vad som händer när kardinalitet konfigureras felaktigt.
Obs! I följande exempel används en delmängd tabeller från Datauppsättningen Bookshop. Du kan ladda ner arbetsboken för att följa med, eller ladda ner rådata för att skapa datakällan på egen hand. De tabeller som används är Bok, Info och Utgåva från Bookshop.xlsx (bara några fält) samt Biblioteksprofil och Katalog från BookshopLibraries.xlsx.
Tabellerna Bok och Info har ett en-till-en-förhållande – Info är i princip extra kolumner för tabellen Bok. Därför är det, även om de hade kunnat relateras, logiskt att koppla samman dem för att skapa en ny logisk tabell som innehåller alla kolumner. Utgåva har ett många-till-en-förhållande med den här kombinerade tabellen, då det kan finnas flera utgåvor av en enskild bok, vanligtvis i olika format. (Observera att diagrammet nedan visar relationen från tabellen Bok+Info till Utgåva, så förhållandet är en-till-många.)
Utgåva relaterar till Katalog som en-till-många genom ISBN. Tabellerna Katalog och Biblioteksprofil har ett många-till-många-förhållande genom Biblioteks-ID. En viktig poäng är att tabellen Biblioteksprofil har flera rader per bibliotek, en för varje personaltyp (Bibliotekarie, Biblioteksassistent och Bibliotekstekniker). Mer information om strukturen för dessa tabeller finns i Datauppsättningen Bookshop.
Rätt inställningar
När relationen Katalog–Biblioteksprofil är korrekt konfigurerad kan vi göra en enkel visualisering som visar antalet anställda för varje bibliotek för flera böcker. Det här är en ganska löjligt visualisering, men den visar tydligt själva poängen. Idle Hour Library har 130 anställda oavsett vilken bok vi talar om. Det finns tre värden för personaltyp, så varje totalsumma utgörs av tre poster (numret inom parentes).
Personalantal efter bibliotek och titel. (Siffrorna inom parentes anger antalet poster i varje markering.)
Fel inställningar: en-till-en
När relationen felaktigt konfigureras till en-till-en paras varje titel i Katalog ihop med endast en post i tabellen Biblioteksprofil (som framgår av antalet poster inom parentes).
Personalantal efter bibliotek och titel. (Siffrorna inom parentes anger antalet poster i varje markering.)
Ovan ser vi att varje bibliotek endast visar det minsta antalet anställda. (Se numren i fetstil i visualisering nedan. Det lägsta antalet anställda är det antal som återspeglas i visualiseringen Antal anställda.)
Personal efter typ och bibliotek.
Mer information om hur relationer blir kontextuella kopplingar för en visualisering finns i Introducing the new data modeling in Tableau(Länken öppnas i ett nytt fönster) i Tableaus blogg.
Fel inställning: koppling
Medan det finns metoder för att kringgå den här sortens problem (LOD-uttryck är en vanlig metod), kan koppling av tabeller som har olika detaljnivå eller ”många” i kardinaliteten leda till duplicering. Här är antalet anställda korrekt för titlar som endast har ett format, men för de böcker som har två format i tabellen Utgåva förs dupliceringen vidare till antalet anställda (notera att antalet poster inom parentes är sex i stället för det korrekta antalet tre).
Personalantal efter bibliotek och titel. (Siffrorna inom parentes anger antalet poster i varje markering.)
Fel inställning: felaktigt antagande av referensintegritet
Att tala om för Tableau att det finns referensintegritet (alla poster matchar) när så inte är fallet kan leda till sänkta värden. I det här fallet liknar de två visualiseringarna varandra, men den till höger kommer från en datakälla som har konfigurerats till att anta referensintegritet. I den visualiseringen visas inte null-värdena. Medan detta kan vara okej under vissa omständigheter är det viktigt att förstå vad null-värdena representerar. Här, där visualiseringen visar antalet utgåvor i varje bibliotek, indikerar null-värdena två utgåvor som finns i tabellen Utgåva men som inte finns på något bibliotek. Detta kan vara en viktig miss, och det är en miss som ett felaktigt antagande av referensintegritet skulle leda till.
Utforska arbetsboken och dess datakällor för att se vilka andra problem som kan komma att uppstå ur felaktigt kombinerade tabeller.
Prestandainverkan
Om felaktig konfiguration av dessa inställningar kan leda till att data missas eller dupliceras, varför tillåter Tableau att de ändras överhuvudtaget? I många fall kan och bör du låta standardinställningarna vara: relatera tabeller i ställer för att koppla samman dem, låt kardinaliteten vara många-till-många och anta inte referensintegritet. Särskilt om du är osäker på vilka inställningar som är rätt.
Men kardinalitet och referensintegritet är Prestanda-alternativ för att standardinställningarna kan ha en inverkan på prestandan. Om du är säker på strukturen för dina data kan korrekt konfiguration av inställningarna öka hastigheten i genomförandet av en fråga.
Under huven
Obs! I det här avsnittet används liknelser med andra tekniker för datakombination för att tillhandahålla ett begreppsmässigt ramverk. Det är inte en teknisk beskrivning av hur Tableau använder prestandainställningarna för relationer.
Kardinalitet
Kardinaliteten för relationen har en inverkan på när aggregering sker. Detta kan ses som kombination. Datakombination frågar två datakällor oberoende av varandra. Varje datakälla aggregeras efter behov till önskad detaljnivå för vyn, oaktat den andra datakällan. För relationer har kardinalitetsinställningen en inverkan p huruvida aggregering sker före eller efter kopplingen.
I exemplet ovan innebär inställningen Många att antalet anställda på varje bibliotek aggregeras innan data kombineras med bokinformationen, vilket säkerställer att varje bok har korrekt antal. När kardinaliteten var felaktigt inställd på En aggregerades inte antalet anställda innan det kombinerades med bokdata, vilket ledde till felaktiga värden.
Observera att inte bara visas felaktiga värden, utan alla värden tilldelas personaltypen Bibliotekarie, trots att de hämtas från alla tre personaltyper. Felkonfiguration av den här inställningen kan leda till oförutsägbara och felaktiga värden. Den här filtreringen av resultat sker endast när ett fält från en annan tabell på den andra sidan av den felaktigt inställda relationen används i vyn.
Om värdena är unika kan Tableau ta bort den förkopplade aggregeringen om detta optimerar frågan.
Referensintegritet
Även om referensintegritet avser en inställning för relationer kan den ses som en kopplingstyp. En komplett yttre koppling bevarar alla poster, oavsett om det finns en matchning i den andra tabellen eller inte, men detta görs på bekostnad av prestanda. Om du är osäker på om poster kommer att gå förlorade är en yttre koppling det säkraste alternativet. Så här behandlas tabeller när det inte är säkert att det finns referensintegritet (Vissa poster matchar).
En inre koppling bevarar endast de poster som har en matchning i båda tabeller, och poster som inte finns i någon av tabellerna försvinner. Om du är säker på att en inre koppling inte kommer att ta bort viktiga data är detta alternativet effektivare. Om Prestanda-alternativ har ställts in på Alla poster matchar antas referensintegritet och kopplingar utförs utan tanke på omatchade värden.
En felaktig referensintegritetsinställning kan ha en filterliknande effekt på kombinerade data, då omatchade värden tas bort. Mer information om kraften i att bevara omatchade poster finns i Asking questions across multiple related tables i Tableaus blogg. Mer information om kopplingstyper finns i Koppla dina data.
Behåll standardinställningarna
Om analysen har godtagbar prestanda rekommenderar vi starkt att du behåller standardinställningarna för prestanda-alternativ, d.v.s. många-till-många och att inte anta referensintegritet. Kraften i relationer kommer från förmågan att tillhandahålla korrekta, kontextuellt lämpliga resultat baserade på de tabeller som används i analysen. Om du ändrar dessa inställningar tar du bort den semantiska flexibiliteten i relationer.