SlideShare uma empresa Scribd logo
1 de 51
Designing dashboards for
performance
Reference deck
Mrunal Shridhar
Senior Product Consultant, EMEA
BASIC PRINCIPLES
1. Everything in moderation
2. If it isn’t fast in database, it won’t be fast in Tableau
3. If it isn’t fast in desktop, it won’t be fast in server
©2012 Tableau Software Inc. All rights reserved.
DATA SOURCES
File-based data sources
Relational data sources
OLAP data sources
Web-based data sources
©2012 Tableau Software Inc. All rights reserved.
Import into Tableau’s fast data engine
Microsoft JET driver
– 255 columns, 255 characters
– No COUNT DISTINCT or MEDIAN
– Files greater than 4GB in size
Tableau text parser
– Used when no data modelled
File-based data sources
Indexes
– On all columns part of table JOINs
– On any column used in FILTER
Referential integrity
– Primary and foreign key explicitly defined
‱ Helps bypass integrity checks
– Join culling
Partitioning
– Split larger table into smaller, individual tables
– Partition across dimension
Relational data sources
NULLs
– Define dimension as NOT NULL
– Increase effectiveness of indexes
Calculations
– Very complex calculations in a view or function within DB
– Create a custom SQL
Summary tables
– Summarize data to higher level of aggregation
Relational data sources
OLAP data sources
– Underlying language differences
‱ Metadata definition
‱ Filtering
‱ Totals and aggregations
‱ Data blending
Web-based data sources
– “Connect live” not an option
– Extracts can be refreshed
‱ Automated and scheduled
Other data sources
QUERIES
Understanding the query
Multiple tables vs. custom SQL
Blending vs. joining
©2012 Tableau Software Inc. All rights reserved.
Slow-running visualisation
– Time it takes to query
– Time to stream records back
Number of records
– Large number vs. smaller number of aggregated records
Desktop log files
Performance Recorder
Understanding the query
Multiple tables
– Dynamically create SQL based on fields
– Join culling to drop unused dimension tables
‱ Referential integrity
Custom SQL
– Never deconstructed, and executed atomically
– Use in conjunction with Tableau’s data engine
– Context filters materialise results in a temp table
– Include parameters in SQL statements
Multiple tables vs. custom SQL
More than one data source
– Blend data or federated database system
Join is better on same data source
– Improve performance
– Improve filtering control
Blend is better across data sources
– Too many records for a join to be practical
– Display summary and details at the same time
Blending vs. joining
EXTRACTS
Creating extracts
Aggregated extracts
Optimizing extracts
Extracts vs. live connections
©2012 Tableau Software Inc. All rights reserved.
Factors
– Database technology
– Network speed
– Data volumes
– Workstation specs
‱ Fast CPU with multiple cores
‱ Lots of RAM
‱ Fast I/O
Creation requires temp disk space
– Up to square of the size of resulting extract file
Create extract on workstation, populate on server
Creating extracts
Helps improve performance
– Aggregate to summary level
– Filter unnecessary values
– Hide all unused fields
Multiple level of detail across extracts
– Querying from higher aggregation to detail
Aggregated extracts
Optimize deterministic calculations
– String manipulations and concatenations
– Groups and sets
Non-deterministic calculations not stored
Cheaper to store data than recalculate
Optimizing extracts
Speed of data engine is relative
Data engine is faster than
– Non-optimized data base
– File-based data source
Data engine probably slower than
– Big cluster of fast machines
Aggregate extracts to offload summary-style analysis
– Detailed source data in data warehouse
Extracts vs. live connections
FILTERING
Filtering categorical dimensions
Filtering dates
Context filters
Quick filters
User filters
©2012 Tableau Software Inc. All rights reserved.
Discrete filters can be slower
– Keep only and exclude perform poor
‱ Complex WHERE clause
‱ Join on a temp table
Ranged filters can be faster
– Faster than large itemised list of discrete values
– Faster when increasing dimensions cardinality
Indexes impact efficiency of filters
Filtering categorical dimensions
Discrete dates or date levels
– Can result in poor query execution
‱ Tables not partitioned on DATEPART
– Data extract can optimise performance
‱ DATEPART materialised in extract
Range of contiguous dates
– Very efficient for query optimisers
‱ Leverage indexes and partitions
Relative to a specific date
– Uses ranged date filter
Filtering dates
All filters are computed independently
Set one or more filters as context filters
– Any other filters are defined as dependent filters
– Writes filter result set to temp table
‱ Subsequent filters and queries on smaller dataset
Creation of temp table expensive activity
– Context filters not frequently changed by user
Custom SQL statements can be optimised
Context filters
Too many quick filters will slow you down
– ‘Only Relevant Values’
– Lots of discrete lists
Try guided analytics over many quick filters
– Multiple dashboards with different levels
– Action filters within a dashboard
Quick filters
Enumerated quick filters can be slow
– Requires a query for all potential field values
‱ Multiple value list
‱ Single value list
‱ Compact list
‱ Slider
‱ Measure filters
‱ Ranged date filters
Non-enumerated quick filters can be helpful
– Do not require field values
‱ Custom value list
‱ Wildcard match
‱ Relative date filters
‱ Browse period date filters
Performance at the expense of visual context for end user
Quick filters
Show potential values in 3 different ways
– All values in database
‱ No need to re-query when other filters changed
– All values in context
‱ Temp table regardless of other filters
– Only relevant values
‱ Other filters are considered
Quick filters
Create a parameter and filter based on users’ selection
– PROS
‱ Do not require a query before rendering
‱ Parameters + calculated fields = complex logic
‱ Can be used to filter across data sources
– CONS
‱ Single-value selection only
‱ Selection list cannot be dynamic
Quick filter alternatives
Use filter actions between views
– PROS
‱ Supports multi-value selection
‱ Evaluated at run-time to show a dynamic list
‱ Can be used to filter across data sources
– CONS
‱ Filter actions are more complex to set up
‱ Not the same UI as parameters or quick filters
‱ Source sheet still needs to query the data source
Quick filter alternatives
More data source I/O
– Need to ask exact same query again
More cache space required
– Each user session creates own query results and model cache
Caches being cleared can result in more I/O
User filters
CALCULATIONS
Basic and aggregate vs. table calculations
Calculations vs. native features
Performance techniques
©2012 Tableau Software Inc. All rights reserved.
Basic and aggregate calculations
– Expressed as part of the query sent to data source
– Calculated by the database
– Basic calculations scale very well
‱ Tuning techniques can improve performance
Table calculations
– Calculated locally on query results returned
‱ Generally done over a smaller set of records
– If performance is slow

‱ Then push calculations to data source layer
‱ Consider aggregated data extracts
Basic and aggregate calculations
Native features often more efficient than a manual calculation
– Grouping dimension members together
‱ Consider using groups
– Grouping measure values together into ‘bins’
‱ Consider using bins
– Changing displayed values for dimension members
‱ Consider using aliases
Calculations vs. native features
Data type used has a significant impact on performance
– Integers are faster than Booleans
– Both are faster than Strings
Use Booleans for basic logic calculations
– Bad
‱ IF [DATE]= TODAY() THEN “TODAY” ELSE “NOT TODAY” END
– Good
‱ [DATE]=TODAY()
String searches
– FIND() slower than CONTAINS()
– CONTAINS() slower than wildcard match quick filter
Performance techniques
Parameters for conditional calculations
– Take advantage of ‘display as’
‱ Integer values for calculation logic
Performance techniques
VALUE DISPLAY AS
YEAR YEAR
QUARTER QUARTER
MONTH MONTH
WEEK WEEK
DAY DAY
 
VALUE DISPLAY AS
1 YEAR
2 QUARTER
3 MONTH
4 WEEK
5 DAY
 
Date conversion
– Numeric field to a string to a date is inefficient
‱ Bad
– DATE(LEFT(STR([YYYYMMDD]),4) + “-“ + MID(STR([YYYYMMDD]),4,2) + “-“ + RIGHT(STR([YYYYMMDD]),2))
– Keep numeric field and use DATEADD()
‱ Good
– DATEADD(‘DAY’, [YYYYMMDD]%100-1, DATEADD(‘MONTH’, INT(([YYYYMMDD]%10000)/100)-1, DATEADD(‘YEAR’,
INT([YYYYMMDD]/10000)-1900, #1900-01-01#)))
Date functions
– NOW() for time stamp
– TODAY() for date level
Performance techniques
Logic statements
– ELSEIF != ELSE IF
IF [REGION] = "EAST" AND [CUSTOMER SEGMENT] = "CONSUMER"
THEN "EAST-CONSUMER"
ELSE IF [REGION] = "EAST" AND CUSTOMER SEGMENT] <>"CONSUMER"
THEN "EAST-ALL OTHERS"
END
END
– would run much faster as:
IF [REGION] = "EAST" AND [CUSTOMER SEGMENT] = "CONSUMER"
THEN "EAST-CONSUMER"
ELSEIF [REGION] = "EAST" AND [CUSTOMER SEGMENT] <>"CONSUMER"
THEN "EAST-ALL OTHERS"
END
– but this is faster still:
IF [REGION] = "EAST" THEN
IF [CUSTOMER SEGMENT] = "CONSUMER" THEN
"EAST-CONSUMER"
ELSE "EAST-ALL OTHERS"
END
END
Performance techniques
Separate basic and aggregate calculations
– When using extracts and custom aggregations
‱ Divide calculations into multiple parts
– Row level calculations on one calculated field
– Aggregated calculations on second calculated field
Performance techniques
PRESENTATION
Views
Dashboards
©2012 Tableau Software Inc. All rights reserved.
Only fetch and draw what you need
– Remove unnecessary fields from level of detail
Charts vs. crosstabs
– Marks display faster than a tabular report
‱ Rendering a text table consumes more memory
– Tableau is not a back door data extract process
‱ Leverage aggregate to detail action filters
Removing unnecessary geographic roles
– Save time to lookup generated latitudes & longitudes
Views
Blending vs. custom geographic roles
– Custom geocoding embeds entire GEOCODING.FDB
‱ Significant increase in TWBX file size
– Joining or blending geographic data is smaller size
‱ Save only relevant custom geographic data
Views
Less views, less quick filters
– Each view requires at least one query
– Each quick filter requires at least one query
– Can result into a lot of I/O before rendering
– Dashboards process views from same data source in a serial fashion
Turn off tabs
– Must process every view in every tab
‱ Need to understand structure of tabs for actions or filters
– Reducing tabs improves performance
‱ Try ‘:tabs=no’
Dashboards
“Exclude all values”
– Avoids expensive query of asking for all data
Fixed size dashboards
– Different window sizes mean views are drawn differently
‱ VizQL server must render view separately for each user
– “Automatic (Fit To Window)” has low cache hit rate
Container considerations
‱ Consider reducing excessive usage of containers
Dashboards
TOOLS TO ANALYZE PERFORMANCE
Tableau desktop messages
Log files
Database performance monitors
Tableau 8 performance metrics
©2012 Tableau Software Inc. All rights reserved.
Executing query
– Process
‱ Execute a query to return records for the view
– Investigate
‱ Review log file to see queries taking long time
– Possible solution
‱ Consider calculation, query and filter techniques
Tableau desktop messages
Computing View Layout
– Process
‱ Tableau rendering display on all data received
– Investigate
‱ Slow-running table calculations
‱ Very large crosstab
‱ Lots of marks rendered
– Possible solution
‱ Review techniques for calculation optimisation and view design
Tableau desktop messages
Computing quick filters
– Process
‱ Tableau is processing quick filters for view(s)
– Investigate
‱ Long time rendering and refreshing quick filters
– Possible solution
‱ Consider not using ‘show relevant values’
‱ Consider not using enumerated quick filters
‱ Review techniques for filter performance and view design
Tableau desktop messages
Understand where bottlenecks are occurring
– Information on what Tableau is doing
– Tableau communication with the data source
– Time taken by each Tableau step
For Tableau Desktop
– C:UsersusernameDocumentsMy Tableau RepositoryLogs
For Tableau Server, the VizQL log file:
– C:ProgramDataTableauTableau ServerdatatabsvcvizqlserverLogs
Log files
Database performance monitors
– Insight on queries hitting your DB
– Understand how database processes them
– Advice on additional tuning
Tableau 8 performance metrics
– Turn on to record metrics
Database performance monitors
Interpret performance recording
– Timeline
‱ Workbook, dashboard, worksheet
– Events
‱ Event nature and duration
– Query
‱ Executing query in either timeline or events
Performance metrics V8
Computing layouts
– If layouts are taking too long, consider simplifying your workbook.
Connecting to data source
– Slow connections could be due to network issues or issues with the database server.
Executing query
– If queries are taking too long, consult your database server’s documentation.
Generating extract
– To speed up extract generation, consider only importing some data from the original data source.
Geocoding
– To speed up geocoding performance, try using less data or filtering out data.
Blending data
– To speed up data blending, try using less data or filtering out data.
Server rendering
– You can speed up server rendering by running additional VizQL Server processes on additional
machines.
Performance metrics events
TABLEAU SERVER
General performance guidelines
Caching
©2012 Tableau Software Inc. All rights reserved.
General guidelines
– Use 64-bit Tableau
‱ Processes have access to more memory
– Add more cores and memory
Configuration
– Schedule extract refreshes for off-peak hours
– Check the VizQL session timeout limit
‱ Default is 30 minutes
– Idle session still consumes memory
‱ Change using tabadmin
– vizqlserver.session.expiry.timeout.setting
– Assess your process configuration
General guidelines
Maximise cache use
–Reuse image tile and model caches
– Set dashboard size rule to ‘exact size’
Tuning caches
–Tableau server configuration utility
– Minimise queries
– Balanced
– Most up-to-date
» “:refresh=yes” to view URL
–Tabadmin
– Model cache
» vizqlserver.modelcachesize:30
– Query cache
» vizqlserver.querycachesize:64
Caching
FINISH

Mais conteĂșdo relacionado

Semelhante a TCC14 tour hague optimising workbooks

Designing dashboards for performance shridhar wip 040613
Designing dashboards for performance shridhar wip 040613Designing dashboards for performance shridhar wip 040613
Designing dashboards for performance shridhar wip 040613Mrunal Shridhar
 
Statistics and Indexes Internals
Statistics and Indexes InternalsStatistics and Indexes Internals
Statistics and Indexes InternalsAntonios Chatzipavlis
 
Best storage engine for MySQL
Best storage engine for MySQLBest storage engine for MySQL
Best storage engine for MySQLtomflemingh2
 
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)Michael Rys
 
SKILLWISE-SSIS DESIGN PATTERN FOR DATA WAREHOUSING
SKILLWISE-SSIS DESIGN PATTERN FOR DATA WAREHOUSINGSKILLWISE-SSIS DESIGN PATTERN FOR DATA WAREHOUSING
SKILLWISE-SSIS DESIGN PATTERN FOR DATA WAREHOUSINGSkillwise Group
 
Breaking data
Breaking dataBreaking data
Breaking dataTerry Bunio
 
Understanding parametersniffing sqlsat
Understanding parametersniffing sqlsatUnderstanding parametersniffing sqlsat
Understanding parametersniffing sqlsatSanil Mhatre
 
Optimizing Application Performance - 2022.pptx
Optimizing Application Performance - 2022.pptxOptimizing Application Performance - 2022.pptx
Optimizing Application Performance - 2022.pptxJasonTuran2
 
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!Richard Robinson
 
Dynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data MergeDynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data MergeClay Helberg
 
Sumo Logic Quick Start - Feb 2016
Sumo Logic Quick Start - Feb 2016Sumo Logic Quick Start - Feb 2016
Sumo Logic Quick Start - Feb 2016Sumo Logic
 
Performance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL DatabasePerformance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL DatabaseTung Nguyen Thanh
 
Meta scale kognitio hadoop webinar
Meta scale kognitio hadoop webinarMeta scale kognitio hadoop webinar
Meta scale kognitio hadoop webinarMichael Hiskey
 
Query Optimization in SQL Server
Query Optimization in SQL ServerQuery Optimization in SQL Server
Query Optimization in SQL ServerRajesh Gunasundaram
 
Building better SQL Server Databases
Building better SQL Server DatabasesBuilding better SQL Server Databases
Building better SQL Server DatabasesColdFusionConference
 
Jethro for tableau webinar (11 15)
Jethro for tableau webinar (11 15)Jethro for tableau webinar (11 15)
Jethro for tableau webinar (11 15)Remy Rosenbaum
 
Performance Tuning with Execution Plans
Performance Tuning with Execution PlansPerformance Tuning with Execution Plans
Performance Tuning with Execution PlansGrant Fritchey
 
Database performance tuning and query optimization
Database performance tuning and query optimizationDatabase performance tuning and query optimization
Database performance tuning and query optimizationDhani Ahmad
 

Semelhante a TCC14 tour hague optimising workbooks (20)

Designing dashboards for performance shridhar wip 040613
Designing dashboards for performance shridhar wip 040613Designing dashboards for performance shridhar wip 040613
Designing dashboards for performance shridhar wip 040613
 
Statistics and Indexes Internals
Statistics and Indexes InternalsStatistics and Indexes Internals
Statistics and Indexes Internals
 
Best storage engine for MySQL
Best storage engine for MySQLBest storage engine for MySQL
Best storage engine for MySQL
 
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
 
SKILLWISE-SSIS DESIGN PATTERN FOR DATA WAREHOUSING
SKILLWISE-SSIS DESIGN PATTERN FOR DATA WAREHOUSINGSKILLWISE-SSIS DESIGN PATTERN FOR DATA WAREHOUSING
SKILLWISE-SSIS DESIGN PATTERN FOR DATA WAREHOUSING
 
Breaking data
Breaking dataBreaking data
Breaking data
 
Understanding parametersniffing sqlsat
Understanding parametersniffing sqlsatUnderstanding parametersniffing sqlsat
Understanding parametersniffing sqlsat
 
Optimizing Application Performance - 2022.pptx
Optimizing Application Performance - 2022.pptxOptimizing Application Performance - 2022.pptx
Optimizing Application Performance - 2022.pptx
 
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
 
Dynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data MergeDynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data Merge
 
Sumo Logic Quick Start - Feb 2016
Sumo Logic Quick Start - Feb 2016Sumo Logic Quick Start - Feb 2016
Sumo Logic Quick Start - Feb 2016
 
Performance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL DatabasePerformance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL Database
 
Meta scale kognitio hadoop webinar
Meta scale kognitio hadoop webinarMeta scale kognitio hadoop webinar
Meta scale kognitio hadoop webinar
 
Query Optimization in SQL Server
Query Optimization in SQL ServerQuery Optimization in SQL Server
Query Optimization in SQL Server
 
Building better SQL Server Databases
Building better SQL Server DatabasesBuilding better SQL Server Databases
Building better SQL Server Databases
 
Jethro for tableau webinar (11 15)
Jethro for tableau webinar (11 15)Jethro for tableau webinar (11 15)
Jethro for tableau webinar (11 15)
 
Datastage Introduction To Data Warehousing
Datastage Introduction To Data WarehousingDatastage Introduction To Data Warehousing
Datastage Introduction To Data Warehousing
 
LECTURE4.ppt
LECTURE4.pptLECTURE4.ppt
LECTURE4.ppt
 
Performance Tuning with Execution Plans
Performance Tuning with Execution PlansPerformance Tuning with Execution Plans
Performance Tuning with Execution Plans
 
Database performance tuning and query optimization
Database performance tuning and query optimizationDatabase performance tuning and query optimization
Database performance tuning and query optimization
 

Último

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vĂĄzquez
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 

Último (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

TCC14 tour hague optimising workbooks

  • 1. Designing dashboards for performance Reference deck Mrunal Shridhar Senior Product Consultant, EMEA
  • 2. BASIC PRINCIPLES 1. Everything in moderation 2. If it isn’t fast in database, it won’t be fast in Tableau 3. If it isn’t fast in desktop, it won’t be fast in server ©2012 Tableau Software Inc. All rights reserved.
  • 3. DATA SOURCES File-based data sources Relational data sources OLAP data sources Web-based data sources ©2012 Tableau Software Inc. All rights reserved.
  • 4. Import into Tableau’s fast data engine Microsoft JET driver – 255 columns, 255 characters – No COUNT DISTINCT or MEDIAN – Files greater than 4GB in size Tableau text parser – Used when no data modelled File-based data sources
  • 5. Indexes – On all columns part of table JOINs – On any column used in FILTER Referential integrity – Primary and foreign key explicitly defined ‱ Helps bypass integrity checks – Join culling Partitioning – Split larger table into smaller, individual tables – Partition across dimension Relational data sources
  • 6. NULLs – Define dimension as NOT NULL – Increase effectiveness of indexes Calculations – Very complex calculations in a view or function within DB – Create a custom SQL Summary tables – Summarize data to higher level of aggregation Relational data sources
  • 7. OLAP data sources – Underlying language differences ‱ Metadata definition ‱ Filtering ‱ Totals and aggregations ‱ Data blending Web-based data sources – “Connect live” not an option – Extracts can be refreshed ‱ Automated and scheduled Other data sources
  • 8. QUERIES Understanding the query Multiple tables vs. custom SQL Blending vs. joining ©2012 Tableau Software Inc. All rights reserved.
  • 9. Slow-running visualisation – Time it takes to query – Time to stream records back Number of records – Large number vs. smaller number of aggregated records Desktop log files Performance Recorder Understanding the query
  • 10. Multiple tables – Dynamically create SQL based on fields – Join culling to drop unused dimension tables ‱ Referential integrity Custom SQL – Never deconstructed, and executed atomically – Use in conjunction with Tableau’s data engine – Context filters materialise results in a temp table – Include parameters in SQL statements Multiple tables vs. custom SQL
  • 11. More than one data source – Blend data or federated database system Join is better on same data source – Improve performance – Improve filtering control Blend is better across data sources – Too many records for a join to be practical – Display summary and details at the same time Blending vs. joining
  • 12. EXTRACTS Creating extracts Aggregated extracts Optimizing extracts Extracts vs. live connections ©2012 Tableau Software Inc. All rights reserved.
  • 13. Factors – Database technology – Network speed – Data volumes – Workstation specs ‱ Fast CPU with multiple cores ‱ Lots of RAM ‱ Fast I/O Creation requires temp disk space – Up to square of the size of resulting extract file Create extract on workstation, populate on server Creating extracts
  • 14. Helps improve performance – Aggregate to summary level – Filter unnecessary values – Hide all unused fields Multiple level of detail across extracts – Querying from higher aggregation to detail Aggregated extracts
  • 15. Optimize deterministic calculations – String manipulations and concatenations – Groups and sets Non-deterministic calculations not stored Cheaper to store data than recalculate Optimizing extracts
  • 16. Speed of data engine is relative Data engine is faster than – Non-optimized data base – File-based data source Data engine probably slower than – Big cluster of fast machines Aggregate extracts to offload summary-style analysis – Detailed source data in data warehouse Extracts vs. live connections
  • 17. FILTERING Filtering categorical dimensions Filtering dates Context filters Quick filters User filters ©2012 Tableau Software Inc. All rights reserved.
  • 18. Discrete filters can be slower – Keep only and exclude perform poor ‱ Complex WHERE clause ‱ Join on a temp table Ranged filters can be faster – Faster than large itemised list of discrete values – Faster when increasing dimensions cardinality Indexes impact efficiency of filters Filtering categorical dimensions
  • 19. Discrete dates or date levels – Can result in poor query execution ‱ Tables not partitioned on DATEPART – Data extract can optimise performance ‱ DATEPART materialised in extract Range of contiguous dates – Very efficient for query optimisers ‱ Leverage indexes and partitions Relative to a specific date – Uses ranged date filter Filtering dates
  • 20. All filters are computed independently Set one or more filters as context filters – Any other filters are defined as dependent filters – Writes filter result set to temp table ‱ Subsequent filters and queries on smaller dataset Creation of temp table expensive activity – Context filters not frequently changed by user Custom SQL statements can be optimised Context filters
  • 21. Too many quick filters will slow you down – ‘Only Relevant Values’ – Lots of discrete lists Try guided analytics over many quick filters – Multiple dashboards with different levels – Action filters within a dashboard Quick filters
  • 22. Enumerated quick filters can be slow – Requires a query for all potential field values ‱ Multiple value list ‱ Single value list ‱ Compact list ‱ Slider ‱ Measure filters ‱ Ranged date filters Non-enumerated quick filters can be helpful – Do not require field values ‱ Custom value list ‱ Wildcard match ‱ Relative date filters ‱ Browse period date filters Performance at the expense of visual context for end user Quick filters
  • 23. Show potential values in 3 different ways – All values in database ‱ No need to re-query when other filters changed – All values in context ‱ Temp table regardless of other filters – Only relevant values ‱ Other filters are considered Quick filters
  • 24. Create a parameter and filter based on users’ selection – PROS ‱ Do not require a query before rendering ‱ Parameters + calculated fields = complex logic ‱ Can be used to filter across data sources – CONS ‱ Single-value selection only ‱ Selection list cannot be dynamic Quick filter alternatives
  • 25. Use filter actions between views – PROS ‱ Supports multi-value selection ‱ Evaluated at run-time to show a dynamic list ‱ Can be used to filter across data sources – CONS ‱ Filter actions are more complex to set up ‱ Not the same UI as parameters or quick filters ‱ Source sheet still needs to query the data source Quick filter alternatives
  • 26. More data source I/O – Need to ask exact same query again More cache space required – Each user session creates own query results and model cache Caches being cleared can result in more I/O User filters
  • 27. CALCULATIONS Basic and aggregate vs. table calculations Calculations vs. native features Performance techniques ©2012 Tableau Software Inc. All rights reserved.
  • 28. Basic and aggregate calculations – Expressed as part of the query sent to data source – Calculated by the database – Basic calculations scale very well ‱ Tuning techniques can improve performance Table calculations – Calculated locally on query results returned ‱ Generally done over a smaller set of records – If performance is slow
 ‱ Then push calculations to data source layer ‱ Consider aggregated data extracts Basic and aggregate calculations
  • 29. Native features often more efficient than a manual calculation – Grouping dimension members together ‱ Consider using groups – Grouping measure values together into ‘bins’ ‱ Consider using bins – Changing displayed values for dimension members ‱ Consider using aliases Calculations vs. native features
  • 30. Data type used has a significant impact on performance – Integers are faster than Booleans – Both are faster than Strings Use Booleans for basic logic calculations – Bad ‱ IF [DATE]= TODAY() THEN “TODAY” ELSE “NOT TODAY” END – Good ‱ [DATE]=TODAY() String searches – FIND() slower than CONTAINS() – CONTAINS() slower than wildcard match quick filter Performance techniques
  • 31. Parameters for conditional calculations – Take advantage of ‘display as’ ‱ Integer values for calculation logic Performance techniques VALUE DISPLAY AS YEAR YEAR QUARTER QUARTER MONTH MONTH WEEK WEEK DAY DAY   VALUE DISPLAY AS 1 YEAR 2 QUARTER 3 MONTH 4 WEEK 5 DAY  
  • 32. Date conversion – Numeric field to a string to a date is inefficient ‱ Bad – DATE(LEFT(STR([YYYYMMDD]),4) + “-“ + MID(STR([YYYYMMDD]),4,2) + “-“ + RIGHT(STR([YYYYMMDD]),2)) – Keep numeric field and use DATEADD() ‱ Good – DATEADD(‘DAY’, [YYYYMMDD]%100-1, DATEADD(‘MONTH’, INT(([YYYYMMDD]%10000)/100)-1, DATEADD(‘YEAR’, INT([YYYYMMDD]/10000)-1900, #1900-01-01#))) Date functions – NOW() for time stamp – TODAY() for date level Performance techniques
  • 33. Logic statements – ELSEIF != ELSE IF IF [REGION] = "EAST" AND [CUSTOMER SEGMENT] = "CONSUMER" THEN "EAST-CONSUMER" ELSE IF [REGION] = "EAST" AND CUSTOMER SEGMENT] <>"CONSUMER" THEN "EAST-ALL OTHERS" END END – would run much faster as: IF [REGION] = "EAST" AND [CUSTOMER SEGMENT] = "CONSUMER" THEN "EAST-CONSUMER" ELSEIF [REGION] = "EAST" AND [CUSTOMER SEGMENT] <>"CONSUMER" THEN "EAST-ALL OTHERS" END – but this is faster still: IF [REGION] = "EAST" THEN IF [CUSTOMER SEGMENT] = "CONSUMER" THEN "EAST-CONSUMER" ELSE "EAST-ALL OTHERS" END END Performance techniques
  • 34. Separate basic and aggregate calculations – When using extracts and custom aggregations ‱ Divide calculations into multiple parts – Row level calculations on one calculated field – Aggregated calculations on second calculated field Performance techniques
  • 36. Only fetch and draw what you need – Remove unnecessary fields from level of detail Charts vs. crosstabs – Marks display faster than a tabular report ‱ Rendering a text table consumes more memory – Tableau is not a back door data extract process ‱ Leverage aggregate to detail action filters Removing unnecessary geographic roles – Save time to lookup generated latitudes & longitudes Views
  • 37. Blending vs. custom geographic roles – Custom geocoding embeds entire GEOCODING.FDB ‱ Significant increase in TWBX file size – Joining or blending geographic data is smaller size ‱ Save only relevant custom geographic data Views
  • 38. Less views, less quick filters – Each view requires at least one query – Each quick filter requires at least one query – Can result into a lot of I/O before rendering – Dashboards process views from same data source in a serial fashion Turn off tabs – Must process every view in every tab ‱ Need to understand structure of tabs for actions or filters – Reducing tabs improves performance ‱ Try ‘:tabs=no’ Dashboards
  • 39. “Exclude all values” – Avoids expensive query of asking for all data Fixed size dashboards – Different window sizes mean views are drawn differently ‱ VizQL server must render view separately for each user – “Automatic (Fit To Window)” has low cache hit rate Container considerations ‱ Consider reducing excessive usage of containers Dashboards
  • 40. TOOLS TO ANALYZE PERFORMANCE Tableau desktop messages Log files Database performance monitors Tableau 8 performance metrics ©2012 Tableau Software Inc. All rights reserved.
  • 41. Executing query – Process ‱ Execute a query to return records for the view – Investigate ‱ Review log file to see queries taking long time – Possible solution ‱ Consider calculation, query and filter techniques Tableau desktop messages
  • 42. Computing View Layout – Process ‱ Tableau rendering display on all data received – Investigate ‱ Slow-running table calculations ‱ Very large crosstab ‱ Lots of marks rendered – Possible solution ‱ Review techniques for calculation optimisation and view design Tableau desktop messages
  • 43. Computing quick filters – Process ‱ Tableau is processing quick filters for view(s) – Investigate ‱ Long time rendering and refreshing quick filters – Possible solution ‱ Consider not using ‘show relevant values’ ‱ Consider not using enumerated quick filters ‱ Review techniques for filter performance and view design Tableau desktop messages
  • 44. Understand where bottlenecks are occurring – Information on what Tableau is doing – Tableau communication with the data source – Time taken by each Tableau step For Tableau Desktop – C:UsersusernameDocumentsMy Tableau RepositoryLogs For Tableau Server, the VizQL log file: – C:ProgramDataTableauTableau ServerdatatabsvcvizqlserverLogs Log files
  • 45. Database performance monitors – Insight on queries hitting your DB – Understand how database processes them – Advice on additional tuning Tableau 8 performance metrics – Turn on to record metrics Database performance monitors
  • 46. Interpret performance recording – Timeline ‱ Workbook, dashboard, worksheet – Events ‱ Event nature and duration – Query ‱ Executing query in either timeline or events Performance metrics V8
  • 47. Computing layouts – If layouts are taking too long, consider simplifying your workbook. Connecting to data source – Slow connections could be due to network issues or issues with the database server. Executing query – If queries are taking too long, consult your database server’s documentation. Generating extract – To speed up extract generation, consider only importing some data from the original data source. Geocoding – To speed up geocoding performance, try using less data or filtering out data. Blending data – To speed up data blending, try using less data or filtering out data. Server rendering – You can speed up server rendering by running additional VizQL Server processes on additional machines. Performance metrics events
  • 48. TABLEAU SERVER General performance guidelines Caching ©2012 Tableau Software Inc. All rights reserved.
  • 49. General guidelines – Use 64-bit Tableau ‱ Processes have access to more memory – Add more cores and memory Configuration – Schedule extract refreshes for off-peak hours – Check the VizQL session timeout limit ‱ Default is 30 minutes – Idle session still consumes memory ‱ Change using tabadmin – vizqlserver.session.expiry.timeout.setting – Assess your process configuration General guidelines
  • 50. Maximise cache use –Reuse image tile and model caches – Set dashboard size rule to ‘exact size’ Tuning caches –Tableau server configuration utility – Minimise queries – Balanced – Most up-to-date » “:refresh=yes” to view URL –Tabadmin – Model cache » vizqlserver.modelcachesize:30 – Query cache » vizqlserver.querycachesize:64 Caching