common_components/monitoring/module/dbt_dashboard.sql (50 lines of code) (raw):

-- Copyright 2023 The Reg Reporting Blueprint Authors -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- https://www.apache.org/licenses/LICENSE-2.0 -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- DBT Dashboard -- -- Create a view with useful metrics for an operational view of the DBT executions -- in Airflow. SELECT * EXCEPT (json_timings), -- Timing information (for job) ( SELECT AS STRUCT MIN(PARSE_DATETIME("%Y-%m-%dT%H:%M:%E*S", JSON_EXTRACT_SCALAR(t, "$.completed_at"))) AS completed_at, MIN(PARSE_DATETIME("%Y-%m-%dT%H:%M:%E*S", JSON_EXTRACT_SCALAR(t, "$.started_at"))) AS started_at FROM UNNEST(json_timings) t WHERE JSON_EXTRACT_SCALAR(t, "$.name")="compile" ) AS compile_timing, ( SELECT AS STRUCT MIN(PARSE_DATETIME("%Y-%m-%dT%H:%M:%E*S", JSON_EXTRACT_SCALAR(t, "$.completed_at"))) AS completed_at, MIN(PARSE_DATETIME("%Y-%m-%dT%H:%M:%E*S", JSON_EXTRACT_SCALAR(t, "$.started_at"))) AS started_at FROM UNNEST(json_timings) t WHERE JSON_EXTRACT_SCALAR(t, "$.name")="compile" ) AS execute_timing, -- NOTE: This only works if source_ref is a valid identifier, which normally -- requires a CI/CD triggered build from source. -- -- Source CONCAT('${src_url}/', build_info.source_ref, '/', build_info.source_path) AS github_link, -- Building CONCAT('https://console.cloud.google.com/cloud-build/builds;region=global/', build_info.build_ref, '?project=${project_id}') AS build_link, -- Docs CONCAT("https://storage.cloud.google.com/${docs_bucket}/build/", build_info.build_ref, '/static_index.html') AS doc_link, -- Airflow CONCAT('${airflow_url}/graph?dag_id=', airflow_info.airflow_dag_id, '&execution_date=', airflow_info.airflow_execution_date) AS airflow_dag_link, CONCAT('${airflow_url}/log?dag_id=', airflow_info.airflow_dag_id, '&task_id=', airflow_info.airflow_task_id, '&execution_date=', airflow_info.airflow_execution_date) AS airflow_task_link, CONCAT('${airflow_url}/task?dag_id=', airflow_info.airflow_dag_id, '&task_id=', airflow_info.airflow_task_id, '&execution_date=', airflow_info.airflow_execution_date) AS airflow_task_info_link, -- Job information CONCAT('https://console.cloud.google.com/bigquery?project=', response_bigquery.project_id, '&j=bq:', response_bigquery.location, ':', response_bigquery.job_id, '&page=queryresults') AS job_link FROM `${monitoring_dataset}.dbt_start` JOIN `${monitoring_dataset}.dbt_end` USING (dbt_invocation_id) WHERE response_bigquery.job_id IS NOT NULL AND airflow_info.airflow_dag_id IS NOT NULL ORDER BY start_time DESC