You open a reporting request from your CFO:
“I need headcount by department, broken down by location and job level, with month-over-month trends and turnover rates.”
You stare at the request. Should you build an Advanced Report? A Matrix Report? A Composite Report? Or maybe three separate reports?
This is where most Workday professionals get stuck. They know how to build reports technically, but they don’t know which report type to use when. So they default to Advanced Reports for everything, then spend hours manipulating data in Excel to get the view they actually need.
Here’s the truth: choosing the wrong report type doesn’t just waste time. It creates slow, unmaintainable reports that confuse users and break during updates.
This guide teaches you how to choose the right report type for every scenario. You’ll learn what each report type does, when to use it, and how to build it correctly with real-world examples.
The Three Report Types: What They Actually Do
Advanced Reports: The List Builder
What It Is:
An Advanced Report displays data from a single business object as a list of rows. Think of it as a detailed table where each row represents one record.
Structure:
- One row per record (employee, position, transaction, event)
- Multiple columns showing different fields
- Can include filters, prompts, sorting, and grouping
- Can include subtotals and aggregations
Visual Example:
| Employee Name | Hire Date | Department | Location | Job Title | Annual Salary |
|---|---|---|---|---|---|
| Sarah Johnson | 2022-03-15 | Engineering | San Francisco | Senior Engineer | $125,000 |
| Mike Chen | 2023-01-10 | Sales | New York | Account Executive | $95,000 |
| Emily Davis | 2021-06-20 | HR | Chicago | HR Business Partner | $105,000 |
Best For:
- Employee lists (active headcount, new hires, terminations)
- Transaction logs (compensation changes, job changes, time off)
- Detailed records for audits, integrations, or EIB loads
- Reports that answer: “Show me all [records] where [criteria]”
Not Good For:
- Pivoting data across multiple dimensions
- Showing trends over time periods
- Combining data from multiple business objects
Matrix Reports: The Pivot Table
What It Is:
A Matrix Report summarizes numeric data across rows and columns. It’s Workday’s version of an Excel pivot table or crosstab.
Structure:
- Rows define one dimension (e.g., Department)
- Columns define another dimension (e.g., Location or Time Period)
- Cells show aggregated metrics (count, sum, average)
- Interactive drilling (click to see detail records)
Visual Example:
Headcount by Department and Location
| Department | San Francisco | New York | Chicago | Total |
|---|---|---|---|---|
| Engineering | 45 | 12 | 8 | 65 |
| Sales | 10 | 38 | 15 | 63 |
| HR | 5 | 8 | 12 | 25 |
| Total | 60 | 58 | 35 | 153 |
Best For:
- Summarizing data across two dimensions
- Headcount analysis (by org, location, job level)
- Trend analysis over time (monthly, quarterly, yearly)
- Financial rollups (cost by department and account)
- Reports that answer: “Show me [metric] broken down by [dimension 1] and [dimension 2]”
Not Good For:
- Showing raw transaction details
- Combining multiple unrelated metrics
- Reports with more than two grouping dimensions
Composite Reports: The Dashboard Builder
What It Is:
A Composite Report combines multiple Matrix Reports into a single unified report. It’s how you build executive dashboards and scorecards.
Structure:
- Multiple sub-reports (each is a Matrix Report)
- Each sub-report can have different data sources
- Aligned by common dimension (department, location, time period)
- Metrics calculated across sub-reports at the composite level
Visual Example:
HR Scorecard by Department
Sub-Report 1: Headcount Trend
| Department | Jan 2025 | Feb 2025 | Mar 2025 |
|---|---|---|---|
| Engineering | 60 | 63 | 65 |
| Sales | 58 | 61 | 63 |
Sub-Report 2: New Hires
| Department | Jan 2025 | Feb 2025 | Mar 2025 |
|---|---|---|---|
| Engineering | 5 | 4 | 3 |
| Sales | 3 | 5 | 4 |
Sub-Report 3: Terminations
| Department | Jan 2025 | Feb 2025 | Mar 2025 |
|---|---|---|---|
| Engineering | 2 | 1 | 1 |
| Sales | 0 | 2 | 2 |
Composite Calculation: Turnover Rate
| Department | Jan 2025 | Feb 2025 | Mar 2025 |
|---|---|---|---|
| Engineering | 3.3% | 1.6% | 1.5% |
| Sales | 0% | 3.3% | 3.2% |
Best For:
- Executive dashboards (HR scorecard, Finance KPIs)
- Multi-metric analysis aligned by common dimension
- Combining HCM + Finance data
- Reports that answer: “Show me 4-5 related metrics side-by-side”
Not Good For:
- Simple lists or single-metric analysis
- Ad-hoc analysis (too complex for quick requests)
- Reports without a common aligning dimension
Decision Framework: Which Report Type Should I Use?
Use this flowchart to decide:
Question 1: Do I need multiple related metrics from different data sources?
- Yes → Use Composite Report
- No → Go to Question 2
Question 2: Do I need to aggregate/summarize data across dimensions?
- Yes → Use Matrix Report
- No → Go to Question 3
Question 3: Do I need a detailed list of records?
- Yes → Use Advanced Report
Real-World Scenario Examples
Scenario 1: “Show me all employees who were hired in the last 90 days”
Report Type: Advanced Report
Why: You need a list of individual employee records. No aggregation needed.
Data Source: Workers
Columns: Employee Name, Employee ID, Hire Date, Department, Manager, Location
Filter: Hire Date is within the last 90 days
Scenario 2: “Show me headcount by department and location”
Report Type: Matrix Report
Why: You need to aggregate (count employees) across two dimensions (department and location).
Data Source: Workers
Rows: Department (grouping)
Columns: Location (grouping)
Measure: Count of Workers
Scenario 3: “Show me monthly headcount, new hires, terminations, and turnover rate by department”
Report Type: Composite Report
Why: You need multiple related metrics (4 different calculations) aligned by common dimensions (department and month).
Sub-Report 1 (Matrix): Headcount by Department and Month
Sub-Report 2 (Matrix): New Hires by Department and Month
Sub-Report 3 (Matrix): Terminations by Department and Month
Composite Calculation: Turnover Rate = (Terminations ÷ Average Headcount) × 100
Building Your First Advanced Report
Let’s build a practical Advanced Report: New Hires in Last 90 Days
Step 1: Create the Report
- Search for Create Custom Report
- Report Type: Advanced
- Data Source: Workers
- Report Name: New Hires – Last 90 Days
- Click OK
Step 2: Add Columns
Click Add in the Columns section to add fields:
Column 1: Worker (displays employee name)
Column 2: Employee ID
Column 3: Hire Date
Column 4: Primary Position
Column 5: Worker’s Manager (manager name)
Column 6: Location
Column 7: Cost Center
Column 8: Time Type (Full-Time, Part-Time)
Pro Tip: Rename column labels for clarity. “Worker” → “Employee Name”, “Worker’s Manager” → “Manager”
Step 3: Add Filter
Click Filter tab.
Filter Condition: Hire Date is within the last 90 days
Configuration:
- Field: Hire Date
- Operator: Is Within
- Value: Last 90 days (Workday calculates dynamically)
Alternative: Use Prompt instead of hard-coded filter to let users choose the date range at runtime.
Step 4: Add Sorting
Click Sort tab.
Primary Sort: Hire Date (descending – newest hires first)
Secondary Sort: Worker (ascending – alphabetical within same hire date)
Step 5: Add Grouping (Optional)
Click Sort tab, scroll to Grouping.
Group By: Department
This groups all new hires by their department, with subtotals showing count per department.
Enable: Summarize Detail Rows (checkbox)
Result: Report shows:
- Engineering: 12 new hires
- Sarah Johnson – 2025-03-15
- Mike Chen – 2025-03-10
- …
- Sales: 8 new hires
- Emily Davis – 2025-03-20
- …
Step 6: Test and Share
Click OK to save and run the report.
Validate:
- Do all employees shown have hire dates within last 90 days?
- Are columns displaying correctly?
- Is sorting working as expected?
Share the Report:
- Click Share icon
- Select users or security groups
- Grant View permission
- Save
Building Your First Matrix Report
Let’s build: Headcount by Department and Location
Step 1: Create the Report
- Search for Create Custom Report
- Report Type: Matrix
- Data Source: Workers
- Report Name: Headcount by Department and Location
- Click OK
Step 2: Configure Rows
Rows Axis: Department (Supervisory Organization)
This defines what appears down the left side of your matrix.
Row Field: Organization > Name (displays department names)
Sort: Ascending (alphabetical order)
Step 3: Configure Columns
Columns Axis: Location
This defines what appears across the top of your matrix.
Column Field: Location > Name (displays location names like “San Francisco”, “New York”)
Sort: Ascending (alphabetical order)
Step 4: Configure Measure
Measure: What you’re counting or summing in each cell.
Metric: Count of Workers
Aggregation Method: Count (default for counting records)
Alternative measures:
- Sum of Annual Salary (for compensation analysis)
- Average of Tenure (for tenure analysis)
Step 5: Add Filter (Optional)
Click Filter tab.
Filter: Worker Status = Active
This excludes terminated employees from the headcount.
Step 6: Enable Drilling
Drilling lets users click a cell to see the detail records.
Configuration: Enabled by default in Matrix Reports
How It Works:
User clicks cell showing “45 employees in Engineering – San Francisco”
→ Workday displays list of those 45 employees with details
Step 7: Add Prompts (Optional)
Prompts let users filter the report at runtime.
Add Prompt: As of Date
Use Case: Users can run the report “as of December 31, 2024” to see historical headcount.
Configuration:
- Click Prompts tab
- Add As of Date prompt
- Default value: Today (report defaults to current headcount)
- Users can override to see historical data
Step 8: Test and Visualize
Click OK to save and run.
Validate:
- Do row totals match expected headcount per department?
- Do column totals match expected headcount per location?
- Does grand total match total active headcount?
Add Chart Visualization:
- Click Add Chart
- Chart Type: Stacked Bar Chart
- X-Axis: Department
- Y-Axis: Headcount
- Stack By: Location (different colors for each location)
Result: Visual chart showing headcount distribution across departments and locations.
Building Your First Composite Report
Let’s build: HR Monthly Scorecard (Headcount, Hires, Terms, Turnover)
Step 1: Build the Matrix Sub-Reports First
You need to create each Matrix Report separately before combining them.
Sub-Report 1: Monthly Headcount by Department
- Create Matrix Report
- Data Source: Workers (Snapshot-based for historical data)
- Rows: Department
- Columns: Month (from Period Reporting Calendar)
- Measure: Count of Workers
- Filter: Worker Status = Active (at snapshot date)
- Save As: Headcount by Department – Monthly
Sub-Report 2: New Hires by Department and Month
- Create Matrix Report
- Data Source: Hire Employee Event
- Rows: Position > Organization (Department)
- Columns: Event Date > Month
- Measure: Count of Events
- Save As: New Hires by Department – Monthly
Sub-Report 3: Terminations by Department and Month
- Create Matrix Report
- Data Source: Terminate Employee Event
- Rows: Position > Organization (Department)
- Columns: Event Date > Month
- Measure: Count of Events
- Save As: Terminations by Department – Monthly
Step 2: Create the Composite Report
- Search for Create Custom Report
- Report Type: Composite
- Report Name: HR Monthly Scorecard
- Click OK
Step 3: Add Sub-Reports
Click Add Sub-Report for each Matrix Report you created.
Sub-Report 1: Headcount by Department – Monthly
Sub-Report 2: New Hires by Department – Monthly
Sub-Report 3: Terminations by Department – Monthly
Step 4: Align Sub-Reports
Alignment ensures data from different sub-reports lines up correctly.
Align By:
- Rows: Department (common dimension across all sub-reports)
- Columns: Month (common time dimension)
Result: All three metrics display side-by-side for each department and month.
Step 5: Add Composite Calculations
Composite Calculations perform math across sub-reports.
Calculation: Turnover Rate
Formula: (Terminations ÷ Average Headcount) × 100
Configuration:
- Click Add Calculation
- Calculation Name: Turnover Rate
- Formula Type: Custom
- Formula:text
(Sub-Report[Terminations].Measure / ((Sub-Report[Headcount].Measure + Sub-Report[Headcount].Measure.PriorPeriod) / 2)) * 100
What This Does:
- Divides terminations by average headcount (current month + prior month ÷ 2)
- Multiplies by 100 to get percentage
- Displays as new row in the composite report
Calculation: Net Headcount Change
Formula: Hires – Terminations
Configuration:
textSub-Report[New Hires].Measure - Sub-Report[Terminations].Measure
Step 6: Format the Report
Add Section Headers:
- Section 1: Headcount Metrics
- Section 2: Movement Metrics
- Section 3: Turnover Analysis
Conditional Formatting:
- Turnover Rate > 5%: Red (concerning)
- Turnover Rate 3-5%: Yellow (monitor)
- Turnover Rate < 3%: Green (healthy)
Number Formatting:
- Headcount: Whole numbers (no decimals)
- Turnover Rate: One decimal place with % symbol (e.g., 3.2%)
Step 7: Test and Validate
Run the composite report.
Validation Checks:
- Do headcount numbers match your HRIS records?
- Do new hires + terminations align with HR transaction logs?
- Does turnover calculation make sense? (formula working correctly?)
- Are all departments showing data? (check for alignment issues)
Common Issues:
- Misaligned departments: Sub-reports use different organization hierarchies. Standardize to Supervisory Organizations.
- Missing time periods: One sub-report has data for January, another doesn’t. Add zero-value handling.
Advanced Techniques: Calculated Fields
Calculated Fields let you create custom formulas and logic within reports.
When to Use Calculated Fields
Scenario 1: Custom Tenure Calculation
Need: Show employee tenure in “Years.Months” format (e.g., 3.5 years = 3 years, 6 months)
Advanced Report Column: Tenure (Calculated Field)
Formula:
textDATEDIFF(Hire Date, Today, "years") + "." + MOD(DATEDIFF(Hire Date, Today, "months"), 12)
Result: Employee hired March 1, 2022 shows “3.9” (3 years, 9 months as of Dec 2025)
Scenario 2: Compensation Ratio (Compa-Ratio)
Need: Compare employee salary to midpoint of their pay grade
Matrix Report Measure: Compa-Ratio (Calculated Field)
Formula:
text(Annual Salary / Compensation Grade Midpoint) * 100
Result: Employee earning $90K in grade with $100K midpoint shows 90% (below midpoint)
Scenario 3: Conditional Text Labels
Need: Tag employees as “New Hire”, “Tenured”, or “Long-Term” based on tenure
Advanced Report Column: Tenure Category (Calculated Field)
Formula:
textIF(Tenure < 1, "New Hire",
IF(Tenure >= 1 AND Tenure < 5, "Tenured",
"Long-Term"))
Result:
- Employee with 6 months tenure: “New Hire”
- Employee with 3 years tenure: “Tenured”
- Employee with 8 years tenure: “Long-Term”
Creating a Calculated Field
- From your Custom Report editor, click Columns tab
- Click Add > Calculated Field
- Field Name: Tenure Category
- Field Type: Text (or Number, Date, depending on formula output)
- Formula: Enter your formula using Workday formula syntax
- Available Functions:
- DATEDIFF (date arithmetic)
- IF/THEN/ELSE (conditional logic)
- SUM, AVG, COUNT (aggregations – Matrix only)
- CONCAT (text concatenation)
- ROUND, CEILING, FLOOR (number formatting)
- Click Validate to check formula syntax
- Click OK to save
Report Performance Optimization
Why Report Performance Matters
Slow reports frustrate users, time out during scheduled runs, and consume system resources.
Performance Best Practices
1. Filter Early, Filter Often
Bad: Pull all 50,000 workers, then filter in Excel
Good: Filter to active workers in last 6 months (reduces dataset to 2,000 records)
How:
- Add Worker Status = Active filter
- Add date range filters (Hire Date, As of Date)
- Use Prompts to let users narrow scope
2. Limit Columns in Advanced Reports
Bad: Include 40 fields “just in case”
Good: Include only fields users actually need (10-15 columns max)
Why: Each column adds processing time and data retrieval overhead.
3. Use Summarize Detail Rows in Advanced Reports
Scenario: You need totals by department, not every individual employee.
Solution: Enable Summarize Detail Rows in Sort tab
Result: Report aggregates data automatically (like a Matrix), runs faster than full detail list.
4. Avoid Cross-Business Object Relationships When Possible
Bad: Advanced Report pulling from Workers + Positions + Compensation + Benefits (4 objects)
Good: Use Matrix Report with single business object, or Composite to separate concerns
Why: Cross-object joins slow down queries significantly.
5. Schedule Large Reports to Run Off-Hours
Scenario: Monthly headcount report with 3 years of historical data (slow)
Solution:
- Navigate to Edit Custom Report
- Configure Schedule
- Run at 2:00 AM when system load is low
- Deliver via email or save to shared folder
6. Use Data Sources Wisely
For Historical Trending: Use Snapshot-based Data Sources (Workers – Snapshot) instead of live Workers object
Why: Snapshots are pre-aggregated and optimized for time-series analysis.
Common Mistakes and How to Avoid Them
Mistake 1: Using Advanced Report When Matrix Is Better
Scenario: Request is “Show me headcount by department”
What People Do: Build Advanced Report listing all employees, export to Excel, create pivot table
What They Should Do: Build Matrix Report with Department as Row, Count of Workers as Measure
Impact: 10 minutes in Excel becomes 30 seconds in Workday.
Mistake 2: Too Many Calculated Fields in One Report
Problem: Report has 15 calculated fields with nested IF statements and cross-field references.
Impact: Report takes 5 minutes to run, times out in production.
Solution:
- Move complex calculations to Business Object Calculated Fields (reusable across reports)
- Simplify formulas (break complex logic into multiple simpler fields)
- Use Composite Reports to separate calculations across sub-reports
Mistake 3: Not Sharing Reports with Appropriate Security
Problem: You built a great report, but users can’t find it or don’t have permission to run it.
Solution:
- Share report with Security Groups (not individual users)
- Grant appropriate permissions:
- View: Users can run and view results
- Modify: Users can edit the report definition (usually admins only)
- Add report to relevant Dashboard or Report Category for discoverability
Mistake 4: Hard-Coding Filters Instead of Using Prompts
Problem: Report filters to “Hire Date between Jan 1, 2025 and March 31, 2025” (hard-coded)
Impact: Report is useful for Q1 2025 only. Next quarter, you have to edit and update the report.
Solution: Use Prompts
- Add Start Date prompt
- Add End Date prompt
- Users can run report for any date range without editing definition
Mistake 5: No Testing with Large Data Sets
Problem: Report works great in test tenant with 100 employees. In production with 50,000 employees, it times out.
Solution:
- Test in Sandbox with production-like data volumes
- Run performance checks before deploying
- Add filters to limit data scope if needed
Real-World Report Examples
Example 1: Compensation Analysis Report (Advanced)
Business Need: HR needs list of all employees with compensation below market midpoint for their pay grade.
Report Type: Advanced Report
Data Source: Workers
Columns:
- Employee Name
- Employee ID
- Job Profile
- Compensation Grade
- Annual Salary
- Compensation Grade Midpoint (reference field)
- Compa-Ratio (calculated: Salary ÷ Midpoint × 100)
- Variance from Midpoint (calculated: Salary – Midpoint)
Filter:
- Worker Status = Active
- Compa-Ratio < 90% (below market)
Sorting: Compa-Ratio ascending (lowest paid first)
Use Case: Annual compensation review to identify underpaid employees.
Example 2: Termination Trend Analysis (Matrix)
Business Need: Leadership wants to see termination trends over the past 12 months by department.
Report Type: Matrix Report
Data Source: Terminate Employee Event
Rows: Organization (Department)
Columns: Event Date > Month
Measure: Count of Terminations
Filter: Event Date is within the last 12 months
Chart: Line chart showing termination trend by department
Use Case: Monthly leadership review to identify retention issues.
Example 3: Executive HR Dashboard (Composite)
Business Need: CEO wants single-page HR scorecard showing headcount, hiring, turnover, and diversity metrics.
Report Type: Composite Report
Sub-Reports:
1. Headcount Trend (Matrix)
- Rows: Time Period (Month)
- Measure: Count of Active Workers
2. Hiring by Source (Matrix)
- Rows: Recruiting Source
- Measure: Count of Hires
3. Turnover Rate (Matrix)
- Rows: Department
- Columns: Month
- Measure: Termination Count
- Composite Calculation: Turnover % = (Terms ÷ Avg Headcount) × 100
4. Diversity Metrics (Matrix)
- Rows: Gender
- Columns: Job Level
- Measure: Count of Workers
Alignment: By Time Period (Month)
Use Case: Monthly executive briefing, CEO board presentation.
Your Report Type Cheat Sheet
| Question | Report Type | Example |
|---|---|---|
| Need a list of individual records? | Advanced | “Show me all new hires in Q1” |
| Need to aggregate across 1-2 dimensions? | Matrix | “Headcount by dept and location” |
| Need to combine multiple metrics? | Composite | “HR scorecard: headcount, hires, terms, turnover” |
| Need detailed transaction history? | Advanced | “All compensation changes in 2024” |
| Need trend analysis over time? | Matrix | “Monthly hiring trend by department” |
| Need pivot table / crosstab? | Matrix | “Average salary by job level and location” |
| Need executive dashboard with 4-5 KPIs? | Composite | “Finance scorecard: budget, actuals, variance, forecast” |
| Need to export for integration/EIB? | Advanced | “All active workers with full demographic data” |
| Need drillable interactive analysis? | Matrix | “Headcount by org (click to see employees)” |
What You’ve Learned
You now understand:
✅ The three core Workday report types and when to use each
✅ How to build Advanced Reports for detailed lists and transaction logs
✅ How to build Matrix Reports for aggregations, pivots, and trends
✅ How to build Composite Reports for multi-metric dashboards
✅ How to use Calculated Fields for custom formulas and logic
✅ Performance optimization techniques to keep reports fast
✅ Common mistakes to avoid and best practices to follow
The difference between a junior and senior Workday professional isn’t knowing how to build reports—it’s knowing which report type to build for each business need.
Choose wisely. Build efficiently. Deliver insights, not just data.