Hur LOD-uttryck fungerar i Tableau
Den här artikeln förklarar hur LOD-uttryck beräknas och hur de fungerar i Tableau. Mer information om LOD-uttryck och hur de fungerar finns i vitboken Förstå LOD-uttryck(Länken öppnas i ett nytt fönster) på Tableau:s webbplats.
Radnivåuttryck och vynivåuttryck
I Tableau beräknas uttryck som refererar till icke aggregerade datakällkolumner för varje rad i den underliggande tabellen. I detta fall är uttrycket radnivå. Ett exempel på ett radnivåuttryck är:
[Sales] / [Profit]
Denna beräkning kommer att utvärderas i varje rad i databasen. För varje rad kommer försäljningsvärdet i den raden att divideras med vinstvärdet i den raden, vilket ger en ny kolumn med resultatet av multiplikationen (en vinstkvot).
Om du skapar en beräkning med den här definitionen, ska du spara den med namnet [ProfitRatio] och sedan drar den från rutan Data till en hylla, Tableau aggregerar vanligtvis det beräknade fältet för vyn:
SUM([ProfitRatio])
Däremot beräknas uttryck som refererar till aggregerade datakällkolumner med den dimensionalitet som definieras av vyns dimensioner. I detta fall är uttrycket vynivå. Ett exempel på ett vynivåuttryck är:
SUM(Sales) / SUM(Profit)
Om du drar denna beräkning till en hylla (eller skriver den direkt på en hylla som en ad hoc-beräkning), infogar Tableau den i en AGG-funktion:
AGG(SUMMA(försäljning) / SUMMA(vinst))
Detta är vad som kallas en aggregerad beräkning. Mer information finns i Aggregera funktioner i Tableau(Länken öppnas i ett nytt fönster).
Dimension och uppsättningsfält som är placerade på någon av de platser som framhävs i följande bild bidrar till vyn LOD:
Innan LOD-uttryck stöddes i Tableau var det inte möjligt att skapa beräkningar på en annan detaljnivå än vynivån. Om du till exempel försöker spara följande uttryck visar Tableau felmeddelandet: ”Kan inte blanda aggregerade och icke-aggregerade argument med den här funktionen”:
[Sales] – AVG([Sales])
Användarens avsikt i detta fall var att jämföra butiksförsäljningen för varje enskild butik med genomsnittet av försäljningen för alla butiker. Detta kan nu åstadkommas med ett LOD-uttryck:
[Sales] - {AVG([Sales])}
Detta är vad som kallas ett tabell-omfattat LOD-uttryck. Läs mer i Tabellnivå.
Begränsningar för LOD-uttryck
Följande begränsningar och restriktioner gäller för LOD-uttryck. Se även Begränsningar för datakällor för LOD-uttryck (detaljnivå).
LOD-uttryck som refererar till flyttalsmätvärde kan uppträda otillförlitligt när de används i en vy som kräver jämförelse av värdena i uttrycket. Du hittar mer information i Förstå datatyper i beräkningar(Länken öppnas i ett nytt fönster).
LOD-uttryck visas inte på sidan Datakälla. Se Sidan Datakälla.
När du refererar till en parameter i en dimensionsdeklaration ska du alltid använda parameternamnet och inte parametervärdet.
Med datakombination måste länkningsfältet från den primära datakällan vara i vyn innan du kan använda ett LOD-uttryck från den sekundära datakällan. Se Felsöka kombinerade data.
Dessutom har vissa datakällor komplexitetsbegränsningar. I Tableau inaktiveras inte beräkningar för dessa databaser, men det kan uppstå frågefel om beräkningarna blir alltför komplexa.
LOD-uttryck kan vara dimensioner eller mätvärden
När du sparar ett LOD-uttryck lägger Tableau till det i området Dimensioner eller området Mätvärden i rutan Data.
LOD-uttryck av typen FIXED kan resultera i mätvärden eller dimensioner, beroende på det underliggande fältet i det aggregerade uttrycket. Så MIN([Datum])} kommer att vara en dimension eftersom [Datum] är en dimension, och {fast butik : SUMMA([försäljning])} kommer att vara ett mätvärde eftersom [försäljning] är ett mätvärde. När ett LOD-uttryck av typen FIXED sparas som ett mätvärde har du möjlighet att flytta det till dimensioner.
LOD-uttrycken INKLUDERA och EXKLUDERA är alltid mätvärden.
Filter och LOD-uttryck
Det finns många olika sorters filter i Tableau och de används i följande ordning, uppifrån och ned.
Texten till höger visar var LOD-uttryck utvärderas i den här sekvensen.
Extraktfilter (orange) är bara relevanta om du skapar ett Tableau-extrakt från en datakälla. Filter för tabellberäkningar (mörkblå) används efter att beräkningarna körts och döljer därför markeringar utan att filtrera bort underliggande data som används i beräkningarna.
Om du är van vid SQL kan du se mätvärdesfilter som en motsvarighet till HAVING-satsen i en fråga och dimensioner som en motsvarighet till WHERE-satsen.
Beräkningar av typen FIXED används före dimensionsfilter, så om du inte gör om fälten på hyllan Filter till Använda kontextfilter ignoreras de. Säg till exempel att du har följande beräkning på en hylla i en vy, tillsammans med [Län] på en annan hylla:
SUM([Sales]) / ATTR({FIXED : SUM([Sales])})
Med den här beräkningen får du fram förhållandet mellan försäljning och total försäljning för ett län.
Om du sedan placerar [Län] på hyllan Filter för att dölja vissa av länen påverkar filtret bara täljaren i beräkningen. Eftersom nämnaren är ett LOD-uttryck av typen FIXED dividerar det ändå försäljningen för län som fortfarande ingår i vyn med den totala försäljningen för alla län, inklusive de som filtrerats bort från vyn.
LOD-uttrycken INCLUDE och EXCLUDE beaktas efter dimensionsfiltren. Om du vill att filter ska användas på LOD-uttrycket FIXED, men inte vill använda kontextfilter, kan det vara en god idé att skriva om dem som INCLUDE- eller EXCLUDE-uttryck.
Aggregering och LOD-uttryck
Vyns detaljnivå avgör hur många markeringar som visas i den. När du lägger till ett LOD-uttryck i vyn måste två detaljnivåer stämmas av i Tableau, den i vyn och den i ditt uttryck.
Hur ett LOD-uttryck beter sig i vyn varierar beroende på om uttryckets detaljnivå är mer eller mindre detaljerad än vyns eller lika detaljerad som vyns. Vad menas med mer och mindre detaljerad här?
LOD-uttrycket är mindre detaljerat än vyns detaljnivå
Ett uttryck är mindre detaljerat än vyns detaljnivå när det refererar till en delmängd av dimensionerna i vyn. För en vy som innehåller dimensionerna [Kategori] och [Segment] kan du till exempel skapa ett LOD-uttryck som bara använder en av de dimensionerna:
{FIXED [Segment] : SUM([Sales])}
I det här fallet har uttrycket en mindre detaljerad nivå än vyn. Dess värden utgår från en dimension ([Segment]), medan vyns värden bygger på två dimensioner ([Segment] och [Kategori]).
Det innebär att om du använder LOD-uttrycket i vyn replikeras vissa värden, d.v.s. de visas flera gånger.
Replikerade värden är användbara när du vill jämföra specifika värden mot genomsnittliga värden inom en kategori. Till exempel subtraheras den genomsnittliga försäljningen för en kund från den totala genomsnittliga försäljningen i följande beräkning:
[Sales] - {FIXED [Customer Name] : AVG([Sales])}
När värden replikeras och du ändrar aggregeringen för det relevanta fältet i vyn (till exempel från AVG till SUM) påverkar det inte resultatet för aggregeringen.
LOD-uttrycket är mer detaljerat än vyns detaljnivå
Ett uttryck är mer detaljerat än vyns detaljnivå när det refererar till en övermängd av dimensionerna i vyn. När du använder ett sådant uttryck i vyn aggregeras resultaten upp till vynivå i Tableau. Följande LOD-uttryck refererar till exempel till två dimensioner:
{FIXED [Segment], [Category] : SUM([Sales])}
När det här uttrycket används i en vy som bara har [Segment] som detaljnivå måste värdena aggregeras. Så här skulle det se ut om du drog det uttrycket till en hylla:
AVG([{FIXED [Segment]], [Category]] : SUM([Sales]])}])
En aggregering – i det här fallet, genomsnitt – tilldelas automatiskt av Tableau. Du kan ändra aggregeringen efter behov.
Lägga till ett LOD-uttryck i vyn
Om ett LOD-uttryck aggregeras eller replikeras i vyn beror på uttryckets typ (FIXED, INCLUDE eller EXCLUDE) och på om uttrycket har en mer eller mindre detaljerad nivå än vyn.
LOD-uttrycket INCLUDE får antingen samma detaljnivå som vyn eller en mer detaljerad nivå än vyn. Därför replikeras aldrig värdena.
LOD-uttryck av typen FIXED kan ha en mer eller mindre detaljerad nivå än vyn eller samma detaljnivå. Huruvida ett LOD-uttryck av typen FIXED ska aggregeras eller inte beror på vilka dimensioner som finns i vyn.
Med LOD-uttryck av typen EXCLUDE visas replikerade värden alltid i vyn. När beräkningar som inkluderar LOD-uttryck av typen EXCLUDE placeras på en hylla används ATTR-aggregering som standard i Tableau (i stället för SUM eller AVG) för att ange att uttrycket i själva verket inte är aggregerat och att eventuella ändringar av aggregeringen inte påverkar vyn.
LOD-uttryck innefattas alltid automatiskt i en aggregering när de läggs till på en hylla i vyn om de inte används som dimensioner. Om du dubbelklickar på en hylla och skriver
{FIXED[Segment], [Category] : SUM([Sales])}
och sedan trycker på returtangenten för att bekräfta uttrycket, så visas följande på hyllan:
SUM({FIXED[Segment], [Category] : SUM([Sales])})
Men om du dubbelklickar på hyllan för att redigera uttrycket så visas det ursprungliga uttrycket i redigeringsläget.
Om du innefattar ett LOD-uttryck i en aggregering när du skapar det används den aggregering du anger i Tableau i stället för att en aggregering tilldelas när en beräkning som inkluderar uttrycket placeras på en hylla. Om ingen aggregering behövs (på grund av att uttrycket är mindre detaljerat än vyn) visas den aggregering du angav ändå när uttrycket ligger på en hylla, men det ignoreras.
Begränsningar för datakällor för LOD-uttryck (detaljnivå)
För vissa datakällor är det bara de senaste versionerna som har stöd för LOD-uttryck. Vissa datakällor saknar helt stöd för LOD-uttryck.
Dessutom har vissa datakällor komplexitetsbegränsningar. I Tableau inaktiveras inte beräkningar för dessa databaser, men det kan uppstå frågefel om beräkningarna blir alltför komplexa.
Datakälla | Support |
Actian Vectorwise | Stöds inte. |
Amazon EMR Hadoop Hive | Stöds för Hive 0.13 och senare. |
Amazon Redshift | Stöds. |
Aster-databas | Stöds för version 4.5 och senare. |
Cloudera Hadoop | Stöds för Hive 0.13 och senare. |
Cloudera Impala | Stöds för Impala 1.2.2 och senare. |
Kuber (flerdimensionella datakällor) | Stöds inte. |
DataStax Enterprise | Stöds inte. |
EXASOL | Stöds. |
Firebird | Stöds för version 2.0 och senare. |
Allmän ODBC | Begränsat. Beror på aktuell datakälla. |
Google BigQuery | Stöds för standard-SQL, stöds inte för äldre SQL. |
Hortonworks Hadoop Hive | Stöds för Hive 0.13 och senare. I version 1.1 av Hive är LOD-uttryck som producerar korsdatabaskopplingar inte tillförlitliga. Korsdatabaskopplingar inträffar när det inte finns något explicit fält att koppla. För LOD-uttrycket |
IBM BigInsights | Stöds. |
IBM DB2 | Stöds för version 8.1 och senare. |
MarkLogic | Stöds för version 7.0 och senare. |
Microsoft Access | Stöds inte. |
Microsoft Jet-baserade anslutningar (äldre kopplingar för Microsoft Excel, Microsoft Access och text) | Stöds inte. |
Microsoft SQL Server | SQL Server 2005 och senare. |
MySQL | Stöds. |
IBM PDA (Netezza) | Stöds för version 7.0 och senare. |
Oracle | Stöds för version 9i och senare. |
Actian Matrix (ParAccel) | Stöds för version 3.1 och senare. |
Pivotal Greenplum | Stöds för version 3.1 och senare. |
PostgreSQL | Stöds för version 7 och senare. |
Progress OpenEdge | Stöds. |
SAP HANA | Stöds. |
SAP Sybase ASE | Stöds. |
SAP Sybase IQ | Stöds för version 15.1 och senare. |
Spark SQL | Stöds. |
Splunk | Stöds inte. |
Tableau-dataextrakt | Stöds. |
Teradata | Stöds. |
Vertica | Stöds för version 6.1 och senare. |