Skip to main content
Administrator Guide
Last Updated: 2026-08-07
Query Workday Data Using Live Data Query

Query Workday Data Using Live Data Query

After you set up Live Data Query, you can query data in the Data Cloud Catalog using these sample queries. For more information about the catalog and column types, see Data Cloud Catalog.

Running the Queries

These sample queries access Workday data. Execute them through the driver connector. All queries in this section use
workday_core.public
as the catalog and schema. Your environment may differ. Always verify your catalog and schema before running data queries:
SHOW CATALOGS SHOW SCHEMAS IN workday_core SHOW TABLES IN workday_core.public
Replace
workday_core.public
in the sample queries with your actual catalog/schema, if different.
Visible tables and columns depend on the security domains granted to your ISU or user-as-self connection.

Query Patterns

Join core tables to reference tables
The most common pattern is joining a core table to a reference table on a foreign key, which turns a stored ID into a readable value. A single foreign key (FK) joins on one column. Without a join, a column like
marital_status
returns the raw ID it stores. When you join it to the
marital_status
reference table, you get a real value such as Married.
Work with array columns
When you query the array column
worker.languages
directly, you get a list of numeric IDs rather than readable values. SQL has two ways to make the array usable:
  • cardinality(arr)
    returns how many elements the array holds.
  • UNNEST(arr)
    expands the array into one row per element, so you can join each element to its reference table.
Aggregate and filter
Standard SQL filters and aggregates apply to catalog columns. Use catalog column names and data types—for example, filter active workers with
currently_active = true
, or compute tenure from
hire_date
using
date_diff
and
GROUP BY
.

Sample Queries

Count all workers
SELECT COUNT(*) AS total_workers FROM workday_core.public.worker
List active workers with their job titles
SELECT w.id, w.full_name, w.employee_type, jp.job_title FROM workday_core.public.worker w JOIN workday_core.public.job_profile jp ON w.job_profile_id = jp.job_profile_id WHERE w.active = TRUE LIMIT 50
Workers by management level
SELECT management_level, COUNT(*) AS headcount FROM workday_core.public.worker WHERE active = TRUE GROUP BY management_level ORDER BY headcount DESC
Workers hired in the last 90 days
SELECT id, full_name, hire_date, business_title FROM workday_core.public.worker WHERE hire_date >= CURRENT_DATE - INTERVAL '90' DAY ORDER BY hire_date DESC;
Join worker to marital_status
SELECT w.display_id AS worker_name, m.display_id AS worker_marital_status FROM workday_core.public.worker AS w JOIN workday_core.public.marital_status m ON w.marital_status = m.id LIMIT 10;
Count languages per worker
SELECT display_id AS worker, cardinality(languages) AS language_count FROM workday_core.public.worker WHERE cardinality(languages) > 0 LIMIT 10;
Expand worker languages with UNNEST
SELECT w.display_id AS worker, lang.display_id AS language FROM workday_core.public.worker AS w CROSS JOIN UNNEST(w.languages) AS t (language_id) JOIN workday_core.public.language AS lang ON lang.id = t.language_id LIMIT 10;
Worker tenure by years of service
SELECT date_diff('year', hire_date, current_date) AS tenure_years, count(*) AS worker_count FROM workday_core.public.worker WHERE currently_active = true GROUP BY 1 ORDER BY tenure_years DESC;