# ask-ai

Paul Herzog

03/05/2024, 5:52 AM
@Scout i want to schedule dbt cloud schedule runs when the source for the dbt run (bigquery table) is updated, so it should use a sensor. how to do this?


03/05/2024, 5:52 AM
To schedule dbt Cloud schedule runs based on updates to a BigQuery table, you can use a sensor in Dagster. Sensors in Dagster allow you to kick off jobs based on some external change, such as a new file in an S3 bucket, if some other asset is updated, or if a system is down. In your case, you would want to create a sensor that triggers when there is a change in the BigQuery table that is the source for your dbt run. Here's a general approach based on the documentation: 1. Define a sensor that checks for updates to the BigQuery table. 2. When the sensor detects a change, it should create a
that includes the necessary configuration to trigger the dbt Cloud schedule run. The documentation provides an example of how to create a sensor for an S3 bucket. While this is not directly related to BigQuery, the concept is similar. You would need to write a custom sensor function that checks for updates to your BigQuery table. Here's a simplified example based on the S3 sensor example from the documentation:
Copy code
python from dagster import sensor, RunRequest  @sensor(job=my_dbt_cloud_schedule_run_job) def my_bigquery_table_sensor(context):     # Logic to check for updates to the BigQuery table     # This could involve querying BigQuery to check for new data     # or checking a metadata table that tracks updates.          # If an update is detected, create a RunRequest to trigger the dbt Cloud schedule run     if update_detected:         return RunRequest(run_key="unique-key-for-this-update", run_config={})     else:         return SkipReason("No updates detected for BigQuery table.")
In this example,
would be the job that triggers the dbt Cloud schedule run. The
variable is a placeholder for your logic to check if the BigQuery table has been updated. Please note that this example is quite generic. You will need to implement the specific logic to check for updates to your BigQuery table. Additionally, you will need to configure the
with the appropriate settings to trigger the dbt Cloud schedule run. If you need to interact with dbt Cloud's API to trigger runs, you might need to use an appropriate resource or library within your sensor to make HTTP requests to dbt Cloud's API endpoint for triggering runs. Remember to replace the placeholders with your actual job and logic for detecting updates to the BigQuery table.