Hoe LOD-expressies werken in Tableau

In dit artikel wordt uitgelegd hoe LOD-expressies worden berekend en hoe ze functioneren in Tableau. Zie de whitepaper Inzicht krijgen in LOD-expressies(Link wordt in een nieuw venster geopend) op de Tableau-website (in het Engels) voor meer informatie over LOD-expressies en hoe ze werken.

Expressies op rijniveau en expressies op weergaveniveau

In Tableau worden expressies die verwijzen naar niet-geaggregeerde databronkolommen berekend voor elke rij in de onderliggende tabel. In dit geval is rijniveau de dimensionaliteit van de expressie. Hier ziet u een voorbeeld van een expressie op rijniveau:

[Sales] / [Profit]

Deze berekening wordt in elke rij van de database geëvalueerd. Voor elke rij wordt de verkoopwaarde in die rij gedeeld door de winstwaarde in die rij, waardoor een nieuwe kolom ontstaat met het resultaat van de vermenigvuldiging (een winstratio).

Als u een berekening maakt met deze definitie, deze opslaat met de naam [Winstverhouding] en deze vervolgens uit het deelvenster Data naar een container sleept, aggregeert Tableau doorgaans het berekende veld voor de weergave:

SUM([ProfitRatio])

Daarentegen worden expressies die verwijzen naar geaggregeerde databronkolommen berekend op de dimensionaliteit die wordt gedefinieerd door de dimensies in de weergave. In dit geval is weergaveniveau de dimensionaliteit van de expressie. Hier ziet u een voorbeeld van een expressie op weergaveniveau:

SUM(Sales) / SUM(Profit)

Als u deze berekening naar een container sleept (of rechtstreeks op een container typt als een ad-hocberekening), plaatst Tableau deze in een AGG-functie:

AGG(SUM(Verkoop) / SUM(Winst))

Dit is een zogenaamde geaggregeerde berekening. Zie Aggregaatfuncties in Tableau(Link wordt in een nieuw venster geopend) voor meer informatie.

Dimensie- en setvelden die op een van de locaties zijn geplaatst die in de volgende afbeelding zijn gemarkeerd, leveren een bijdrage aan het weergaveniveau van details:

Voordat LOD-expressies in Tableau werden ondersteund, was het niet mogelijk berekeningen te maken op een ander detailniveau dan het weergaveniveau. Als u bijvoorbeeld de volgende expressie probeert op te slaan, wordt het volgende foutbericht weergegeven: 'Kan geaggregeerde en niet-geaggregeerde argumenten niet combineren met deze functie':

[Sales] – AVG([Sales])

De bedoeling van de gebruiker was in dit geval om de verkoop voor elke individuele winkel te vergelijken met de gemiddelde verkoop van alle winkels. Dit kan nu worden bereikt met een LOD-expressie:

[Sales] - {AVG([Sales])}

Dit wordt een tabelgerichte LOD-expressie genoemd. Zie Tabelgericht

Beperkingen van LOD-expressies

De volgende beperkingen zijn van toepassing op LOD-expressies. Zie ook Databronbeperkingen voor LOD-expressies.

  • LOD-expressies die verwijzen naar meetwaarden met zwevende komma functioneren soms niet naar verwachting wanneer ze worden gebruikt in een weergave waarin de waarden in de expressie moeten worden vergeleken. Zie Datatypen in berekeningen begrijpen(Link wordt in een nieuw venster geopend) voor meer informatie.

  • LOD-expressies worden niet weergegeven op de Databronpagina. Zie Databronpagina.

  • Gebruik altijd de parameternaam en niet de parameterwaarde wanneer u in een dimensionaliteitsdeclaratie naar een parameter verwijst.

  • Bij het combineren van data moet het koppelingsveld uit de primaire databron in de weergave staan voordat u een LOD-expressie uit de secundaire databron kunt gebruiken. Zie Problemen met Datacombinatie oplossen.

Bovendien gelden voor sommige databronnen limieten qua complexiteit. Tableau schakelt berekeningen voor deze databases niet uit, maar er kunnen queryfouten optreden als berekeningen te complex worden.

LOD-expressies kunnen dimensies of meetwaarden zijn

Wanneer u een LOD-expressie opslaat, voegt Tableau deze toe aan het gebied Dimensies of Meetwaarden in het deelvenster Data.

FIXED-LOD-expressies kunnen resulteren in meetwaarden of dimensies, afhankelijk van het onderliggende veld in de geaggregeerde expressie. Dus MIN([Datum])} wordt een dimensie omdat [Datum] een dimensie is, en {vaste Winkel: SUM([Verkoop])} wordt een meetwaarde omdat [Verkoop] een meetwaarde is. Wanneer een FIXED-LOD-expressie wordt opgeslagen als een meetwaarde, kunt u deze verplaatsen naar dimensies.

INCLUDE- en EXCLUDE-LOD-expressies zijn altijd meetwaarden.

Filters en LOD-expressies

Er zijn verschillende soorten filters in Tableau en deze worden in de volgende volgorde van boven naar beneden uitgevoerd.

De tekst aan de rechterkant laat zien waar LOD-expressies in deze volgorde worden geëvalueerd.

Extractfilters (oranje) zijn alleen relevant als u een Tableau-extract maakt op basis van een databron. Tabelberekeningsfilters (donkerblauw) worden toegepast nadat berekeningen zijn uitgevoerd en verbergen daarom markeringen zonder de onderliggende data die in de berekeningen zijn gebruikt weg te filteren.

Als u bekend bent met SQL, kunt u meetwaardenfilters beschouwen als equivalent aan de HAVING-clausule in een query, en dimensiefilters als equivalent aan de WHERE-clausule.

FIXED berekeningen worden toegepast vóór dimensiefilters, dus tenzij u de velden op uw container Filter bevordert naar Contextfilters gebruiken, worden deze genegeerd. Bedenk bijvoorbeeld of u de volgende berekening op één container in een weergave hebt, samen met [Staat] op een andere container:

SUM([Sales]) / ATTR({FIXED : SUM([Sales])})

Deze berekening geeft u de verhouding tussen de verkoop van een staat en de totale verkoop.

Als u dan [Staat] op de container Filters plaatst om enkele staten te verbergen, heeft het filter alleen invloed op de teller in de berekening. Omdat de noemer een FIXED-LOD-expressie is, wordt de verkoop voor de resterende staten in de weergave nog steeds verdeeld over de totale verkoop voor alle staten, inclusief de staten die uit de weergave zijn gefilterd.

INCLUDE- en EXCLUDE-LOD-expressies worden in aanmerking genomen na dimensiefilters. Dus als u wilt dat filters worden toegepast op uw FIXED-LOD-expressie, maar geen contextfilters wilt gebruiken, kunt u ze bijvoorbeeld herschrijven als INCLUDE- of EXCLUDE-expressies.

Aggregatie en LOD-expressies

Het detailniveau van de weergave bepaalt het aantal markeringen in de weergave. Wanneer u een LOD-expressie aan de weergave toevoegt, moet Tableau twee detailniveaus afstemmen: dat in de weergave en dat in de expressie.

Het gedrag van een LOD-expressie in de weergave varieert afhankelijk van het feit of het detailniveau in de expressie grover, fijner of hetzelfde is als het detailniveau in de weergave. Wat bedoelen we in dit geval met ‘grover’ of ‘fijner’?

LOD-expressie is grover dan detailniveau van de weergave

Een expressie heeft een grover detailniveau dan de weergave wanneer deze verwijst naar een subset van de dimensies in de weergave. Voor een weergave met de dimensies [Categorie] en [Segment] kunt u een LOD-expressie maken die slechts een van deze dimensies gebruikt:

{FIXED [Segment] : SUM([Sales])}

In dit geval heeft de expressie een grover detailniveau dan de weergave. De expressie baseert de waarden op één dimensie ([Segment]), terwijl de weergave is gebaseerd op twee dimensies ([Segment] en [Categorie]).

Het resultaat is dat gebruik van de LOD-expressie in de weergave ervoor zorgt dat bepaalde waarden worden gerepliceerd, dat wil zeggen dat ze meerdere keren voorkomen.

Gerepliceerde waarden zijn handig voor het vergelijken van specifieke waarden met gemiddelde waarden binnen een categorie. Met de volgende berekening wordt bijvoorbeeld de gemiddelde verkoop voor een klant afgetrokken van de gemiddelde totale verkoop:

[Sales] - {FIXED [Customer Name] : AVG([Sales])}

Wanneer waarden worden gerepliceerd, betekent het wijzigen van de aggregatie voor het relevante veld in de weergave (bijvoorbeeld van AVG in SUM) niet dat het resultaat van de aggregatie verandert.

LOD-expressie is fijner dan het detailniveau van de weergave

Een expressie heeft een fijner detailniveau dan de weergave wanneer deze verwijst naar een superset van de dimensies in de weergave. Wanneer u een dergelijke expressie in de weergave gebruikt, aggregeert Tableau de resultaten tot op weergaveniveau. De volgende LOD-expressie verwijst bijvoorbeeld naar twee dimensies:

{FIXED [Segment], [Category] : SUM([Sales])}

Wanneer deze expressie wordt gebruikt in een weergave die alleen [Segment] als detailniveau heeft, moeten de waarden worden geaggregeerd. Als u die expressie naar een container sleept, ziet u het volgende:

AVG([{FIXED [Segment]], [Category]] : SUM([Sales]])}])

Een aggregatie (in dit geval een gemiddelde) wordt automatisch toegewezen door Tableau. U kunt de aggregatie indien nodig wijzigen.

Een LOD-expressie toevoegen aan de weergave

Of een LOD-expressie wordt geaggregeerd of gerepliceerd in de weergave, wordt bepaald door het expressietype (FIXED, INCLUDE of EXCLUDE) en door het feit of de granulariteit van de expressie grover of fijner is dan die van de weergave.

  • INCLUDE-LOD-expressies hebben hetzelfde detailniveau als de weergave of een fijner detailniveau. Daarom worden waarden nooit gerepliceerd.

  • FIXED-LOD-expressies kunnen een fijner of een grover detailniveau hebben dan de weergave, of hetzelfde detailniveau. Of het nodig is om de resultaten van een FIXED-detailniveau te aggregeren hangt af van welke dimensies er in de weergave voorkomen.

  • EXCLUDE-LOD-expressies zorgen er altijd voor dat gerepliceerde waarden in de weergave verschijnen. Wanneer berekeningen met EXCLUDE-LOD-expressies op een container worden geplaatst, gebruikt Tableau standaard de ATTR-aggregatie (in tegenstelling tot SUM of AVG) om aan te geven dat de expressie niet daadwerkelijk wordt geaggregeerd en dat het wijzigen van de aggregatie geen effect heeft op de weergave.

LOD-expressies worden altijd automatisch verpakt in een aggregatie wanneer ze aan een container in de weergave worden toegevoegd, tenzij ze als dimensies worden gebruikt. Dus als u dubbelklikt op een container en

{FIXED[Segment], [Category] : SUM([Sales])}

typt en vervolgens op Enter drukt om de expressie vast te leggen, ziet u nu dit in de container:

SUM({FIXED[Segment], [Category] : SUM([Sales])})

Maar als u dubbelklikt op de container om de expressie te bewerken, ziet u de oorspronkelijke expressie in de bewerkingsmodus.

Als u een LOD-expressie in een aggregatie opneemt wanneer u deze maakt, gebruikt Tableau de aggregatie die u hebt opgegeven in plaats van een aggregatie toe te wijzen wanneer een berekening met die expressie op een container wordt geplaatst. Als er geen aggregatie nodig is (omdat het detailniveau van de expressie grover is dan dat van de weergave), wordt de door u opgegeven aggregatie nog steeds weergegeven als de expressie op een container staat, maar wordt deze genegeerd.

Databronbeperkingen voor LOD-expressies

Voor sommige databronnen geldt dat alleen recentere versies ondersteuning bieden voor LOD-expressies. Sommige databronnen bieden helemaal geen ondersteuning voor LOD-expressies.

Bovendien gelden voor sommige databronnen limieten qua complexiteit. Tableau schakelt berekeningen voor deze databases niet uit, maar er kunnen queryfouten optreden als berekeningen te complex worden.

DatabronOndersteuning
Actian VectorwiseNiet ondersteund.
Amazon EMR Hadoop HiveOndersteund in Hive 0.13 en hoger.
Amazon RedshiftOndersteund.
Aster DatabaseOndersteund in versie 4.5 en hoger.
Cloudera HadoopOndersteund in Hive 0.13 en hoger.
Cloudera ImpalaOndersteund in Impala 1.2.2 en hoger.
Kubussen (multidimensionale databronnen)Niet ondersteund.
DataStax EnterpriseNiet ondersteund.
EXASOLOndersteund.
FirebirdOndersteund in versie 2.0 en hoger.
Generieke ODBCBeperkt. Afhankelijk van de specifieke databron.
Google BigQueryOndersteund voor standaard SQL, niet ondersteund voor verouderde SQL.
Hortonworks Hadoop Hive

Ondersteund in Hive 0.13 en hoger.

In HIVE versie 1.1 zijn LOD-expressies die externe joins produceren niet betrouwbaar.

Er worden externe joins gemaakt wanneer er geen expliciet veld is om een join mee te maken. Tableau maakt bijvoorbeeld een externe join voor een LOD-expressie {fixed [Product Type] : sum(sales)} wanneer de weergave slechts één dimensie bevat [Verzendmodus]. Een externe join produceert rijen die elke rij uit de eerste tabel combineren met elke rij uit de tweede tabel.

IBM BigInsightsOndersteund.
IBM DB2Ondersteund in versie 8.1 en hoger.
MarkLogicOndersteund in versie 7.0 en hoger.
Microsoft AccessNiet ondersteund.
Op Microsoft Jet gebaseerde verbindingen (verouderde connectoren voor Microsoft Excel, Microsoft Access en tekst)Niet ondersteund.
Microsoft SQL ServerSQL Server 2005 en hoger.
MySQLOndersteund.
IBM PDA (Netezza)Ondersteund in versie 7.0 en hoger.
OracleOndersteund in versie 9i en hoger.
Actian Matrix (ParAccel)Ondersteund in versie 3.1 en hoger.
Pivotal GreenplumOndersteund in versie 3.1 en hoger.
PostgreSQLOndersteund in versie 7 en hoger.
Progress OpenEdgeOndersteund.
SAP HANAOndersteund.
SAP Sybase ASEOndersteund.
SAP Sybase IQOndersteund in versie 15.1 en hoger.
Spark SQLOndersteund.
SplunkNiet ondersteund.
Tableau-data-extractOndersteund.
TeradataOndersteund.
VerticaOndersteund in versie 6.1 en hoger.

Zie ook

LOD-expressies maken in Tableau

Inzicht krijgen in LOD-expressies (in het Engels)(Link wordt in een nieuw venster geopend)

Bedankt voor uw feedback.De feedback is verzonden. Dank u wel.