Schedule a validation
Goal
You'll attach a schedule to a validation so Measured Cloud runs it automatically on the cadence your data lands — every weekday at 06:00, every hour, the first of each month. One schedule can run several validations. Each time it fires, every validation on it gets its own run.
Prereqs
- A validation that runs cleanly when you click Run — see Create and run a validation.
- The editor role or higher in the workspace.
Steps
-
Open the validation from Validations, and scroll to its Schedule card. To schedule a data asset, open the asset and click Schedule this asset. That opens the asset's default validation, which holds all of the asset's rules.
-
Click Add schedule. Optionally, pick other validations under Also run to run them on the same cadence.
-
Choose a cadence in the builder — no cron knowledge needed:
Preset You choose Produces Every N minutes 1–59 minutes */15 * * * *Every N hours hours and a minute offset 30 */4 * * *Hourly minute past the hour 15 * * * *Daily at a time hour and minute 0 6 * * *Weekly on days weekdays and a time 0 9 * * 1-5Monthly on a day day of month and a time 0 9 1 * *The preview under the controls reads it back in plain English ("Runs 9:00 AM Mon–Fri"). Need a cadence the presets can't express, such as only certain months? Create the schedule through the API with any 5-field cron expression; the app shows it as a custom cadence with the same plain-English summary.
-
Check the timezone. The form shows the organization's schedule timezone, for example
America/New_York (EDT). Every schedule runs in it, so the cadence is read in that zone and 09:00 stays 09:00 there through daylight-saving changes. You don't pick a zone per schedule. To change it for the whole organization, follow Change it in Settings: see Set the schedule timezone. -
Leave Enabled on and Save.
Verify
- The schedule appears on the Schedule card with its cadence and next run time. The next run is shown in the organization's schedule timezone, with its abbreviation. Also runs names the other validations it runs.
- Validations → Schedule shows the upcoming runs on the calendar, marked Scheduled, one per validation.
- After the next firing, a new run appears in each validation's Execution runs card and on Results.
Change it later
- Edit (pencil icon) re-opens the builder with the current cadence and Validations. Add or remove validations there. A validation you remove stops running from the next firing. Saving keeps the schedule and its history. A schedule saved in a zone other than the organization's (flagged Not the org timezone) keeps that zone unless you tick Run it in <org zone> from now on.
- Pause stops new runs without losing the schedule; Resume picks up again. A run already in flight finishes.
- Run now starts a run of each of the schedule's validations immediately, outside the cadence.
- Delete removes the schedule; past runs and results are kept.
Tips
- Match the data, not the clock. Schedule a validation shortly after the load that feeds it finishes. For pipelines with variable finish times, trigger runs from your orchestrator instead — see Airflow and Dagster.
- Split fast and thorough checks. An asset can be in several validations: a lightweight hourly validation for freshness and volume, and a full nightly one.
- Get told about failures. Pair the schedule with an alert: Set up Slack or email alerts.
Via the API
curl -X POST \
-H "Authorization: Bearer dqk_…" \
-H "Content-Type: application/json" \
https://dq.example.com/api/v1/organizations/<org-id>/workspaces/<ws-id>/validations/<validation-id>/schedules \
-d '{"cron_expression": "0 6 * * 1-5", "enabled": true}'
To run several validations from one schedule, post to .../schedules with validation_ids:
curl -X POST \
-H "Authorization: Bearer dqk_…" \
-H "Content-Type: application/json" \
https://dq.example.com/api/v1/organizations/<org-id>/workspaces/<ws-id>/schedules \
-d '{"validation_ids": ["<validation-id>", "<other-validation-id>"], "cron_expression": "0 6 * * 1-5"}'
Without a timezone the schedule runs in the organization's schedule timezone, the same as a schedule made in the app. An explicit IANA timezone is still accepted for older integrations. The app flags a schedule whose zone differs from the organization's.
PATCH .../schedules/<schedule-id> with validation_ids changes the list. An unknown timezone, an invalid cron expression, or an empty validation list is rejected with a clear error. See Schedules.