Access provisioned first
An integration system user created by your administrator, granted read access to only the domains the reporting needs, and configured so a session timeout cannot silently kill a scheduled refresh at 6am.
Workday HCM to Power BI, done for you
Extraction from custom reports enabled as web services, effective-dated worker records resolved into a star schema, the supervisory organization hierarchy flattened, and DAX for headcount, turnover, retention, promotions and open requisitions — built by a senior US-based engineer instead of exported to a spreadsheet each month.
Representative dashboard — sample data
Why these projects stall
Workday runs the whole employment lifecycle — the requisition, the hire, every job change, the supervisory org someone sits in, the day they leave — and Power BI has no first-party connector to reach any of it. So every build starts with the same three decisions: which reports or endpoints publish the data, what an integration system user is allowed to read, and how effective-dated records get captured before a retroactive edit quietly rewrites last quarter.
That order matters, because the reporting layer is the easy half. Once a dated worker snapshot lands on a schedule, once the supervisory hierarchy is flattened into levels a slicer can use, and once hires, terminations, promotions and transfers sit in one event table, turnover and retention stop being an argument about arithmetic. Before that, they are four spreadsheets with four different denominators.
What we build from Workday
Buy a block of prepaid Flex hours and, if you're unhappy within the first 4 hours, we refund you in full — no questions asked. Hours are deducted only for work you've reviewed and approved, there's no project minimum, and your banked hours never expire.
What the build covers
Every one sits upstream of the report page, and every one is where an in-house attempt tends to stop.
An integration system user created by your administrator, granted read access to only the domains the reporting needs, and configured so a session timeout cannot silently kill a scheduled refresh at 6am.
A custom report enabled as a web service is the interface. We design it with your HR reporting lead so the fields, prompts and security are deliberate, and so adding a column later is a Workday change rather than a rebuild.
Worker data is effective-dated and retroactive changes rewrite the past. Dated snapshots are captured and retained, so a headcount published in March still reconciles to March when someone reopens the file in November.
A ragged parent-child org tree becomes numbered levels plus a path, so a VP can slice their whole branch, span of control is measurable, and a reorganisation does not break every historical comparison.
Voluntary, involuntary, annualized, 12-month rolling, regretted: each is a different number. We agree the definitions with HR and finance, then write them as explicit DAX measures instead of one ambiguous percentage.
Scheduled or incremental refresh sized to your population, row-level security by supervisory organization, and failures fixed by us out of your banked hours rather than landing on whoever built it.
Through something your tenant publishes, because Power BI Desktop ships no first-party Workday connector and there is no supported way to point it at the application database. The route most builds take is a custom report enabled as a web service — commonly called RaaS, report-as-a-service. Your team builds an advanced report in Workday, enables it as a web service, and Workday exposes that same definition as an HTTPS endpoint that returns JSON, CSV or XML to an authorised caller.
Two points decide whether this is a two-day task or a two-month one. First, credentials: an integration system user is created by your administrator, granted read access to the security domains the report touches and nothing else, and configured so its session does not expire mid-refresh. Nothing about that access depends on us continuing to exist. Second, volume: a report that returns a whole worker population in one call is fine at a few thousand rows and unreliable at fifty thousand, so we design prompts and date windows into the report rather than discovering the timeout in production.
| Route | What it is | When we use it |
|---|---|---|
| Custom report as a web service (RaaS) | An advanced Workday report enabled as a web service and called as a URL returning JSON, CSV or XML | The default for most builds — HR owns the definition, so adding a field is a report change, not a developer ticket |
| Workday Web Services (SOAP) | The versioned WWS operations across the Human Resources, Staffing and Recruiting services | When a documented operation returns effective-dated detail or nested structures no report exposes cleanly |
| Workday REST and query endpoints | The newer REST APIs and query service, authorised with OAuth 2.0 against a registered API client | Where your tenant has them enabled and a query-shaped pull suits the data better than a report definition |
| Scheduled outbound extract | An integration that writes files to secure storage on a schedule instead of answering an inbound call | Large populations, or where security policy will not permit an external system to call the tenant |
| An existing warehouse copy | Workday already landed into SQL Server, Snowflake, Databricks or Microsoft Fabric by an internal pipeline | Always our first question — it is faster to refresh, cheaper to model, and easier to join to finance data |
One Power BI-specific trap is worth naming before it costs you a week. Building request URLs dynamically in Power Query — concatenating a date or an organisation ID into the address — produces a query the Power BI service cannot classify, and it will refuse to refresh it on a schedule even though it worked perfectly in Desktop. The fix is to keep the base address constant and pass everything variable as a relative path and query parameters, which the Power Query Web connector (opens in new tab) supports directly.
By turning two Workday concepts that have no equivalent in a normal source system into ordinary dimensions. The first is effective dating: a worker is not one row that gets updated, but a series of dated rows, and a correction entered today can change what was true two years ago. The second is the supervisory organization — a ragged tree of orgs, each with a manager and a superior org, which is how almost every HR question is actually scoped.
Effective dating is handled by capturing dated snapshots on a fixed cadence and keeping them, rather than by re-deriving history from whatever the tenant says today. That gives you a slowly changing worker dimension: job profile, level, manager, location and organisation as they stood at each point, so a headcount reported in March still ties out in November. The hierarchy is flattened into numbered levels plus a full path, so a filter on a division reaches every org beneath it and span of control becomes a measure rather than a manual count. Both patterns follow Microsoft's star schema modeling guidance (opens in new tab), and the general craft is covered on our star schema guide.
| Workday concept | What it carries | Role in the model |
|---|---|---|
| Worker (effective-dated) | Employees and contingent workers with dated job, manager, location and organisation assignments | Slowly changing worker dimension built from retained dated snapshots |
| Supervisory organization | The org a worker reports into, its manager, and its superior organisation | Hierarchy dimension flattened to numbered levels plus a path for filtering and span of control |
| Job profile and job family | Role definitions, management level, job family grouping and FLSA classification | Role dimension — the grouping behind promotion, level mix and pay-band questions |
| Staffing events | Hires, terminations with reason, promotions, demotions, transfers and leaves, each with an effective date | Event fact table — the single source for turnover, mobility and retention measures |
| Worker snapshot | Active population as of each snapshot date, with FTE and worker type | Periodic snapshot fact — the denominator every rate is divided by |
| Job requisition and position | Open and filled requisitions, hiring manager, opening date, stage and fill date | Recruiting fact behind pipeline, time-to-fill and vacancy reporting |
| Location and cost center | Work location, region, legal entity and the cost center a position is charged to | Conformed dimensions — the keys that let HCM and finance reporting meet |
The detail that causes most rework is worker type. Employees, contingent workers, interns and workers on leave are all in the population, and almost every organisation counts them differently — sometimes differently in two departments of the same company. We settle that in scoping and encode it as a flag on the dimension, so the definition is visible and changeable rather than buried inside a query step nobody opens.
The set below is what HR leadership and their finance partners consistently ask for, and each one embeds a definition someone has to agree with before the number means anything. We write them as documented DAX measures over the star schema and a proper date table, then validate every total against a report your team already runs inside Workday.
| Measure | How it is defined | Why it is written this way |
|---|---|---|
| Headcount | Active workers as of the selected date, with FTE reported alongside the body count | Point-in-time, so a month-end figure never depends on when the refresh happened to run |
| Headcount trend | Month-end headcount over time, split by hires, terminations and net movement | Movement is what leadership acts on — a flat total can hide heavy churn underneath |
| Annualized voluntary turnover | Voluntary terminations in the period over average headcount for that period, scaled to a full year | Annualizing makes a month, a quarter and a year comparable on one axis |
| 12-month rolling turnover | Terminations across the trailing twelve months over average headcount for the same window | Smooths seasonal exits so a trend line reflects direction rather than one heavy month |
| New-hire retention | Share of each hire cohort still active at 90 days, six months and one year | Cohorted by hire date, so a bad hiring quarter stays attached to the quarter that caused it |
| Internal promotion rate | Promotions and internal moves in the period over average headcount, by organisation and job family | Separates real internal mobility from lateral reorganisation, which look identical in a raw event count |
| Requisition pipeline | Open requisitions, days open, candidates by stage, and time from opening to fill | Vacancy sits next to headcount, so a staffing gap and a hiring backlog are read together |
| Span of control | Direct and indirect reports per manager, and depth of the supervisory hierarchy | Falls straight out of the flattened org — the cheapest structural insight in the model |
Turnover by supervisory organization is usually the measure that changes a conversation. Arithmetically it is trivial; organisationally it is uncomfortable, because a company-wide rate that looks acceptable frequently resolves into two or three orgs carrying almost all of it. The discipline that makes it defensible — one date table, conformed dimensions, measures rather than calculated columns — is the same craft described on our Power BI data modeling and DAX page.
Workday ships a genuinely capable reporting layer, and for questions inside the tenant, against Workday's own shape of the data, it is the right tool. The questions that reach us are the ones that cross a boundary: into finance, into the applicant tracking history, or across several years of reorganised supervisory structure where the current tree no longer describes the past.
| What you are trying to do | Reporting inside Workday | Custom Power BI model |
|---|---|---|
| Operational HR lists and audits | Its core strength — live, in context, already secured | Possible, but not a reason to build a model |
| Multi-year trend across reorganisations | Constrained by the current supervisory structure | Retained dated snapshots keep history comparable through a reorg |
| Turnover your way | Fixed to the definitions the report author chose | Each variant an explicit, documented measure you can change |
| Headcount against budget and plan | Plan data usually lives in finance, outside the tenant | Planned positions modelled beside actual headcount as a second fact |
| One pack across HR, finance and operations | Needs viewers to hold Workday access and know where to look | One published report, secured by organisation, in tools they already use |
| Where the logic lives | Inside the vendor's reporting layer | In a model file in your own tenant, which you own outright |
The practical answer is usually both. Keep Workday reporting for running HR operations, and build the model for the numbers that decide headcount plans, retention programmes and where a recruiter's time goes next quarter.
The model is published to your Power BI workspace and refreshed on a schedule that matches how the data actually moves — daily for most HCM reporting, since a hire entered this afternoon rarely needs to be on a screen tonight — within Microsoft's documented data refresh limits (opens in new tab). Where several years of snapshots and events have accumulated, we configure incremental refresh (opens in new tab) so only a recent window is re-pulled each cycle.
Security is not an afterthought on a people dataset. Visibility is handled with row-level security in the Power BI service (opens in new tab), driven from a mapping of viewers to supervisory organizations and evaluated against the flattened hierarchy, so a manager sees their own branch, an HR business partner sees their assigned groups and leadership sees everything. Small-population views are handled deliberately too: where a cell would identify an individual, we suppress or aggregate it rather than publishing a turnover rate calculated over four people.
Prepaid Flex hours that never expire: Starter 20 hours at $125/hr ($2,500), Growth 40 hours at $115/hr ($4,600), Power 80 hours at $100/hr ($8,000), with hourly work from $100/hour on the largest block. A first build covering headcount trend, turnover, retention and the supervisory hierarchy from an existing set of reports usually fits a Starter block. Adding recruiting pipeline, headcount against plan, or a snapshot history that has to be reconstructed rather than collected typically needs Growth, because agreeing definitions across HR and finance takes discussion as well as development.
Most tasks ship within 3–5 business days of scope approval, and you get a scope and hours estimate before anything starts. Our guide to Power BI dashboard development cost covers what moves the number, how prepaid Flex hours work explains the model in full, and custom Power BI dashboard development describes the wider service this build sits inside.
Organisations running Workday HCM with enough history to trend and no dedicated people-analytics engineer — typically the point where someone exports the same three reports every month and leadership has stopped trusting the reconciliation. HR directors, people analytics leads and the finance partners who own the headcount line are the people who usually get in touch, often after a board pack where two turnover figures disagreed.
Pay is deliberately out of scope here. Gross-to-net, deduction categories, overtime and labor cost by cost center are a different model with different sensitivity and a different audience — that work belongs on our Power BI payroll dashboard page, which covers pay registers from any provider. If your HR team uses Paylocity rather than Workday, our Paylocity dashboard page covers the Pay Details API route. Plenty of clients end up with both, sharing one worker dimension and one organisation hierarchy. Agencies placing contract workers are a different problem again: the population is billable, not employed, and Power BI dashboards for staffing agencies covers fill rate, spread and redeployment at that level. Contact is form-only — send your request and we'll reply with a scope estimate.
business days, typical
hours, never expire
own everything
A first HCM build usually fits inside one Flex block, and hours deduct only for work you approve. See Flex pricing →
How it works
Your administrator creates a read-only integration system user and the reports we agree on; we confirm worker-type rules, turnover definitions and how far back usable history goes, then reply with a scope and hours estimate before any work begins.
A senior US-based engineer schedules the extraction, retains dated snapshots, flattens the supervisory hierarchy, builds the star schema and date table, and writes the DAX for headcount, turnover, retention and requisitions — validating totals against reports your team already runs.
Published to your workspace with scheduled or incremental refresh, row-level security so each manager sees only their branch of the organisation, and documentation you keep. We maintain it from your banked hours.
Representative perspective
Our company turnover number looked fine for two years. Split by supervisory org, three teams were carrying almost all of it, and one of them had never appeared in a board pack.HR director, multi-site healthcare organisation
Representative perspective
Our own extract worked in Desktop and failed on the first scheduled refresh. Getting the credentials, the report design and the snapshot history right was most of the value.People analytics lead, professional services firm
Tell us how you define turnover, which reports your team already runs, and what leadership actually asks for each quarter. We'll confirm the extraction route, scope the task, and tell you the hours before anything starts — no project minimums, no obligation.
FAQ
Power BI Desktop ships no first-party Workday connector, so the data has to be published out of the tenant. The usual route is a custom report enabled as a web service, which gives you an HTTPS endpoint returning JSON, CSV or XML. Workday Web Services, the REST and query endpoints, or a scheduled extract into a warehouse are the alternatives we scope against.
It is an advanced custom report your team builds in Workday and then enables as a web service, so the same definition can be called as a URL. It matters because report design becomes the integration contract: the fields, prompts and security on that report decide what the dashboard can show and who is allowed to see it.
Workday stores worker data as effective-dated rows rather than one current record, and retroactive edits rewrite history. We pull dated snapshots on a fixed cadence and keep them, building a slowly changing worker dimension so a headcount reported for last March still reconciles to what the tenant said in March.
Yes. We flatten the supervisory organization hierarchy into levels and a path, then drive row-level security from a mapping of viewers to organizations. A manager sees their own org and everything beneath it, an HR business partner sees their assigned groups, and leadership sees the whole tenant, all from one published report.
No. This build is HCM: headcount, turnover, retention, mobility and requisitions. Gross-to-net pay, deduction categories and labor cost by cost center are a different model with different sensitivity, and they belong on our payroll dashboard page. Many clients end up with both, sharing one worker and one organization dimension.
No. We are an independent US-based Power BI consultancy with no Workday partnership to claim and no prebuilt connector to sell. We build using documented, supported extraction routes under credentials your administrator provisions and owns, and everything we produce is published into your own Power BI workspace.
If what you need is pay rather than people — gross-to-net, overtime, deduction categories, labor cost against budget — the Power BI payroll dashboard page covers that from any payroll provider and is the better starting point. Employers whose system of record is ADP rather than Workday should start from the ADP Power BI dashboard page instead, where the extraction routes and the DataCloud subscription question are quite different. Employers on UKG should read the UKG Pro Power BI dashboard page, where the extract arrives from a Cognos-based BI layer and the time side — punches, schedules, accruals and schedule-versus-actual variance — lives in a second application entirely. For the wider service this build sits inside, read custom Power BI dashboard development. Agencies whose workforce is placed rather than employed should look at Power BI dashboards for staffing agencies instead, where the metrics are fill rate, spread and redeployment. Smaller employers whose people data sits in an SMB HRIS rather than an enterprise HCM tenant should start from the BambooHR Power BI dashboard page instead, where the extraction is an API key and dataset endpoints rather than custom reports published as web services. Institutions running Workday alongside a student system will find the sector view on Power BI for higher education, and the modelling craft underneath all of it is described in data modeling and DAX. Every task is scoped before work begins from your prepaid block of senior-led hours — no project minimums, no change-order surprises, and hours are deducted only for work you approve.
Book a free demo
Tell us the task. We scope it, you approve, and a senior consultant delivers — typically in 3–5 business days. Prepaid hours that never expire.
The fastest way to reach us is the form — tell us the task and we'll reply within one business day.