如何自动备份和版本BigQuery代码,例如存储过程?
有哪些备份 BigQuery DDL 的选项 - 特别是视图、存储过程和函数代码?
我们在 BigQuery 中有大量代码,我们希望自动备份这些代码,最好也对其进行版本控制。想知道其他人是如何做到这一点的。
感谢任何帮助。
谢谢!
回答
为了保持和跟踪我们的 BigQuery 结构和代码,我们使用 Terraform 来管理大查询中的每个资源。更具体地说,对于您的问题,我们使用google_bigquery_routine资源来确保其他团队成员审核更改以及您从使用 VCS 中获得的所有其他好处。
TerraForm 代码的另一个重要部分是我们对包含表结构和例程的 BigQuery 模块(通过 github 版本/标签)进行版本控制,对其进行版本控制并在多个环境中使用它。
看起来像:
主文件
module "bigquery" {
source = "github.com/sample-org/terraform-modules.git?ref=0.0.2/bigquery"
project_id = var.project_id
...
... other vars for the module
...
}
terraform-modules/bigquery/main.tf
resource "google_bigquery_dataset" "test" {
dataset_id = "dataset_id"
project_id = var.project_name
}
resource "google_bigquery_routine" "sproc" {
dataset_id = google_bigquery_dataset.test.dataset_id
routine_id = "routine_id"
routine_type = "PROCEDURE"
language = "SQL"
definition_body = "CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);"
}
这有助于我们在所有环境中升级我们的基础设施,而无需更改额外的代码