Catalogue des modèles de dbt_bigquery_monitoring
Résumé
Annexe de référence de dbt_bigquery_monitoring : les modèles du domaine
models/monitoring/avec leur matérialisation, la vueINFORMATION_SCHEMAou la source qui les alimente. À consulter, pas à lire en entier.
Périssable
Ce catalogue correspond à une version
0.xdu package ; il décrit un package open source (licence MIT, © les auteurs debqbooster/dbt-bigquery-monitoring) dont la version la plus récente consultée le 24 octobre 2026 est la v0.26.5 (14 octobre 2026). Les noms de modèles, les colonnes et les valeurs par défaut peuvent changer d’une version à l’autre : se référer à la documentation amont (github.com/bqbooster/dbt-bigquery-monitoring) avant de s’appuyer sur un détail.
Inventaire des modèles
Légende de la colonne Source exacte : nom de la vue INFORMATION_SCHEMA réellement interrogée en bout de chaîne (ex. IS.JOBS), ou Billing (export de facturation détaillé GCP, table brute), ou Logs (Cloud Audit Logs, table brute du sink Cloud Logging). IS↔Logs = bascule selon la config, toujours via jobs_with_cost (voir note 1 sous Base) ; dans ce cas la source par défaut est IS.JOBS.
Base (models/monitoring/base/)
Modèles bruts combinant jobs/stockage et coût, socle des couches suivantes, pas destinés à l’usage direct en dashboard.
| Modèle | Matér. | Source exacte | Objectif |
|---|---|---|---|
bigquery_audit_logs_v2 | ephemeral | Logs (table brute du sink) | Lecture directe de la table exportée par le sink Cloud Logging |
bigquery_audit_logs | ephemeral | Logs (via bigquery_audit_logs_v2) | Normalise les champs bruts du log d’audit |
jobs_from_audit_logs | view | Logs (parse protopayload_auditlog.metadataJson) | Reconstruit un schéma proche de JOBS à partir du JSON de l’audit log |
combined_jobs_inputs | ephemeral | IS.JOBS + Logs | Fusionne les deux sources sans perte de champ |
jobs_with_cost | view (voir note 2) | IS↔Logs (voir note 1), IS.JOBS par défaut | Modèle pivot : ajoute query_cost (flat ou on-demand), dbt_model_name, client_type |
jobs_by_project_with_cost | view (voir note 2) | IS↔Logs (via jobs_with_cost, SELECT * strict) | Alias de jobs_with_cost par projet explicite |
gcp_billing_export_resource_v1 | ephemeral, enabled=enable_gcp_billing_export() | Billing (table brute) | Extrait les colonnes de coût/usage de l’export de facturation détaillé |
dataset_options | view (voir note 2) | IS.SCHEMATA_OPTIONS | Option de facturation stockage par dataset |
storage_with_cost | view (voir note 2) | IS.TABLE_STORAGE | Ajoute les coûts logique/physique et le forecast mensuel |
table_and_storage_with_cost | view (voir note 2) | IS.TABLES + storage_with_cost | Jointure table + stockage + coût |
Note 1 : Bascule de source de jobs_with_cost (et donc de tout ce qui en descend) : IS.JOBS par défaut ; jobs_from_audit_logs seul si enable_gcp_bigquery_audit_logs=true sans combinaison ; combined_jobs_inputs (les deux fusionnés) si enable_gcp_bigquery_audit_logs=true et should_combine_audit_logs_and_information_schema=true.
Note 2 : Matérialisation dynamique (macro materialized_as_view_if_explicit_projects) : toujours une forme de vue, view par défaut, ou project_by_project_view (une vue par projet, unionnées) si la variable input_gcp_projects liste des projets explicites. Jamais matérialisé en table par cette macro, quelle que soit la configuration.
Compute (models/monitoring/compute/)
Intermédiaires : tous incremental :
| Modèle | Source exacte |
|---|---|
compute_billing_per_hour | Billing, enabled=enable_gcp_billing_export() |
compute_rollup_per_minute | IS↔Logs, via jobs_with_cost |
compute_rollup_per_hour | IS↔Logs, agrégat de compute_rollup_per_minute |
compute_cost_per_minute | IS↔Logs, via jobs_with_cost (macro jobs_done_incremental_hourly) |
compute_cost_per_hour | IS↔Logs, agrégat de compute_cost_per_minute |
jobs_costs_incremental | IS↔Logs, via jobs_with_cost |
models_costs_incremental | IS↔Logs, via jobs_with_cost |
users_costs_incremental | IS↔Logs, via jobs_with_cost |
reservation_usage_per_minute | IS.RESERVATIONS_TIMELINE + IS↔Logs (via compute_cost_per_minute) |
reservation_usage_per_hour | idem, agrégat de reservation_usage_per_minute |
(models_costs_incremental identifie les jobs dbt via dbt_model_name, un champ dérivé dans jobs_with_cost à partir du commentaire de requête généré par dbt et des labels du job, pas via une source externe dédiée.)
Datamarts :
| Modèle | Matér. | Source exacte | Use case |
|---|---|---|---|
most_expensive_jobs | view | IS↔Logs, via jobs_costs_incremental | Top jobs coûteux, cibler l’optimisation |
slowest_jobs | view | idem, filtre rank_duration | Jobs les plus lents, diagnostic de performance |
most_repeated_jobs | view | idem | Requêtes identiques répétées, candidates cache/vue matérialisée |
job_failure_analysis | view | idem, filtre error_result IS NOT NULL | Échecs par type d’erreur/utilisateur/coût, debug |
error_rate_over_time | view | idem | Taux d’échec dans le temps, alerting fiabilité |
job_timeline_analysis | view | IS.JOBS_TIMELINE (direct, pas via jobs_with_cost) | Slots, temps de queue, efficacité, champs propres à JOBS_TIMELINE, absents de JOBS |
materialization_candidates | view | IS↔Logs, via jobs_costs_incremental | Requêtes chères + faible cache hit → vue matérialisée/scheduled query |
query_with_better_pricing_using_on_demand_view | view | IS↔Logs, via jobs_with_cost | Requêtes qui coûteraient moins cher en tarification à la demande |
query_with_better_pricing_using_flat_pricing_view | view | idem (filtre inverse) | Requêtes qui coûteraient moins cher en flat-rate |
cost_per_project | view | IS↔Logs, via compute_cost_per_hour | Coût quotidien par projet, FinOps inter-projets |
cost_by_label | view | IS↔Logs, via jobs_with_cost | Coût par label de job, chargeback équipe/environnement |
most_expensive_users | view | IS↔Logs, via users_costs_incremental | Utilisateurs les plus coûteux |
compute_cost_per_hour_view / _per_minute_view | view | IS↔Logs, via compute_cost_per_hour/_per_minute | Vue enrichie du coût de calcul |
bi_engine_materialized_view_analysis | view | IS↔Logs, via jobs_with_cost | Usage du BI Engine et efficacité des vues matérialisées |
most_expensive_models | view | IS↔Logs, via models_costs_incremental | Modèles dbt les plus coûteux à exécuter |
most_repeated_models | table | idem (filtre query_count > 1) | Modèles dbt les plus fréquemment exécutés |
dbt_model_trends | view | IS↔Logs, via models_costs_incremental | Tendances coût/perf par modèle dbt, détection de régression |
Storage (models/monitoring/storage/)
Intermédiaires :
| Modèle | Source exacte |
|---|---|
stg_partitions_monitoring | IS.PARTITIONS + IS.TABLE_OPTIONS |
table_reference_incremental | IS↔Logs, via jobs_with_cost |
Datamarts :
| Modèle | Matér. | Source exacte | Use case |
|---|---|---|---|
dataset_with_cost | table | IS.TABLE_STORAGE (direct, pas via storage_with_cost) | Détails dataset + stockage + coût |
dataset_with_potential_savings | view | IS, via storage_with_cost | Économies logique vs physique, par dataset |
most_expensive_tables | view | IS, via storage_with_cost | Tables les plus coûteuses en stockage |
read_heavy_tables | view | IS, via storage_with_cost + table_reference_incremental | Tables les plus lues, candidates partitionnement/clustering/BI Engine |
write_only_tables | view | idem | Écrites récemment, jamais lues, candidates archivage |
unused_tables | table | idem | Jamais modifiées ni lues, candidates suppression |
partitions_monitoring | view | IS, via stg_partitions_monitoring | Synthèse des partitions par table/dataset/projet |
table_with_potential_savings | view | IS, via storage_with_cost | Économies logique vs physique, par table |
storage_billing_per_hour | incremental, enabled=enable_gcp_billing_export() | Billing | Coût horaire réel de stockage |
write_ingestion_cost_per_table | view | IS.STREAMING_TIMELINE + IS.WRITE_API_TIMELINE | Volume/coût d’ingestion (Streaming + Storage Write API) |
write_ingestion_errors_analysis | view | idem | Erreurs d’ingestion par table/code, debug pipeline |
Global (models/monitoring/global/datamart/)
Vues transverses combinant compute + storage, pour dashboards exécutifs/FinOps.
| Modèle | Matér. | Source exacte | Use case |
|---|---|---|---|
daily_spend | incremental | Billing (compute_billing_per_hour + storage_billing_per_hour) si enable_gcp_billing_export, sinon repli IS↔Logs (compute_cost_per_hour_view, coût estimé, storage absent) | Coût quotidien agrégé (compute + storage) |
cost_trend_comparison | view | hérite de daily_spend (Billing + IS↔Logs) | Anomalies, budget |
project_cost_summary | view | IS↔Logs (compute_cost_per_hour) + IS (storage_with_cost) | Coût compute + storage prévisionnel, par projet |
recommendations | view | IS.RECOMMENDATIONS | Recommandations actives Google (partitionnement, clustering, capacité, tables inactives) |
dbt_bigquery_monitoring_options | table | aucune (lit les variables de config du package via macros) | Configuration courante du package, audit de config |
Notes liées
- dbt_bigquery_monitoring : l’idée, la configuration et les décisions d’adoption.
- MOC Data Engineering : carte du vault.