Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Extract Performance Tuning

ASecurity

Playbook for diagnosing and fixing slow Tableau workbooks: the measurement-first approach, the six extract optimisation levers, query performance recording interpretation, and the view-level and data-source-level fixes that address 90% of performance complaints. Owned by tableau-data-architect.

7 stars
0 votes
0 copies
0 views
Added 9/23/2026
ai-agentsdatabaseperformance

Works with

cli

Security Analysis

A100/100

Scanned 9/23/2026

$npx -y skills add mcorbett51090/RavenClaude --skill extract-performance-tuning --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Extract Performance Tuning?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Extract Performance Tuning
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mcorbett51090-extract-performance-tuning/badge)](https://www.skillsdirectory.com/skills/mcorbett51090-extract-performance-tuning)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: extract-performance-tuning
description: "Playbook for diagnosing and fixing slow Tableau workbooks: the measurement-first approach, the six extract optimisation levers, query performance recording interpretation, and the view-level and data-source-level fixes that address 90% of performance complaints. Owned by tableau-data-architect."
---

# Extract Performance Tuning

## When to invoke

- A workbook loads slowly or times out on Tableau Server/Cloud.
- An extract refresh is running longer than expected.
- Users report a dashboard that worked fine on 1 M rows is slow at 10 M rows.
- Choosing between a live connection and an extract for a new workbook.

## Step 1 — Measure before tuning

Always start with Tableau's built-in instrumentation. Guessing the bottleneck wastes time.

1. **Performance Recording** — Help → Settings and Performance → Start Performance Recording. Interact with the slow view, then Stop. The recording workbook shows query time, rendering time, and layout time. The query bar is where most gains live.
2. **Stats for Viz Rendering** — Server: Admin → Stats for Viz Rendering (shows query time per viz load). Useful for identifying the worst-offending workbooks fleet-wide.
3. **Explain Data** (optional) — right-click a mark to see the contributing fields and whether an index is being used on the Hyper extract.

**Target thresholds:**

| Operation | Acceptable | Investigate |
|---|---|---|
| Initial viz load | < 3 s | > 5 s |
| Filter action | < 1 s | > 2 s |
| Extract refresh (full) | < 10 min | > 30 min |

## Step 2 — Extract optimisation levers (apply in order)

### 2a. Filter the extract at the source

Apply an extract filter to materialise only the rows the workbook needs. A 10 M row table filtered to 2 M rows reduces Hyper I/O by 80 %.

1. In the Data Source tab: Extract → Edit → Filters → Add.
2. Date-range filters (`Last N months`) are the highest-leverage; apply them first.
3. Never use `OR` conditions in extract filters — Hyper cannot push them to source databases efficiently.

### 2b. Aggregate the extract

For summary dashboards that never drill to row level: aggregate the extract to the view's grain in the Extract editor. Reduces row count by orders of magnitude.

Only do this if no workbook sheet needs row-level data — aggregated extracts cannot be disaggregated.

### 2c. Add a Hyper materialised calculation

Tableau Hyper (Tableau 2022.4+) supports materialised calculations: pre-compute expensive fields in the extract rather than at query time. Right-click a calculated field in the Data Source tab → Materialise in Extract.

Best candidates: string parsing, nested LODs, date truncations on high-cardinality fields.

### 2d. Incremental refresh

For append-only sources (event logs, transaction tables): configure incremental refresh on a date or integer key column. Full refreshes on unchanged historical data are pure waste.

Incremental refresh requirements:
- Source must have a reliable, monotonically increasing column (`created_at`, `event_id`).
- Avoid incremental refresh on tables with updates to historical rows — missed updates cause silent data drift.

### 2e. Reduce high-cardinality quick filters

A quick filter with "Show all values" executes a separate query per load to populate the filter list. On a 10 M row extract, a `Customer Name` quick filter with 500 K distinct values can add 5 s to every page load.

Fixes: use "Relevant values" (context filter), a typed search filter, or a parameter instead of a quick filter for high-cardinality dimensions.

### 2f. Minimise marks and marks-per-view

Each rendered mark is a query row that Tableau VizQL must process. Views with > 5 000 marks become slow to render regardless of data volume.

- Replace a scatter plot of 100 K points with a hexbin or aggregated heat map.
- Use `Reference Lines` or `Trend Lines` instead of a mark for summary statistics.
- Replace row-level text tables with aggregated summaries; use drill-through actions to the detail view.

## Step 3 — Relationship and join fixes

If the performance recording shows join time (not query time) as the bottleneck:

| Symptom | Fix |
|---|---|
| Slow cross-database join | Move to a physical table join inside a single data source, or pre-join in Prep |
| Relationship fan-out on many-to-many | Add a level-of-detail aggregate to one side before the relationship |
| Blend re-querying the secondary source per filter | Replace with a relationship if the data model allows |

## Pitfalls

- Tuning without a performance recording — anecdotal "it feels slow" cannot identify which query is the problem.
- Applying materialised calculations to low-cardinality fields — the overhead of materialising outweighs the gain for simple lookups.
- Incremental refresh on a table that has late-arriving or corrected rows — silent data errors are worse than slow refreshes.
- Using a "Full Extract" with no filters on a table with 50 M+ rows and then wondering why the extract is 8 GB.

Attribution

mcorbett51090mcorbett51090
View sourceSee grades on GitHubMore from mcorbett51090 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →