Google Cloud Spanner Operator¶
先決條件任務¶
要使用這些 operator,您必須完成一些步驟
使用 Cloud Console 選擇或建立一個 Cloud Platform 專案。
為您的專案啟用結算,如 Google Cloud 文件中所述。
啟用 API,如 Cloud Console 文件中所述。
透過 pip 安裝 API 庫。
pip install 'apache-airflow[google]'有關安裝的詳細資訊,請參閱安裝文件。
SpannerDeployInstanceOperator¶
建立新的 Cloud Spanner 例項,或者如果指定專案中已存在具有相同例項 ID 的例項,則更新該 Cloud Spanner 例項。
有關引數定義,請參閱 SpannerDeployInstanceOperator。
使用 operator¶
您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體
tests/system/google/cloud/spanner/example_spanner.py
spanner_instance_create_task = SpannerDeployInstanceOperator(
project_id=PROJECT_ID,
instance_id=GCP_SPANNER_INSTANCE_ID,
configuration_name=GCP_SPANNER_CONFIG_NAME,
node_count=GCP_SPANNER_NODE_COUNT,
display_name=GCP_SPANNER_DISPLAY_NAME,
task_id="spanner_instance_create_task",
)
spanner_instance_update_task = SpannerDeployInstanceOperator(
instance_id=GCP_SPANNER_INSTANCE_ID,
configuration_name=GCP_SPANNER_CONFIG_NAME,
node_count=GCP_SPANNER_NODE_COUNT + 1,
display_name=GCP_SPANNER_DISPLAY_NAME + "_updated",
task_id="spanner_instance_update_task",
)
模板化¶
template_fields: Sequence[str] = (
"project_id",
"instance_id",
"configuration_name",
"display_name",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
請參閱 Google Cloud Spanner API 文件以建立新例項。
SpannerDeleteDatabaseInstanceOperator¶
從指定的 Cloud Spanner 例項中刪除資料庫。如果資料庫不存在,則不執行任何操作,operator 將成功完成。
有關引數定義,請參閱 SpannerDeleteDatabaseInstanceOperator。
使用 operator¶
您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體
tests/system/google/cloud/spanner/example_spanner.py
spanner_database_delete_task = SpannerDeleteDatabaseInstanceOperator(
instance_id=GCP_SPANNER_INSTANCE_ID,
database_id=GCP_SPANNER_DATABASE_ID,
task_id="spanner_database_delete_task",
)
模板化¶
template_fields: Sequence[str] = (
"project_id",
"instance_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
SpannerDeployDatabaseInstanceOperator¶
在指定的例項中建立新的 Cloud Spanner 資料庫,或者如果所需資料庫已存在,則假定成功,並且不更改資料庫配置。不對資料庫結構進行驗證 - 只要資料庫以相同的名稱存在即可。
有關引數定義,請參閱 SpannerDeployDatabaseInstanceOperator。
使用 operator¶
您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體
tests/system/google/cloud/spanner/example_spanner.py
spanner_database_deploy_task = SpannerDeployDatabaseInstanceOperator(
instance_id=GCP_SPANNER_INSTANCE_ID,
database_id=GCP_SPANNER_DATABASE_ID,
ddl_statements=[
"CREATE TABLE my_table1 (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
"CREATE TABLE my_table2 (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
],
task_id="spanner_database_deploy_task",
)
模板化¶
template_fields: Sequence[str] = (
"project_id",
"instance_id",
"database_id",
"ddl_statements",
"gcp_conn_id",
"impersonation_chain",
)
template_ext: Sequence[str] = (".sql",)
template_fields_renderers = {"ddl_statements": "sql"}
更多資訊¶
請參閱 Google Cloud Spanner API 文件以建立新資料庫。
SpannerUpdateDatabaseInstanceOperator¶
在 Cloud Spanner 資料庫中執行 DDL 查詢,允許您修改現有資料庫的結構。
您可以選擇指定 operation_id 引數,這有助於確定在 update_database 呼叫被重放時語句是否已執行(冪等性檢查)。operation_id 在資料庫中必須唯一,並且必須是有效的識別符號:[a-z][a-z0-9_]*。更多資訊可以在 updateDdl API 文件中找到
有關引數定義,請參閱 SpannerUpdateDatabaseInstanceOperator。
使用 operator¶
您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體
tests/system/google/cloud/spanner/example_spanner.py
spanner_database_update_task = SpannerUpdateDatabaseInstanceOperator(
instance_id=GCP_SPANNER_INSTANCE_ID,
database_id=GCP_SPANNER_DATABASE_ID,
ddl_statements=[
"CREATE TABLE my_table3 (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
],
task_id="spanner_database_update_task",
)
tests/system/google/cloud/spanner/example_spanner.py
spanner_database_update_idempotent1_task = SpannerUpdateDatabaseInstanceOperator(
project_id=PROJECT_ID,
instance_id=GCP_SPANNER_INSTANCE_ID,
database_id=GCP_SPANNER_DATABASE_ID,
operation_id=OPERATION_ID,
ddl_statements=[
"CREATE TABLE my_table_unique (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
],
task_id="spanner_database_update_idempotent1_task",
)
spanner_database_update_idempotent2_task = SpannerUpdateDatabaseInstanceOperator(
instance_id=GCP_SPANNER_INSTANCE_ID,
database_id=GCP_SPANNER_DATABASE_ID,
operation_id=OPERATION_ID,
ddl_statements=[
"CREATE TABLE my_table_unique (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
],
task_id="spanner_database_update_idempotent2_task",
)
模板化¶
template_fields: Sequence[str] = (
"project_id",
"instance_id",
"database_id",
"ddl_statements",
"gcp_conn_id",
"impersonation_chain",
)
template_ext: Sequence[str] = (".sql",)
template_fields_renderers = {"ddl_statements": "sql"}
更多資訊¶
請參閱 Google Cloud Spanner API 文件瞭解資料庫 update_ddl。
SpannerQueryDatabaseInstanceOperator¶
執行任意 DML 查詢(INSERT, UPDATE, DELETE)。
有關引數定義,請參閱 SpannerQueryDatabaseInstanceOperator。
使用 operator¶
您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體
tests/system/google/cloud/spanner/example_spanner.py
spanner_instance_query_task = SpannerQueryDatabaseInstanceOperator(
instance_id=GCP_SPANNER_INSTANCE_ID,
database_id=GCP_SPANNER_DATABASE_ID,
query=["DELETE FROM my_table2 WHERE true"],
task_id="spanner_instance_query_task",
)
模板化¶
template_fields: Sequence[str] = (
"project_id",
"instance_id",
"database_id",
"query",
"gcp_conn_id",
"impersonation_chain",
)
template_ext: Sequence[str] = (".sql",)
template_fields_renderers = {"query": "sql"}
更多資訊¶
有關 DML 語法的更多資訊,請參閱 Google Cloud Spanner API 文件。
SpannerDeleteInstanceOperator¶
刪除 Cloud Spanner 例項。如果例項不存在,則不執行任何操作,operator 將成功完成。
有關引數定義,請參閱 SpannerDeleteInstanceOperator。
使用 operator¶
您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體
tests/system/google/cloud/spanner/example_spanner.py
spanner_instance_delete_task = SpannerDeleteInstanceOperator(
instance_id=GCP_SPANNER_INSTANCE_ID, task_id="spanner_instance_delete_task"
)
模板化¶
template_fields: Sequence[str] = (
"project_id",
"instance_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
請參閱 Google Cloud Spanner API 文件以刪除例項。
參考¶
更多資訊,請參閱