Efficiënte berekeningen maken
Wanneer uw data niet alle informatie bieden die u nodig hebt om uw vragen te beantwoorden, kunt u berekende velden maken om u te helpen bij uw analyse.
Binnen een berekend veld kunt u een hardgecodeerde constante (zoals een belastingtarief) definiëren, zeer eenvoudige wiskundige bewerkingen uitvoeren zoals aftrekken of vermenigvuldigen (bijvoorbeeld opbrengsten minus kosten), complexere wiskundige formules gebruiken, logische tests (IF/THEN, CASE) uitvoeren, typeconversies uitvoeren, expressies naar externe services zoals R verzenden en nog veel meer.
Er zijn verschillende berekeningstypen in Tableau:
Basis- en geaggregeerde berekeningen: Deze typen berekeningen worden gegenereerd als onderdeel van de query naar de onderliggende databron en worden in de database berekend. Over het algemeen zijn basis- en geaggregeerde berekeningen zeer goed schaalbaar en zijn er veel database-afstemmingstechnieken die de prestaties ervan kunnen verbeteren.
Tabelberekeningen: Deze berekeningen worden door Tableau uitgevoerd op basis van de queryresultatenset. Hoewel dit meer werk voor Tableau betekent, worden tabelberekeningen doorgaans uitgevoerd op een veel kleinere set records dan in de oorspronkelijke databron. Als de prestaties van de tabelberekening een probleem vormen (mogelijk omdat de resultaatset die naar Tableau wordt geretourneerd erg groot is), kunt u overwegen om enkele aspecten van de berekening terug te verplaatsen naar de databronlaag. Eén manier om dit te doen is door de data te aggregeren en vervolgens de berekening op de geaggregeerde data uit te voeren.
LOD-expressies (Level of Detail): LOD-expressies worden gegenereerd als onderdeel van de query naar de onderliggende databron en worden berekend in de database. Ze worden uitgedrukt als een geneste selectie, dus ze zijn afhankelijk van de databaseprestaties. Een tabelberekening of -combinatie kan beter presteren dan een LOD-expressie, of andersom.
Als u vermoedt dat de prestaties traag zijn vanwege een LOD-expressie, kunt u proberen deze te vervangen door een tabelberekening of een datacombinatie om te zien of de prestaties verbeteren. Zie voor een voorbeeld Voorbeeld 2 in De volgorde van bewerkingen in Tableau.
LOD-expressies kunnen worden beïnvloed door join-culling, dus raadpleeg Referentiële integriteit aannemen voor joins als uw query's langzaam verlopen wanneer u LOD-expressies gebruikt.
Zie de Tableau-whitepaper Inzicht krijgen in LOD-expressies (in het Engels) voor meer informatie.
Parameters gebruiken voor voorwaardelijke berekeningen
Een veelgebruikte techniek in Tableau is het weergeven van een parameterbesturingselement, zodat gebruikers een waarde kunnen selecteren die bepaalt hoe een berekening wordt uitgevoerd. Om de gebruiker eenvoudig te begrijpen opties te bieden, is het doorgaans zinvol om de parameter als een tekenreekstype te maken. Maar numerieke berekeningen zijn veel sneller dan tekenreeksberekeningen, dus profiteer van de functie Weergeven als van parameters: dat wil zeggen, tekstlabels weergeven, maar onderliggende gehele waarden gebruiken voor de berekeningslogica. Zie Parameters maken voor meer informatie.
Datumvelden converteren
Gebruikers hebben vaak datumdata die niet in de oorspronkelijke datumindelingen zijn opgeslagen. Een datum kan bijvoorbeeld een tekenreeks of een numerieke tijdstempel zijn. U kunt de functie DATEPARSE gebruiken als uw data deze ondersteunen. Deze functie is beschikbaar voor niet-verouderde Microsoft Excel- en tekstbestandverbindingen, MySQL-, Oracle-, PostgreSQL- en Tableau-data-extractdatabronnen. Anders parseert u het veld naar een datumreeks, zoals “2012-01-01”. ISO-tekenreeksen hebben de voorkeur omdat ze niet landspecifiek zijn. Geef de waarde vervolgens door aan de DATE-functie. Als de oorspronkelijke data een numeriek veld zijn, is het erg inefficiënt om deze eerst naar een tekenreeks en vervolgens naar een datum om te zetten. Het is veel beter om de data numeriek te houden en DATEADD en letterlijke datumwaarden te gebruiken om de berekening uit te voeren. Bij grote datasets kunnen de prestatieverbeteringen aanzienlijk zijn. Zie Datumfuncties voor meer informatie over deze functies.
Logische CASE-instructies gebruiken
Bij het werken met complexe logische instructies kunnen CASE-instructies sneller zijn dan IF- of ELSEIF-instructies.
Houd er rekening mee dat ELSEIF sneller is dan ELSE IF, omdat een geneste IF een tweede IF-instructie berekent in plaats van dat deze als onderdeel van de eerste wordt berekend.
Zie de whitepaper Efficiënte werkmappen ontwerpen voor meer informatie.
Meetwaarden aggregeren
Als de weergaven die u maakt langzaam zijn, controleer dan of u met geaggregeerde metingen werkt. Bij uitgesplitste data probeert u mogelijk veel rijen met data tegelijk te bekijken. U kunt het aantal rijen verlagen door de data te aggregeren. Selecteer hiervoor Analyse > Meetwaarden aggregeren.
Berekeningstips
Er zijn veel kleine dingen die u kunt doen om de berekeningsprestaties te verbeteren.
Het tellen van afzonderlijke waarden is een van de langzaamste aggregatietypen in bijna alle databronnen. Gebruik de COUNTD-aggregatie spaarzaam.
Het gebruik van parameters met een breed impactbereik (bijvoorbeeld in een aangepaste SQL-instructie) kan de cacheprestaties beïnvloeden.
Filteren op complexe berekeningen kan ertoe leiden dat indexen in de onderliggende data worden gemist.
Scriptfuncties zoals RAWSQL en SCRIPT_* voor integratie met externe services kunnen traag zijn, vooral als er veel waarden heen en weer moeten worden gestuurd van en naar de DBMS/R-server.
Gebruik NOW alleen als u het detailniveau van het tijdstempel nodig hebt. Gebruik TODAY voor datumniveauberekeningen.
Houd er rekening mee dat alle basisberekeningen worden doorgegeven aan de onderliggende data, zelfs letterlijke berekeningen zoals labeltekenreeksen. Als u labels moet maken (bijvoorbeeld voor kolomkoppen) en uw data zijn erg groot, maak dan een eenvoudige tekst-/Excel-databron met slechts één record om de labels in op te slaan. Zo zorgen ze niet voor extra overhead in de grote databron.