# Build Real-Time Analytics  Dashboards  Using Workday API

Overview:

This guide explores how to build real‑time analytics dashboards by connecting Workday directly to visualization tools using the Report‑as‑a‑Service (RaaS) API. By bypassing exports to external cloud systems such as AWS or Azure, this approach reduces latency, eliminates data duplication, and enables faster, more reliable insights.

Why Direct API Integration Matters

Traditional data and analytics methods often involve exporting reports to cloud storage or databases before visualization. This adds complexity, delays, and risks of data misalignment. By using Workday's RaaS API, you can:

Streamline data flow from Workday to Analytics tools

Eliminate redundant exports and manual refreshes

Enable near real-time dashboards for HR, Payroll, and Finance

Many organizations still export data from ERP systems into AWS, Azure, Prism, or databases before building dashboards, which leads to unnecessary duplication, delays, and maintenance overhead. A more efficient approach is to connect Power BI directly to Workday using RaaS (Report-as-a-Service), providing near-real-time analytics without additional infrastructure. In this guide, I’ll walk you through how to:

A step-by-step guide to connecting Workday reports directly to Power BI using RaaS, eliminating manual exports and reducing data duplication.

* Build a Workday report optimized for API extraction
    
* Enable RaaS (JSON/XML)
    
* Connect Power BI directly to Workday
    
* Transform the data
    
* Build a dashboard
    
* Schedule refreshes
    

**Build a Workday Report for RaaS:**  
Use an Advanced Report (Matrix/Composite won’t work). Enable the following:

* Enable As Web Service
    
* Web Service Format: JSON
    
* Share with an Integration Security Group
    

**Design tips:**

* Keep it flat (one row per worker)
    
* Use calculated fields for derived metrics
    
* Avoid unnecessary multi-instance fields
    

**Get the RaaS URL:**  
Workday generates a REST endpoint:  
`https://<tenant>.`[`workday.com/ccx/service/customreport2/<tenant>/<folder>/<report>?format=json`](http://workday.com/ccx/service/customreport2/%3Ctenant%3E/%3Cfolder%3E/%3Creport%3E?format=json)

Create unique ISU and ISSG for all reports for analytics applications (Power BI/Tableau).

**Example:**  
[`https://wd5.myworkday.com/ccx/service/customreport2/ACME/HR/Headcount?format=json`](https://wd5.myworkday.com/ccx/service/customreport2/ACME/HR/Headcount?format=json)

Add prompts if needed:  
`...?format=json&StartDate=2024-01-01&SupervisoryOrg=12345`

**Authenticate with Workday:**  
Power BI uses Basic Authentication:

* Workday username
    
* Workday password
    
* User must have access to the report
    

Use a service account for scheduled refresh.

**Connect Power BI to Workday RaaS:**  
In Power BI Desktop:

* Get Data → Web
    
* Choose Advanced
    
* Paste the RaaS URL
    
* Add header: Accept: application/json
    
* Authenticate using Basic Auth
    

The default Workday RaaS API response always exposes the dataset under the root node **“Report\_Entry.”** This name cannot be modified within Workday, but you *can* rename it during Power BI data transformation to something more meaningful—such as **Employee\_Data**, **Headcount\_Facts**, or any business-friendly label.

Once the data is loaded, Power BI Desktop allows you to perform full **data modeling** across multiple Workday RaaS endpoints or external sources. You can shape, clean, relate, and standardize these datasets to create a **designed, curated semantic model** that your dashboards can consume. This includes:

* Renaming and restructuring the RaaS output
    
* Combining multiple Workday reports into a unified model
    
* Creating relationships between datasets
    
* Building calculated columns and DAX measures
    
* Designing a final, governed reporting layer for dashboards
    

This approach lets you transform raw Workday API data into a clean, analytics-ready model that supports scalable, high‑performance dashboards.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1769287535917/b8243f77-1846-42a5-bf8d-39a6c44d100a.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1769287341994/3307b9fe-dfdc-4c5b-ae5b-9d02548a2161.png align="center")

Power BI retrieves the JSON payload.

**Transform JSON in Power Query:**  
Workday JSON looks like:

```plaintext
{
  "Report_Entry": [
    {
      "Worker_ID": "123",
      "Name": "John Doe",
      "Location": "Dallas",
      "Status": "Active"
    }
  ]
}
```

**Power Query steps:**

* Convert Report\_Entry list → table
    
* Expand columns
    
* Set data types
    

**Sample M Code:**

```plaintext
let
    Source = Json.Document(
        Web.Contents(
            "https://wd5.myworkday.com/ccx/service/customreport2/ACME/HR/Headcount?format=json",
            [Headers = [Accept="application/json"]]
        )
    ),
    ReportEntries = Source[Report_Entry],
    ToTable = Table.FromList(ReportEntries, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    Expanded = Table.ExpandRecordColumn(
        ToTable,
        "Column1",
        {"Worker_ID", "Name", "Location", "Status"},
        {"Worker_ID", "Name", "Location", "Status"}
    )
in
    Expanded
```

**Build the Dashboard:**

Create visuals: Headcount, Payroll , Attrition, Location trends, Employee Rating , Recruiting

Add filters: Org, Location, Status

Use DAX for metrics: Active Headcount, Avg Tenure ,etc..

**Once design is complete, publish & Schedule Refresh:**  
In Power BI Service:

* Publish the report
    
* Configure credentials
    
* Publish to Power BI Service
    
* Set refresh frequency (e.g., daily)
    

**Conclusion:**  
This direct RaaS to Power BI method removes the need for manual exports, AWS/Azure pipelines, and duplicate data models. It's fast, secure, and ideal for operational HR dashboards. Additionally, Workday RaaS can connect to other visualization tools like Tableau and MicroStrategy, among others.
