tableau-expert
Included with Lifetime
$97 forever
Expert-level Tableau Desktop/Server, calculated fields, LOD expressions, dashboards, data blending, and performance optimization
datatableaubivisualizationdashboardslodanalytics
What this skill does
# Tableau Expert
You are an expert in Tableau with deep knowledge of calculated fields, LOD (Level of Detail) expressions, parameters, dashboards, data blending, extracts, and performance optimization. You create interactive, performant dashboards that deliver actionable insights.
## Core Expertise
### Calculated Fields
**Basic Calculations:**
```tableau
// String manipulation
Full Name
UPPER([First Name]) + " " + UPPER([Last Name])
Email Domain
SPLIT([Email], "@", 2)
// Numeric calculations
Profit Margin
[Profit] / [Sales]
Discounted Price
[Price] * (1 - [Discount])
// Date calculations
Days Since Order
DATEDIFF('day', [Order Date], TODAY())
Order Year
YEAR([Order Date])
Order Quarter
"Q" + STR(DATEPART('quarter', [Order Date]))
// Conditional logic
Order Priority
IF [Days Since Order] <= 2 THEN "Urgent"
ELSEIF [Days Since Order] <= 7 THEN "High"
ELSEIF [Days Since Order] <= 14 THEN "Medium"
ELSE "Low"
END
// Case statement
Customer Segment
CASE [Lifetime Value]
WHEN >= 10000 THEN "VIP"
WHEN >= 5000 THEN "High Value"
WHEN >= 1000 THEN "Medium Value"
ELSE "Low Value"
END
// Aggregations
Total Revenue
SUM([Order Amount])
Average Order Value
AVG([Order Amount])
Distinct Customer Count
COUNTD([Customer ID])
```
**Advanced Calculations:**
```tableau
// Window calculations
Running Total
RUNNING_SUM(SUM([Sales]))
Moving Average (7 days)
WINDOW_AVG(SUM([Sales]), -6, 0)
Percent of Total
SUM([Sales]) / TOTAL(SUM([Sales]))
Rank by Sales
RANK_UNIQUE(SUM([Sales]), 'desc')
Previous Period Sales
LOOKUP(SUM([Sales]), -1)
// Quick table calculations
// Right-click measure -> Quick Table Calculation
// - Running Total
// - Difference
// - Percent Difference
// - Percent of Total
// - Rank
// - Percentile
// - Moving Average
// Year over Year Growth
YoY Growth
(SUM([Sales]) - LOOKUP(SUM([Sales]), -12)) / LOOKUP(SUM([Sales]), -12)
// Compound growth rate
CAGR
POWER(
SUM([Current Year Sales]) / SUM([First Year Sales]),
1 / [Years]
) - 1
```
### Level of Detail (LOD) Expressions
**FIXED LOD:**
```tableau
// Customer lifetime value (fixed at customer level)
{ FIXED [Customer ID] : SUM([Order Amount]) }
// First order date per customer
{ FIXED [Customer ID] : MIN([Order Date]) }
// Category-level average (ignore other dimensions)
{ FIXED [Category] : AVG([Sales]) }
// Overall average (ignore all dimensions)
{ FIXED : AVG([Sales]) }
// Cohort analysis
Cohort Month
{ FIXED [Customer ID] : MIN(DATETRUNC('month', [Order Date])) }
// Customer acquisition cost per month
{ FIXED [Acquisition Month] : SUM([Marketing Spend]) / COUNTD([Customer ID]) }
```
**INCLUDE LOD:**
```tableau
// Add dimension to aggregation
{ INCLUDE [Region] : SUM([Sales]) }
// Product sales including subcategory
{ INCLUDE [Sub-Category] : SUM([Sales]) }
// Use case: Show product sales with category total
Product Sales
SUM([Sales])
Category Sales
{ INCLUDE [Category] : SUM([Sales]) }
Percent of Category
[Product Sales] / [Category Sales]
```
**EXCLUDE LOD:**
```tableau
// Remove dimension from aggregation
{ EXCLUDE [Region] : SUM([Sales]) }
// Total sales excluding customer dimension
{ EXCLUDE [Customer ID] : SUM([Sales]) }
// Use case: Compare individual to group
Individual Sales
SUM([Sales])
Group Average (excluding individual)
{ EXCLUDE [Salesperson] : AVG([Sales]) }
Performance vs Group
[Individual Sales] - [Group Average]
```
**Complex LOD Use Cases:**
```tableau
// New vs Returning Customers
Is First Order
{ FIXED [Customer ID] : MIN([Order Date]) } = [Order Date]
New Customers
IF [Is First Order] THEN 1 ELSE 0 END
// Customer lifetime metrics
Orders Per Customer
{ FIXED [Customer ID] : COUNTD([Order ID]) }
Days Since First Order
DATEDIFF('day',
{ FIXED [Customer ID] : MIN([Order Date]) },
[Order Date]
)
// Cohort retention
Months Since First Order
DATEDIFF('month',
{ FIXED [Customer ID] : MIN([Order Date]) },
[Order Date]
)
Cohort Size
{ FIXED [Cohort Month] : COUNTD([Customer ID]) }
Retention Rate
COUNTD([Customer ID]) / [Cohort Size]
// Top N with LOD
Top 10 Products by Revenue
{ FIXED [Product] : SUM([Revenue]) }
Is Top 10
RANK_UNIQUE([Top 10 Products by Revenue]) <= 10
// Percentile calculation
Revenue Percentile
{ FIXED [Customer ID] : SUM([Revenue]) }
Customer Percentile
IF PERCENTILE([Revenue Percentile], 0.9) THEN "Top 10%"
ELSEIF PERCENTILE([Revenue Percentile], 0.75) THEN "Top 25%"
ELSE "Other"
END
```
### Parameters and Dynamic Calculations
**Parameter Creation:**
```tableau
// Metric selector parameter
Metric Selector (String)
Values: Revenue, Profit, Quantity, Orders
// Dynamic measure based on parameter
Selected Metric
CASE [Metric Selector]
WHEN "Revenue" THEN SUM([Sales])
WHEN "Profit" THEN SUM([Profit])
WHEN "Quantity" THEN SUM([Quantity])
WHEN "Orders" THEN COUNTD([Order ID])
END
// Date range parameter
Number of Days (Integer)
Current value: 30
Range: 7 to 365
// Filter with parameter
Order Date Filter
[Order Date] >= DATEADD('day', -[Number of Days], TODAY())
// Top N parameter
Top N (Integer)
Current value: 10
Range: 5 to 50
// Top N filter
Top N Products
RANK_UNIQUE(SUM([Sales]), 'desc') <= [Top N]
// Timeframe parameter
Time Dimension (String)
Values: Day, Week, Month, Quarter, Year
// Dynamic timeframe
Dynamic Time
CASE [Time Dimension]
WHEN "Day" THEN STR([Order Date])
WHEN "Week" THEN "Week " + STR(DATEPART('week', [Order Date]))
WHEN "Month" THEN DATENAME('month', [Order Date]) + " " + STR(YEAR([Order Date]))
WHEN "Quarter" THEN "Q" + STR(DATEPART('quarter', [Order Date])) + " " + STR(YEAR([Order Date]))
WHEN "Year" THEN STR(YEAR([Order Date]))
END
```
**Advanced Parameter Usage:**
```tableau
// Comparison period parameter
Compare To (String)
Values: Previous Period, Previous Year, Custom
// Comparison calculation
Previous Period Sales
CASE [Compare To]
WHEN "Previous Period" THEN
LOOKUP(SUM([Sales]), -1)
WHEN "Previous Year" THEN
LOOKUP(SUM([Sales]), -12)
WHEN "Custom" THEN
// Use another parameter for custom offset
LOOKUP(SUM([Sales]), -[Custom Offset])
END
Percent Change
(SUM([Sales]) - [Previous Period Sales]) / [Previous Period Sales]
// Threshold parameter
Sales Threshold (Float)
Current value: 1000
Range: 0 to 10000
// Color coding with parameter
Sales Performance
IF SUM([Sales]) >= [Sales Threshold] THEN "Above Target"
ELSE "Below Target"
END
// Multiple metric comparison
Metric 1 (String)
Metric 2 (String)
Metric 1 Value
CASE [Metric 1]
WHEN "Revenue" THEN SUM([Sales])
WHEN "Profit" THEN SUM([Profit])
WHEN "Orders" THEN COUNTD([Order ID])
END
Metric 2 Value
CASE [Metric 2]
WHEN "Revenue" THEN SUM([Sales])
WHEN "Profit" THEN SUM([Profit])
WHEN "Orders" THEN COUNTD([Order ID])
END
```
### Data Blending and Relationships
**Data Relationships (Tableau 2020.2+):**
```tableau
// Physical layer: Tables joined
Sales (LEFT JOIN) Returns ON Sales.Order ID = Returns.Order ID
// Logical layer: Relationships
Orders -> Order Items (Order ID)
Orders -> Customers (Customer ID)
Products -> Order Items (Product ID)
// Multi-fact analysis with relationships
// Automatically handles different grain levels
Revenue from Orders
SUM([Orders].[Amount])
Return Rate from Returns
COUNTD([Returns].[Return ID]) / COUNTD([Orders].[Order ID])
```
**Data Blending:**
```tableau
// Primary data source: Sales
// Secondary data source: Targets
// Linked fields (blend on):
- Date (linked)
- Region (linked)
// Blended calculation
Sales vs Target
SUM([Sales].[Revenue]) - SUM([Targets].[Target Amount])
Target Achievement
SUM([Sales].[Revenue]) / SUM([Targets].[Target Amount])
// Handling missing data in blend
Revenue with Default
IFNULL(SUM([Sales].[Revenue]), 0)
```
**Cross-Database Joins:**
```tableau
// Join across different databases
PostgreSQL: Orders
MySQL: Customer Attributes
Snowflake: Product Catalog
// Join conditions
Orders.customer_id = Customer Attributes.id
Orders.produRelated in data
monte-carlo-push-ingestion
IncludedExpert guide for pushing metadata, lineage, and query logs to Monte Carlo from any data warehouse.
datascripts
php-database
IncludedPHP database mastery - PDO, Eloquent, Doctrine, query optimization, and migrations
datascripts
monte-carlo-validation-notebook
IncludedGenerates SQL validation notebooks for dbt PR changes with before/after comparison queries.
datascripts
monte-carlo-monitor-creation
IncludedGuides creation of Monte Carlo monitors via MCP tools, producing monitors-as-code YAML for CI/CD deployment.
data
monte-carlo-prevent
IncludedSurfaces Monte Carlo data observability context (table health, alerts, lineage, blast radius) before SQL/dbt edits.
data
data-mesh-expert
IncludedExpert-level data mesh architecture, domain-oriented ownership, data products, federated governance, and self-serve platforms
data