Så här fungerar analyser med datakällor med flera tabeller som använder relationer
Om en datakälla har flera, relaterade tabeller påverkar det hur analyserna körs i Tableau. Eftersom flera, relaterade tabeller har oberoende domäner och behåller sin ursprungliga detaljnivå gäller följande när du drar fält till vyn:
- Frågor körs mot data på deras ursprungliga detaljnivå.
- Frågor körs endast mot data som är relevanta för en visualisering.
- Relationerna mellan tabellerna påverkar resultatet från frågan. Hur en visualisering skapas beror på hur tabeller med fält hör ihop med varandra i datamodellen, eller om de inte är direkt relaterade till varandra.
Titta på den här fem minuter långa videon om du vill ha en översikt över hur datakällorna har förbättrats samt en introduktion till relationer och hur de används.
Obs! Det gränssnitt för redigering av relationer som du ser i den här videon och det här hjälpavsnittet skiljer sig något från gränssnittet i den senaste versionen, men har samma funktioner.
Läs mer om hur relationer fungerar i Var inte rädd för relationer och följande artiklar på Tableaus blogg:
- Relationer, del 1: Introduktion till den nya datamodelleringen i Tableau(Länken öppnas i ett nytt fönster)
- Relationer, del 2: Tips och trick(Länken öppnas i ett nytt fönster)
- Relationer, del 3: Köra frågor mot flera relaterade tabeller(Länken öppnas i ett nytt fönster)
Du kan också titta på videopoddar om relationer från Action Analytics(Länken öppnas i ett nytt fönster), t.ex. Why did Tableau Invent Relationships?(Länken öppnas i ett nytt fönster) Klicka på ”Video Podcast” (Videopodd) under Library(Länken öppnas i ett nytt fönster) (Bibliotek) om du vill veta mer.
I Tableau version 2024.2 och senare har Tableaus funktioner för datamodellering stöd för analys av flera faktatabeller och delade dimensioner med hjälp av relationer mellan faktatabeller. Mer information finns i Om datamodeller för relationer mellan faktatabeller(Länken öppnas i ett nytt fönster), När ska en datamodell för relationer mellan faktatabeller användas?(Länken öppnas i ett nytt fönster) och Bygga en datamodell för relationer mellan faktatabeller(Länken öppnas i ett nytt fönster).
Obs! Du kan fortfarande skapa datakällor med bara en tabell i Tableau. Du kan skapa en logisk tabell med en kombination av kopplingar, föreningar, anpassad SQL osv. Analyser med en tabell i Tableau fungerar på samma sätt som förut. Analyser av en enskild logisk tabell som innehåller en blandning av dimensioner och mätvärden fungerar på samma sätt som i tidigare versioner än Tableau 2020.2.
Att tänka på innan analys
Validera relationer
Du kan välja mellan flera alternativ när du validerar datamodellen för analys. När du skapar modellen för en datakälla rekommenderar vi att du går till ett blad och väljer datakällan, och att du sedan skapar en visualisering för att analysera antalet poster, förväntade data, omatchade värden, null-värden och mätvärden som upprepas. Prova att använda fält i olika tabeller för att försäkra dig om att allt ser ut som det ska.
Ställ dig följande frågor:
- Använder relationerna i datamodellen rätt matchande fält för sina tabeller?
- Skulle relationen bli bättre om flera matchande fältpar lades till?
- Vad händer när olika dimensioner och mätvärden dras in i vyn?
- Visas förväntat antal rader?
- Om du har ändrat standardinställningarna för prestandaalternativ, ser du i så fall de värden du förväntade dig i visualiseringen? Om inte bör du kontrollera inställningarna eller återställa standardinställningarna.
Alternativ för att validera relationer och datamodellen:
- I varje tabell finns ett fält med namnet Tabellnamn(antal) som visar summan av tabellens poster på detaljnivån för tabellen i fråga. Om du vill visa antalet för en tabell drar du fältet Antal till vyn. Om du vill visa antalet för alla tabeller markerar du fältet Antal för varje tabell i rutan Data och klickar sedan på Texttabell i Visa mig.
- Klicka på Visa data, i rutan Data, för att visa antalet rader och data per tabell. Innan du börjar skapa relationer kan det också vara bra att gå igenom datakällans data före eller under analysen så att du får en uppfattning om tabellernas omfattning. Mer information finns i Visa underliggande data.
- Dra dimensioner till rader för att visa Antal rader i statusfältet. Om du vill visa omatchade värden klickar du på menyn Analys och väljer Tabellayout > Visa tomma rader eller Visa tomma kolumner. Du kan också dra olika mätvärden till vyn, t.ex. <DinTabell>(Antal) från någon av tabellerna som återges i en visualisering. På så sätt kan du vara säker på att alla värden för dimensionerna från den tabellen visas.
Tips: Om du vill se frågorna som genereras för relationer kan du använda Prestandaregistrering i Tableau Desktop.
- Klicka på menyn Hjälp och välj Inställningar och prestanda > Starta prestandaregistrering.
- Dra fält till vyn för att skapa visualiseringen.
- Klicka på menyn Hjälp och välj Inställningar och prestanda > Stoppa prestandaregistrering. Arbetsboken Prestandaregistrering öppnas automatiskt.
- Klicka på ett fält av typen Kör fråga under Händelser sorterade efter tid på instrumentpanelen Prestandasammanfattning och titta på frågan nedanför.
Ett annat mer avancerat alternativ är att använda Tableau Log Viewer(Länken öppnas i ett nytt fönster) på GitHub. Du kan filtrera baserat på ett specifikt nyckelord med hjälp av end-protocol.query
. Om du vill ha mer information rekommenderar vi att du börjar med wiki-sidan för Tableau Log Viewer(Länken öppnas i ett nytt fönster) på GitHub.
Visualiseringar med endast dimensioner
När du använder en datakälla med flera tabeller med relaterade tabeller: Om du skapar en visualisering med endast dimensioner använder Tableau inre kopplingar och du ser inte hela den omatchade domänen.
Om du vill visa partiella kombinationer av dimensionsvärden kan du:
- Använda Visa tomma rader/kolumner om du vill visa samtliga möjliga rader. Klicka på menyn Analys och välj Tabellayout > Visa tomma rader eller Visa tomma kolumner. Tänk på att den här inställningen även utlöser komplettering av fälten Datum och Numerisk klass, vilket kanske inte är önskvärt.
- Lägga till ett mätvärde i vyn, t.ex. <DinTabell>(Antal) från en av tabellerna som återges i visualiseringen. På så sätt kan du vara säker på att alla värden för dimensionerna från den tabellen visas.
Du kan också läsa mer i Beteende för omatchade värden för dimensioner som kan överraska dig och Felsöka flertabellsanalys.
När ska LOD-beräkningar och -uttryck användas?
Eftersom Tableau kan tolka detaljnivån (LOD) i indatatabellerna ska du inte behöva använda LOD-beräkningar för att ta bort oönskade dubbletter som beror på kopplingar.
Du kanske fortfarande vill använda LOD-beräkningar för att:
- Hantera oönskad duplicering i källtabellerna.
- Beräkna aggregeringar på flera nivåer (t.ex. ett medelvärde av en summa).
- Göra kohortanalyser (t.ex. för att beräkna det första orderdatumet för varje kund).
Om dimensionaliteten i en LOD-beräkning inkluderar fält från en enda tabell visas LOD-beräkningen i dess ägartabell i rutan Data.
Exempel på analys med flera tabeller
I följande exempel visas hur datafrågor kan skickas till flera relaterade tabeller. Den här datakällan med flera tabeller innehåller en kort lista över skådespelare och deras roller i olika filmer.
En rad i tabellen Appearances (Framträdanden) betyder att en skådespelare (Actor) spelade en viss rollfigur (Character) i en viss film (Movie). I den här datauppsättningen kan en skådespelare ha noll eller flera framträdanden.
Läs mer om hur relationer fungerar i följande artiklar på Tableaus blogg:
- Relationer, del 1: Introduktion till den nya datamodelleringen i Tableau(Länken öppnas i ett nytt fönster)
- Relationer, del 2: Tips och trick(Länken öppnas i ett nytt fönster)
Exempel 1: Analys av en enda fråga i kopplade data jämfört med relaterade data
När du anslöt till data i Tableau före version 2020.2 kunde datakällan bestå av en enda tabell eller flera tabeller som kopplats till eller förenats i en enda avnormaliserad tabell. Från och med Tableau 2020.2 kan Tableau identifiera och bevara normaliserade data för datakällor med flera tabeller, där tabelldata förblir separata och varje tabell bevarar sin egen detaljnivå (LOD). I följande exempel ser du hur analysen skiljer sig åt mellan datakällor beroende på om de har en eller flera tabeller.
I det här exemplet visas tre tabeller med filmdata: Appearances (Framträdanden), Actors (Skådespelare) och Movies (Filmer).
De här tabellerna kan kopplas samman så att tabellen Appearances kopplas till tabellen Actors på Actor = Actor och tabellen Appearances kopplas till tabellen Movies på Movie = Movie. Om kopplingarna är fullständiga yttre kopplingar går inga rader förlorade och det slutliga resultatet ser ut så här. Tänk på att fält som används i kopplingssatser visas två gånger.
Data som samlas i en enda tabell på det här sättet kallas avnormaliserade eller platta.
Dessa kopplade data är platta data. Varje rad består av en skådespelares framträdande som en rollfigur i en film (så John Rhys-Davies har två rader för The Return of the King eftersom han spelade två rollfigurer). Detaljnivån för data är därför på nivån rollfigurer i en film. Information som är relevant för flera rader dupliceras. Premiärdatumet för The Return of the King visas också två gånger eftersom det finns rollfigurer från den filmen i datauppsättningen. John Rhys-Davies längd visas fem gånger eftersom det finns 5 unika kombinationer av rollfigur/film för honom som skådespelare.
Dessa platta data har en del egenskaper du bör vara medveten om. Om du till exempel vill rita in skådespelarnas längd i förhållande till den genomsnittliga bruttovinsten för deras filmer kanske du tänker att längden kan hämtas till kolumnerna och bruttovinsten till raderna och att du sedan kan ta genomsnittet för bruttovinsten. Men om du gör det ser standardvyn inte korrekt ut. Här står det att John Rhys-Davies är 925 cm lång, vilket är omöjligt!
Det beror på att standardaggregeringen är SUM. Eftersom det finns 5 rader med data för honom får vi hans verkliga längd på 185 cm gånger fem. Du skulle kunna korrigera detta genom att ändra aggregeringen för längd, kanske till genomsnitt eller minimum. Då returneras bara värdet för en rad (eftersom alla är identiska).
När du ändrar aggregeringen blir längderna mer realistiska. Men nu måste du se upp med den genomsnittliga bruttovinsten. Tänk på att Tableau tar hänsyn till alla fem rader med John Rhys-Davies längd. Men när det gäller den genomsnittliga bruttovinsten för de filmer han varit med i ska det inte vara genomsnittet för fem rader, utan genomsnittet för tre filmer. Du vill inte räkna bruttovinsten för The Return of the King två gånger bara för att han spelade två rollfigurer i den. Men är det det som händer?
Lite snabb matematik ger vid handen att filmerna om härskarringen bör ha ett genomsnitt på (869 + 923 + 1 119)/3 eller 970,3 USD. Men värdet i punktdiagrammet är 990,6 USD. Det aktuella genomsnittet är från de fem raderna (869 + 923 + 923 + 1 119 + 1 119)/5.
Detta går inte lika lätt att korrigera som problemet med längd gick att korrigera genom att ändra aggregeringen. Du måste använda ett LOD-uttryck (detaljnivå) för att ändra vilken detaljnivå Tableau ska titta på, från standardnivån Appearance upp till nivån Movie. Du skulle kunna skapa en beräkning för LOD Gross som {FIXED [Movie] : MIN([Gross (USD millions)])} och sedan ta genomsnittet för det nya fältet LOD Gross till vår vy.
LOD-uttrycket kan läsas som ”returnera minsta bruttovinst för varje film”. Detta löser dupliceringsproblemet eftersom bruttovinsten alltid returneras per film, även om vyn bygger på film och skådespelare.
Nu stämmer siffrorna. John Rhys-Davies är 185 cm lång och den genomsnittliga bruttovinsten för hans filmer i den här datauppsättningen är 970,3. Du måste förstå hur data replikeras och hur Tableau aggregerar data för att visa dem för att kunna se till att rätt värden returneras.
Normaliserade data i flera tabeller
Att skapa relationer mellan logiska tabeller kan verka ungefär som att skapa kopplingar, men i stället för att platta till data i en enda tabell, med alla replikeringar det kan medföra, så håller Tableau koll på relationerna mellan tabellerna. Information hämtas från varje tabell vid rätt detaljnivå och relateras till andra data.
På sidan Datakälla ser du inte hela rutnätsvyn för den tillplattade tabellen. Den finns inte. Tableau bevarar alla tre tabeller som de är och skapar bara relationerna, och de data som behövs hämtas in till vyn när de behövs.
Om du vill skapa ett likadant punktdiagram drar du Height och Gross till vyn och anger Gross som genomsnittligt. Klart! Tableau kontrollerar hur varje tabells data relaterar till data i andra relaterade tabeller och drar slutsatser om hur längden ska visas (efter skådespelare) och hur bruttovinsten ska beräknas (efter film).
Exempel 2: Dimension från en enda tabell
Om dimensionerna i visualiseringen kommer från en och samma tabell skickar Tableau bara frågor till den tabellen och visar resultatet för hela domänen. Du kan lägga till mätvärden och ändå se hela domänen.
Om du till exempel använder datakällan Movie Appearances (Filmframträdanden) för filmer ovan och lägger till fältet Actor (Skådespelare) i en visualisering får du följande visualisering:
Eftersom den enda dimensionen i visualiseringen kommer från tabellen Actors (Skådespelare) skickar Tableau en fråga till just tabellen Actors (Skådespelare). Alla skådespelare som visas i tabellen Actors (Skådespelare) visas också i visualiseringen, oavsett om de gör några framträdanden (Appearances).
Genom att hämta in fältet Appearance Actor till vyn som ett mätvärde och sedan använda en COUNT-aggregering skapas en vy som visar antalet framträdanden efter skådespelare. Observera att Sigourney Weaver inte gör några framträdanden, men hennes namn visas ändå i vyn.
Exempel 3: Dimensioner från flera tabeller
Om dimensionerna i vyn kommer från flera tabeller letar Tableau upp den tabell som relaterar alla dimensioner och visar domänen från den tabellen. Som ett resultat ändras vissa av de dimensionsvärden som visades i exempel 1 ovan.
Om du till exempel drar ett fält från tabellen Movies (Filmer) till visualiseringen ändras frågan. Eftersom tabellerna Movies (Filmer) och Actors (Skådespelare) är relaterade via tabellen Appearances (Framträdanden) returnerar frågan bara de skådespelare/film-par som finns i tabellen Appearances (Framträdanden).
Eftersom Sigourney Weaver inte har några framträdanden (Appearances) i den här datauppsättningen (och därför inte är relaterad till någon av filmerna i datauppsättningen) ingår hon inte i visualiseringen av skådespelare/film-par:
Exempel 4: Mätvärden som inte kan delas med en dimension
Om det inte går att dela ett mätvärde med en dimension replikerar Tableau mätvärdet över den dimensionen.
Nästa visualisering visar den totala bruttovinsten efter film. Eftersom båda fälten kommer från tabellen Movies (Filmer) skickar Tableau bara en fråga till tabellen Movies (Filmer).
Tabellen Movies (Filmer) inkluderar den redan aggregerade bruttovinsten för varje film, som visas i följande visualisering (bruttovinsten för Avengers Infinity War var inte känd när den här datauppsättningen skapades och visas därför som noll).
Om du lägger till Actor (Skådespelare) i den här visualiseringen ”vet” Tableau att programmet inte ska analysera Movie Gross (Bruttovinst) efter skådespelare, eftersom den här mer detaljerade informationen inte är tillgänglig i datamodellen. Tableau visar i stället Movie Gross (Bruttovinst) för varje film, replikerat över skådespelare.
Exempel 5: Dimension som inte är hierarkiskt relaterad till ett mätvärde
Om du tar bort dimensionen Movie (Film) från den tidigare visualiseringen skickas en fråga om summan för mätvärdet Movie Gross (Bruttovinst) för varje Actor (Skådespelare). Resultatet är den aggregerade bruttovinsten (Movie Gross) för varje film skådespelaren gjort ett framträdande i.
I det här fallet finns det ingen hierarkisk relation mellan dimensionen (Actor) och mätvärdet (Movie Gross) – flera skådespelare kan ha haft framträdanden i samma film. Till exempel var Benedict Cumberbatch och Chris Hemsworth båda med i Dr. Strange. I det här fallet inkluderas Movie Gross (Bruttovinst) för Dr. Strange i båda skådespelarnas totalsummor i Tableau.
Eftersom samma värde för Movie Gross (Bruttovinst) inkluderas i flera skådespelares totalsummor summerar Tableau inte dessa värdena direkt.
Men när totalsummorna visas för den här visualiseringen beräknar Tableau den totala bruttovinsten korrekt utan duplicerade filmer.
Felsöka flertabellsanalys
Följande situationer är möjliga för datakällor med flera relaterade tabeller. Den här tabellen innehåller kända scenarier och övergripande beskrivningar av hur du felsöker en analys.
Analyssituation | Beskrivning | |
---|---|---|
Inre koppling för visualiseringar med endast dimensioner | Det kan hända att du inte ser alla värden du väntade dig direkt när du lägger till flera dimensioner i en och samma vy. Det kan också hända att vissa värden försvinner från visualiseringen när du lägger till en ny dimension från en annan tabell i den. Tableau använder frågor som bevarar den kombination av värden som finns i data. Det betyder att du ser rader som genereras av en inre koppling för tabellerna som förser visualiseringen med dimensioner. Om du vill visa partiella kombinationer av dimensionsvärdena kan du antingen aktivera Visa tomma rader/kolumner om du vill visa samtliga möjliga rader eller lägga till ett mätvärde, som <MinTabell>(Antal) från en av tabellerna som återges i vyn. På så sätt kan du vara säker på att alla värden för dimensionerna från den tabellen visas. | |
Konstanter i beräkningar | I en datakälla med flera tabeller beter sig konstanta värden som om de kommer från en egen tabell med bara en rad. Om du aggregerar ett konstant värde beter det sig som om aggregeringen är på en enda rad. Sum(10) är alltid lika med 10. Avg(10) är också alltid lika med 10. Antal(10) är alltid lika med 1. För bakåtkompatibilitetens skull beter sig konstanta värden i en datakälla med en enda logisk tabell som om det konstanta värdet replikeras för varje värde i tabellen. Konstanter i beräkningar på radnivå påverkar inte detaljnivån för en beräkning på radnivå. Beräkningen [Sales] + 10 beter sig som om den kommer från samma tabell som fältet [Sales]. | |
Tvingande yttre koppling | Tableau ser till att alla mätvärden representeras i visualiseringen (tillsammans med alla kombinationer av dimensionsvärden som faktiskt finns i data) så om du vill försäkra dig om att du ser alla möjliga värden i data, inklusive omatchade null-värden, kan du göra det genom att hämta mätvärdena till vyn från varje tabell i arbetsbladet. | |
Jag ser inte de mätvärden jag väntar mig i en tabellövergripande beräkning | Domänen för en beräkning är den inre kopplingen för dess indata. Om det inte finns några matchande värden från alla indata för mätvärdesberäkningen inkluderas de inte i mätvärdesberäkningen. Fundera på att använda en LOD-beräkning för att flytta mätvärdena till samma objekt innan du skapar radnivåberäkningen. | |
En beräkning för att växla mellan fält från olika logiska tabeller får ett oväntat resultat | Om du har en beräkning som växlar mellan fält på radnivå (med en CASE-sats, IF-sats eller en funktion som IFNULL) kan du få oväntade resultat, eftersom den här beräkningen utförs för varje rad, där rad är den inre kopplingen mellan indata i beräkningen. Det är bättre att växla mellan aggregerade värden i stället för att försöka växla inom radnivåberäkningen. Detta ger också bättre prestanda i scenarier med bara en tabell. Eftersom detta bara är ett problem för beräkningar som sträcker sig över flera tabeller fungerar det också bra att använda en LOD-beräkning för att hämta alla fält till samma tabell. Gör inte så här: SUM(
IF [Parameter] == "Foo" THEN [Field 1] ELSE [Field 2] END
)
Gör följande: IF [Parameter] == "Foo" THEN SUM([Field 1]) ELSE SUM([Field 2]) END | |
Oväntade omatchade null-värden | Du kan råka ut för oväntade mätvärden som är associerade med ett null-dimensionsvärde. Detta kan vara ett tecken på att relationerna i datakällan har konfigurerats felaktigt. Det kan också betyda att det faktiskt finns omatchade värden från den tabell som innehåller mätvärdet, som saknar motsvarande rad i dimensionstabellen. Tidigare kunde dessa data gå förlorade om fel kopplingstyp valdes. När du använder relationer bevaras de här omatchade värdena. Om du inte vill se de omatchade värdena kan du utesluta dem med ett filter. | |
Felaktiga aggregerade värden | Använder du relationer eller kopplingar? Med relationer beräknas aggregeringar korrekt som standard. När du använder kopplingar kan du behöva skriva LOD-beräkningar för att deduplicera värden. Har du ställt in Alternativ för prestanda för relationer på ett felaktigt sätt? Prova med att ändra Alternativ för prestanda till standardvärdena och se om du får korrekta aggregeringar då. | |
Dimensioner replikerar mätvärden i stället för att partitionera dem. Dimensionsfilter kan inte skapa underuppsättningar av mätvärden. | Kontrollera att de fält som används för att definiera relationer är korrekta. | |
Tableau genererar för många frågor eller frågor med många vänsterkopplingar | Kontrollera loggfilerna eller prestandaregistreringarna för att se hur många frågor som genereras och hur många vänsterkopplingar som används. Med de nya funktionerna för datamodellering genererar Tableau frågor med vänsterkopplingar och/eller extra frågor för att säkerställa att omatchade mätvärden alltid inkluderas i visualiseringen. Om du inte behöver se de omatchade värdena använder du filter för att ta bort de omatchade värdena (NULL) från visualiseringen. Detta bör resultera i färre frågor. Om du vet att data inte innehåller några omatchade värden kan du ställa in inställningen Referensintegritet för varje relation på ”Alla värden matchar” (”All Values Match”) i Alternativ för prestanda. Detta resulterar också i färre frågor. Du kan också minska komplexiteten för visualiseringen för att minska antalet frågor som genereras. När du vill förenkla frågor för relaterade data i flera tabeller är det effektivt att ta bort mätvärden och dölja filterkontroller. | |
Frågor med många underfrågor | Kontrollera loggfilerna eller prestandaregistreringarna för att se hur komplexa de frågor som genereras i Tableau är. Tableau genererar automatiskt underfrågor för att vid behov deduplicera data och generera korrekta aggregeringar. Detta påminner om frågor som genereras av LOD-beräkningar. Om du vet att relationerna mellan de logiska tabellerna i data har många-till-en- eller en-till-en-kardinalitet kan du ställa in den här kardinalitetsinformationen i Alternativ för prestanda för relationen. Då kan Tableau undvika onödiga underfrågor, eftersom programmet ”vet” att ingen duplicering kan ske. | |
Jag har använt kopplingar för att filtrera data | Tableau 2020.2 försöker så långt det är möjligt att återställa omatchade värden. Ibland innebär det att en vänsterkoppling används där du kanske hade angett en inre koppling för att avsiktligen filtrera bort data. Om du filtrerar bort de omatchade värden som hämtas av den här kopplingen kan Tableau optimera frågan tillbaka till en inre koppling. Beroende på det aktuella scenariot kan det fungera att modellera den här inre kopplingen som en fysisk koppling inom en logisk tabell. Detta är särskilt effektivt om du använder en tabell med mätvärden för att filtrera en dimensionstabell, eftersom det inte medför någon ytterligare mätvärdesreplikering. |