HOW-TO · BIGQUERY

Schedule a BigQuery query to run itself.

By Chris Davidson, founder of yForest · Updated September 26, 2026

Write the query once, pick a schedule, and stop running it by hand every morning. The background helper keeps it going even after you close QueryFlow.

Start 14-day free trial Download on theMac App Store

No credit card. 14 days. Cancel in one click.

macOS 15+ · Apple Silicon native · 14-day free trial · No credit card

Quick answer: Write your query, click Schedule in the toolbar, and pick a trigger: Manual, Interval, Daily, Weekly or Custom Cron. Choose where the results go, then turn on Enable immediately. For jobs to run with QueryFlow closed, turn on Run Jobs When App Is Closed in Settings, BigQuery is one of the sources the background helper supports.

Before you start

Steps

  1. Write or open your query in the SQL Editor.
  2. Click Schedule in the toolbar.
  3. Pick a Trigger Type: Manual, Interval, Daily, Weekly or Custom Cron, and set the time.
  4. Choose where results go: No Output, Save to File, Email, or on Pipelines SFTP, Amazon S3, Database, Google Sheets, Slack or Microsoft Teams.
  5. Turn on Enable immediately and click Create Job.
  6. To run with QueryFlow closed, open Settings → Scheduling and turn on Run Jobs When App Is Closed.

With that toggle on, the background helper runs Snowflake, Redshift (IAM keys), BigQuery and Databricks jobs that deliver to S3, SFTP, a local file or email. Jobs with other sources or other destinations still need QueryFlow open.

A worked example

A daily row count check that emails you if something looks off starts with a plain query:

SELECT COUNT(*) AS rows_loaded, MAX(loaded_at) AS last_load
FROM `my-gcp-project.ingest.events_raw`
WHERE DATE(loaded_at) = CURRENT_DATE();

Schedule it Daily at 7 AM, output to Email, enable it, and turn on the closed-app toggle. You'll get a message every morning whether or not your Mac is actually open with QueryFlow running.

Check it worked

Open the job's run history after its first scheduled run. A successful run shows a timestamp, duration, and row count; a failed one shows the error, usually the same message a connection Test would show.

Troubleshooting

If you seeFix
Job doesn't run while the app is closedCheck the source and output are ones the helper supports (BigQuery to S3, SFTP, file or email).
macOS needs your approval to keep this running in the background.Click Open Login Items Settings… and approve the helper.
Job fails immediatelyOpen its run history; it usually matches an error a connection Test would show.

Choosing a schedule that fits the data

A table that updates once a day doesn't need an hourly check, it just adds noise and BigQuery cost for no new information. Match the interval to how often the underlying data actually changes: daily for most reporting tables, hourly or more frequent only for something genuinely near-real-time. This isn't a QueryFlow-specific rule, it's just wasted query cost otherwise.

What happens on a missed schedule

If your Mac was asleep or off when a job was due, it simply runs at its next scheduled time rather than queuing up missed runs. Check the run history if a report seems to have skipped a day, it will show whether the job ran and failed, or never fired at all.

See the full Schedule a BigQuery or Databricks query tutorial for every trigger and output option.

A word on failed runs

A scheduled query that fails doesn't retry automatically by default, it logs the failure and waits for its next scheduled time. If a job is important enough that a single missed run matters, pair it with a Watch This alert on a related value so you find out the same day rather than the next time you happen to check the job history.

Editing a schedule after the fact

You don't need to delete and recreate a job to change its time or output. Open it from the job list, adjust the Trigger Type or destination, and save; the job keeps its history intact, so you can still see how it behaved under the old schedule if that matters later.

Disabling instead of deleting

If a job is only paused for now, a seasonal report you don't need for a few months, disable it rather than deleting it. Its schedule, output settings and history stay intact, and turning it back on later is a single toggle instead of rebuilding the whole thing from scratch.

A quick note on time zones in the trigger

Daily and Weekly triggers use your Mac's local time zone, not UTC and not BigQuery's. If you travel or your Mac's time zone setting changes, double-check a schedule that matters still fires when you expect, especially around daylight saving transitions.

QueryFlow Studio $9.99/mo · $99/yr
QueryFlow Pipelines $29.99/mo · $199.99/yr

Frequently asked

Can I send scheduled results straight into another BigQuery table?

Yes. Choose a BigQuery destination and pick Append or Replace. See Sync BigQuery to Databricks or the destinations tutorial for the exact steps.

What happens if the warehouse is busy when the job runs?

The query queues like any other BigQuery job; it just takes longer to return, it doesn't fail outright.

Does the schedule respect my Mac's timezone?

Yes, times are set in your Mac's local timezone.

Is there a limit on rows a scheduled query can return?

Up to 100,000 rows per query, same as running it manually.

Stop running it by hand.

14-day free trial, no card. Schedule your first BigQuery query today.

Start 14-day free trial

No credit card. 14 days. Cancel in one click.