airflow.providers.google.cloud.operators.bigquery

此模組包含 Google BigQuery 運算子。

模組內容

類別

BigQueryUIColors

BigQuery 運算子的十六進位顏色。

IfExistAction

當資源存在時要採取的動作。

BigQueryCheckOperator

針對 BigQuery 執行檢查。

BigQueryValueCheckOperator

使用 SQL 程式碼執行簡單的值檢查。

BigQueryIntervalCheckOperator

檢查以 SQL 表達式給出的指標值是否在舊值的容差範圍內。

BigQueryColumnCheckOperator

子類別 SQLColumnCheckOperator,以便為 OpenLineage 提供任務 ID 以進行解析。

BigQueryTableCheckOperator

子類別 SQLTableCheckOperator,以便為 OpenLineage 提供任務 ID 以進行解析。

BigQueryGetDataOperator

提取資料並傳回,可以從 BigQuery 表格或查詢任務結果中提取。

BigQueryCreateEmptyTableOperator

在指定的 BigQuery 資料集中建立新表格,可選擇包含結構描述。

BigQueryCreateExternalTableOperator

使用來自 Google Cloud Storage 的資料建立新的外部表格。

BigQueryDeleteDatasetOperator

從 BigQuery 中的專案刪除現有的資料集。

BigQueryCreateEmptyDatasetOperator

在 BigQuery 中為您的專案建立新的資料集。

BigQueryGetDatasetOperator

取得由 ID 指定的資料集。

BigQueryGetDatasetTablesOperator

檢索指定資料集中的表格列表。

BigQueryUpdateTableOperator

更新 BigQuery 中專案的表格。

BigQueryUpdateDatasetOperator

更新 BigQuery 中專案的資料集。

BigQueryDeleteTableOperator

刪除 BigQuery 表格。

BigQueryUpsertTableOperator

Upsert 到 BigQuery 表格。

BigQueryUpdateTableSchemaOperator

更新 BigQuery 表格結構描述。

BigQueryInsertJobOperator

執行 BigQuery 任務。

屬性

BIGQUERY_JOB_DETAILS_LINK_FMT

LABEL_REGEX

airflow.providers.google.cloud.operators.bigquery.LABEL_REGEX[source]
class airflow.providers.google.cloud.operators.bigquery.BigQueryUIColors[source]

基底類別: enum.Enum

BigQuery 運算子的十六進位顏色。

CHECK = '#C0D7FF'[source]
QUERY = '#A1BBFF'[source]
TABLE = '#81A0FF'[source]
DATASET = '#5F86FF'[source]
class airflow.providers.google.cloud.operators.bigquery.IfExistAction[source]

基底類別: enum.Enum

當資源存在時要採取的動作。

IGNORE = 'ignore'[source]
LOG = 'log'[source]
FAIL = 'fail'[source]
SKIP = 'skip'[source]
class airflow.providers.google.cloud.operators.bigquery.BigQueryCheckOperator(*, sql, gcp_conn_id='google_cloud_default', use_legacy_sql=True, location=None, impersonation_chain=None, labels=None, encryption_configuration=None, deferrable=conf.getboolean('operators', 'default_deferrable', fallback=False), poll_interval=4.0, query_params=None, **kwargs)[source]

基底類別: _BigQueryDbHookMixin, airflow.providers.common.sql.operators.sql.SQLCheckOperator, _BigQueryOperatorsEncryptionConfigurationMixin

針對 BigQuery 執行檢查。

此運算子預期一個 SQL 查詢,該查詢傳回單一列。該列上的每個值都使用 Python bool 轉換進行評估。如果任何值為假,則檢查會出錯。

參見

有關如何使用此運算子的更多資訊,請查看指南: 檢查查詢結果是否有資料

請注意,Python 布林轉換將以下內容評估為False

  • False

  • 0

  • 空字串 ("")

  • 空列表 ([])

  • 空字典或集合 ({})

給定像 SELECT COUNT(*) FROM foo 這樣的查詢,只有當計數等於零時才會失敗。您可以製作更複雜的查詢,例如,檢查表格的列數是否與上游來源表格相同,或者今天分割區的計數是否大於昨天的分割區,或者一組指標是否小於 7 天平均值的三個標準差。

此運算子可以用作管道中的資料品質檢查。根據您將其放置在 DAG 中的位置,您可以選擇停止關鍵路徑,防止發布可疑資料,或放在旁邊並接收電子郵件警報,而不會停止 DAG 的進度。

參數
  • sql (str) – 要執行的 SQL。

  • gcp_conn_id (str) – Google Cloud 的連線 ID。

  • use_legacy_sql (bool) – 是否使用舊版 SQL (true) 或標準 SQL (false)。

  • location (str | None) – 任務的地理位置。請參閱詳細資訊: https://cloud.google.com/bigquery/docs/locations#specifying_your_location

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的存取權杖所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶。(已範本化)

  • labels (dict | None) – 包含表格標籤的字典,傳遞給 BigQuery。

  • encryption_configuration (dict | None) –

    (可選) 自訂加密設定 (例如,Cloud KMS 金鑰)。

    encryption_configuration = {
        "kmsKeyName": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
    }
    

  • deferrable (bool) – 在可延遲模式下執行運算子。

  • poll_interval (float) – (僅限可延遲模式) 輪詢間隔(秒),用於檢查任務的狀態。

  • query_params (list | None) – 包含查詢參數類型和值的字典列表,傳遞給 BigQuery。字典的結構應類似於 Google BigQuery Jobs API 中的 ‘queryParameters’: https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs。例如,[{ ‘name’: ‘corpus’, ‘parameterType’: { ‘type’: ‘STRING’ }, ‘parameterValue’: { ‘value’: ‘romeoandjuliet’ } }]。(已範本化)

template_fields: collections.abc.Sequence[str] = ('sql', 'gcp_conn_id', 'impersonation_chain', 'labels', 'query_params')[source]
template_ext: collections.abc.Sequence[str] = ('.sql',)[source]
ui_color[source]
conn_id_field = 'gcp_conn_id'[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

execute_complete(context, event)[source]

充當觸發器觸發時的回呼。

這會立即傳回。它依賴觸發器來拋出例外,否則它會假設執行成功。

class airflow.providers.google.cloud.operators.bigquery.BigQueryValueCheckOperator(*, sql, pass_value, tolerance=None, encryption_configuration=None, gcp_conn_id='google_cloud_default', use_legacy_sql=True, location=None, impersonation_chain=None, labels=None, deferrable=conf.getboolean('operators', 'default_deferrable', fallback=False), poll_interval=4.0, **kwargs)[source]

基底類別: _BigQueryDbHookMixin, airflow.providers.common.sql.operators.sql.SQLValueCheckOperator, _BigQueryOperatorsEncryptionConfigurationMixin

使用 SQL 程式碼執行簡單的值檢查。

參見

有關如何使用此運算子的更多資訊,請查看指南: 比較查詢結果與通過值

參數
  • sql (str) – 要執行的 SQL。

  • use_legacy_sql (bool) – 是否使用舊版 SQL (true) 或標準 SQL (false)。

  • encryption_configuration (dict | None) –

    (可選) 自訂加密設定 (例如,Cloud KMS 金鑰)。

    encryption_configuration = {
        "kmsKeyName": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
    }
    

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • location (str | None) – 任務的地理位置。請參閱詳細資訊: https://cloud.google.com/bigquery/docs/locations#specifying_your_location

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的存取權杖所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶。(已範本化)

  • labels (dict | None) – 包含表格標籤的字典,傳遞給 BigQuery。

  • deferrable (bool) – 在可延遲模式下執行運算子。

  • poll_interval (float) – (僅限可延遲模式) 輪詢間隔(秒),用於檢查任務的狀態。

template_fields: collections.abc.Sequence[str] = ('sql', 'gcp_conn_id', 'pass_value', 'impersonation_chain', 'labels')[source]
template_ext: collections.abc.Sequence[str] = ('.sql',)[source]
ui_color[source]
conn_id_field = 'gcp_conn_id'[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

execute_complete(context, event)[source]

充當觸發器觸發時的回呼。

這會立即傳回。它依賴觸發器來拋出例外,否則它會假設執行成功。

class airflow.providers.google.cloud.operators.bigquery.BigQueryIntervalCheckOperator(*, table, metrics_thresholds, date_filter_column='ds', days_back=-7, gcp_conn_id='google_cloud_default', use_legacy_sql=True, location=None, encryption_configuration=None, impersonation_chain=None, labels=None, deferrable=conf.getboolean('operators', 'default_deferrable', fallback=False), poll_interval=4.0, project_id=PROVIDE_PROJECT_ID, **kwargs)[source]

基底類別: _BigQueryDbHookMixin, airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator, _BigQueryOperatorsEncryptionConfigurationMixin

檢查以 SQL 表達式給出的指標值是否在舊值的容差範圍內。

此方法建構如下查詢

SELECT {metrics_threshold_dict_key} FROM {table}
WHERE {date_filter_column}=<date>

參見

有關如何使用此運算子的更多資訊,請查看指南: 比較一段時間內的指標

參數
  • table (str) – 表格名稱

  • days_back (SupportsAbs[int]) – ds 與我們要檢查的 ds 之間的天數。預設為 7 天

  • metrics_thresholds (dict) – 由指標索引的比率字典,例如 ‘COUNT(*)’: 1.5 將要求當前天與先前 days_back 之間的差異小於或等於 50%。

  • use_legacy_sql (bool) – 是否使用舊版 SQL (true) 或標準 SQL (false)。

  • encryption_configuration (dict | None) –

    (可選) 自訂加密設定 (例如,Cloud KMS 金鑰)。

    encryption_configuration = {
        "kmsKeyName": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
    }
    

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • location (str | None) – 任務的地理位置。請參閱詳細資訊: https://cloud.google.com/bigquery/docs/locations#specifying_your_location

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

  • labels (dict | None) – 包含表格標籤的字典,傳遞給 BigQuery

  • deferrable (bool) – 在可延遲模式下執行運算子

  • poll_interval (float) – (僅限可延遲模式) 輪詢週期,單位為秒,用於檢查任務狀態。預設值為 4 秒。

  • project_id (str) – 代表 BigQuery projectId 的字串

template_fields: collections.abc.Sequence[str] = ('table', 'gcp_conn_id', 'sql1', 'sql2', 'impersonation_chain', 'labels')[source]
ui_color[source]
conn_id_field = 'gcp_conn_id'[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

execute_complete(context, event)[source]

充當觸發器觸發時的回呼。

這會立即傳回。它依賴觸發器來拋出例外,否則它會假設執行成功。

class airflow.providers.google.cloud.operators.bigquery.BigQueryColumnCheckOperator(*, table, column_mapping, partition_clause=None, database=None, accept_none=True, encryption_configuration=None, gcp_conn_id='google_cloud_default', use_legacy_sql=True, location=None, impersonation_chain=None, labels=None, **kwargs)[source]

繼承自:_BigQueryDbHookMixin, airflow.providers.common.sql.operators.sql.SQLColumnCheckOperator, _BigQueryOperatorsEncryptionConfigurationMixin

子類別 SQLColumnCheckOperator,以便為 OpenLineage 提供任務 ID 以進行解析。

請參閱基礎類別的文件字串以了解用法。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南:使用預定義測試檢查欄位

參數
  • table (str) – 表格名稱

  • column_mapping (dict) – 一個字典,將欄位與其檢查項目關聯起來

  • partition_clause (str | None) – 一個字串 SQL 陳述式,會加入 WHERE 子句以分割資料

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • encryption_configuration (dict | None) –

    (可選) 自訂加密設定 (例如,Cloud KMS 金鑰)。

    encryption_configuration = {
        "kmsKeyName": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
    }
    

  • use_legacy_sql (bool) – 是否使用舊版 SQL (true) 或標準 SQL (false)。

  • location (str | None) – 任務的地理位置。請參閱詳細資訊: https://cloud.google.com/bigquery/docs/locations#specifying_your_location

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

  • labels (dict | None) – 包含表格標籤的字典,傳遞給 BigQuery

template_fields: collections.abc.Sequence[str][source]
conn_id_field = 'gcp_conn_id'[source]
execute(context=None)[source]

對給定的欄位執行檢查。

class airflow.providers.google.cloud.operators.bigquery.BigQueryTableCheckOperator(*, table, checks, partition_clause=None, gcp_conn_id='google_cloud_default', use_legacy_sql=True, location=None, impersonation_chain=None, labels=None, encryption_configuration=None, **kwargs)[source]

繼承自:_BigQueryDbHookMixin, airflow.providers.common.sql.operators.sql.SQLTableCheckOperator, _BigQueryOperatorsEncryptionConfigurationMixin

子類別 SQLTableCheckOperator,以便為 OpenLineage 提供任務 ID 以進行解析。

請參閱基礎類別以了解用法。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南:檢查表格層級資料品質

參數
  • table (str) – 表格名稱

  • checks (dict) – 包含檢查名稱和布林值 SQL 陳述式的字典

  • partition_clause (str | None) – 一個字串 SQL 陳述式,會加入 WHERE 子句以分割資料

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • use_legacy_sql (bool) – 是否使用舊版 SQL (true) 或標準 SQL (false)。

  • location (str | None) – 任務的地理位置。請參閱詳細資訊: https://cloud.google.com/bigquery/docs/locations#specifying_your_location

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

  • labels (dict | None) – 包含表格標籤的字典,傳遞給 BigQuery

  • encryption_configuration (dict | None) –

    (可選) 自訂加密設定 (例如,Cloud KMS 金鑰)。

    encryption_configuration = {
        "kmsKeyName": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
    }
    

template_fields: collections.abc.Sequence[str][source]
conn_id_field = 'gcp_conn_id'[source]
execute(context=None)[source]

在表格上執行給定的檢查。

class airflow.providers.google.cloud.operators.bigquery.BigQueryGetDataOperator(*, dataset_id=None, table_id=None, table_project_id=None, job_id=None, job_project_id=None, project_id=PROVIDE_PROJECT_ID, max_results=100, selected_fields=None, gcp_conn_id='google_cloud_default', location=None, encryption_configuration=None, impersonation_chain=None, deferrable=conf.getboolean('operators', 'default_deferrable', fallback=False), poll_interval=4.0, as_dict=False, use_legacy_sql=True, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator, _BigQueryOperatorsEncryptionConfigurationMixin

提取資料並傳回,可以從 BigQuery 表格或查詢任務結果中提取。

資料可以透過特定欄位縮小範圍,或以整體方式擷取。它會以下列兩種格式之一傳回,具體取決於 “as_dict” 值:1. False (預設) - Python 列表的列表,其中巢狀列表的數量等於擷取的列數。每個巢狀列表代表一列,其中的元素對應於該特定列的欄位值。

範例結果[['Tony', 10], ['Mike', 20]

2. True - Python 字典的列表,其中每個字典代表一列。在每個字典中,鍵是欄位名稱,值是這些欄位的對應值。

範例結果[{'name': 'Tony', 'age': 10}, {'name': 'Mike', 'age': 20}]

參見

如需更多關於如何使用此運算子的資訊,請參閱指南:從表格擷取資料

注意

如果您將欄位傳遞給 selected_fields,其順序與 BQ 表格/任務中已有的欄位順序不同,則資料仍將按照 BQ 表格的順序排列。例如,如果 BQ 表格有 3 個欄位,分別為 [A,B,C],而您在 selected_fields 中傳遞 ‘B,A’,則資料仍將為 'A,B' 的形式。

注意

當使用非可延遲模式的任務 ID 時,任務應處於 DONE 狀態。

範例 - 使用表格從 BigQuery 擷取資料:

get_data = BigQueryGetDataOperator(
    task_id="get_data_from_bq",
    dataset_id="test_dataset",
    table_id="Transaction_partitions",
    table_project_id="internal-gcp-project",
    max_results=100,
    selected_fields="DATE",
    gcp_conn_id="airflow-conn-id",
)

範例 - 使用任務 ID 從 BigQuery 擷取資料:

get_data = BigQueryGetDataOperator(
    job_id="airflow_8999918812727394_86a1cecc69c5e3028d28247affd7563",
    job_project_id="internal-gcp-project",
    max_results=100,
    selected_fields="DATE",
    gcp_conn_id="airflow-conn-id",
)
參數
  • dataset_id (str | None) – 請求表格的資料集 ID。(已套用範本)

  • table_id (str | None) – 請求表格的表格 ID。與 job_id 互斥。(已套用範本)

  • table_project_id (str | None) – (選填) 請求表格的專案 ID。如果為 None,則將從 Hook 的專案 ID 衍生。(已套用範本)

  • job_id (str | None) – 從中擷取查詢結果的任務 ID。與 table_id 互斥。(已套用範本)

  • job_project_id (str | None) – (選填) 執行任務的 Google Cloud 專案。如果為 None,則將從 Hook 的專案 ID 衍生。(已套用範本)

  • project_id (str) – (已棄用) (選填) 將從中傳回資料的專案名稱。如果為 None,則將從 Hook 的專案 ID 衍生。(已套用範本)

  • max_results (int) – 要從表格中擷取的最大記錄 (列) 數。(已套用範本)

  • selected_fields (str | None) – 要傳回的欄位列表 (逗號分隔)。如果未指定,則傳回所有欄位。

  • encryption_configuration (dict | None) –

    (可選) 自訂加密設定 (例如,Cloud KMS 金鑰)。

    encryption_configuration = {
        "kmsKeyName": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
    }
    

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • location (str | None) – 用於操作的位置。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

  • deferrable (bool) – 在可延遲模式下執行運算子

  • poll_interval (float) – (僅限可延遲模式) 輪詢週期,單位為秒,用於檢查任務狀態。預設值為 4 秒。

  • as_dict (bool) – 如果為 True,則以字典列表形式傳回結果,否則以列表的列表形式傳回 (預設值:False)。

  • use_legacy_sql (bool) – 是否使用舊版 SQL (true) 或標準 SQL (false)。

template_fields: collections.abc.Sequence[str] = ('dataset_id', 'table_id', 'table_project_id', 'job_id', 'job_project_id', 'project_id',...[source]
ui_color[source]
generate_query(hook)[source]

如果針對給定的資料集和表格 ID,則產生 SELECT 查詢。

execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

execute_complete(context, event)[source]

充當觸發器觸發時的回呼。

這會立即傳回。它依賴觸發器來拋出例外,否則它會假設執行成功。

class airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyTableOperator(*, dataset_id, table_id, table_resource=None, project_id=PROVIDE_PROJECT_ID, schema_fields=None, gcs_schema_object=None, time_partitioning=None, gcp_conn_id='google_cloud_default', google_cloud_storage_conn_id='google_cloud_default', labels=None, view=None, materialized_view=None, encryption_configuration=None, location=None, cluster_fields=None, impersonation_chain=None, if_exists='log', bigquery_conn_id=None, exists_ok=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

在指定的 BigQuery 資料集中建立新表格,可選擇包含結構描述。

用於 BigQuery 表格的綱要可以使用兩種方式之一指定。您可以直接傳入綱要欄位,也可以將運算子指向 Google Cloud Storage 物件名稱。Google Cloud Storage 中的物件必須是包含綱要欄位的 JSON 檔案。您也可以建立沒有綱要的表格。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南:建立原生表格

參數
  • project_id (str) – 要在其中建立表格的專案。(已套用範本)

  • dataset_id (str) – 要在其中建立表格的資料集。(已套用範本)

  • table_id (str) – 要建立的表格名稱。(已套用範本)

  • table_resource (dict[str, Any] | None) – 表格資源,如文件中所述:https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#Table。如果提供此參數,則所有其他參數都會被忽略。(已套用範本)

  • schema_fields (list | None) –

    如果設定,則為綱要欄位列表,如此處定義:https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load.schema

    範例:

    schema_fields = [
        {"name": "emp_name", "type": "STRING", "mode": "REQUIRED"},
        {"name": "salary", "type": "INTEGER", "mode": "NULLABLE"},
    ]
    

  • gcs_schema_object (str | None) – 包含綱要的 JSON 檔案完整路徑 (已套用範本)。例如:gs://test-bucket/dir1/dir2/employee_schema.json

  • time_partitioning (dict | None) –

    設定選填的時間分割欄位,即根據 API 規格依欄位、類型和到期日進行分割。

  • gcp_conn_id (str) – (選填) 用於連線至 Google Cloud 並與 Bigquery 服務互動的連線 ID。

  • google_cloud_storage_conn_id (str) – (選填) 用於連線至 Google Cloud 並與 Google Cloud Storage 服務互動的連線 ID。

  • labels (dict | None) – 包含表格標籤的字典,傳遞給 BigQuery

範例 (使用 GCS 中的綱要 JSON):

CreateTable = BigQueryCreateEmptyTableOperator(
    task_id="BigQueryCreateEmptyTableOperator_task",
    dataset_id="ODS",
    table_id="Employees",
    project_id="internal-gcp-project",
    gcs_schema_object="gs://schema-bucket/employee_schema.json",
    gcp_conn_id="airflow-conn-id",
    google_cloud_storage_conn_id="airflow-conn-id",
)

對應的綱要檔案 (employee_schema.json)

[
    {"mode": "NULLABLE", "name": "emp_name", "type": "STRING"},
    {"mode": "REQUIRED", "name": "salary", "type": "INTEGER"},
]

範例 (在 DAG 中使用綱要):

CreateTable = BigQueryCreateEmptyTableOperator(
    task_id="BigQueryCreateEmptyTableOperator_task",
    dataset_id="ODS",
    table_id="Employees",
    project_id="internal-gcp-project",
    schema_fields=[
        {"name": "emp_name", "type": "STRING", "mode": "REQUIRED"},
        {"name": "salary", "type": "INTEGER", "mode": "NULLABLE"},
    ],
    gcp_conn_id="airflow-conn-id-account",
    google_cloud_storage_conn_id="airflow-conn-id",
)
參數
  • view (dict | None) –

    (選填) 包含檢視定義的字典。如果設定,它將建立檢視而非表格

  • materialized_view (dict | None) – (選填) 具體化檢視定義。

  • encryption_configuration (dict | None) –

    (可選) 自訂加密設定 (例如,Cloud KMS 金鑰)。

    encryption_configuration = {
        "kmsKeyName": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
    }
    

  • location (str | None) – 用於操作的位置。

  • cluster_fields (list[str] | None) –

    (選填) 用於叢集處理的欄位。BigQuery 支援分割表格和非分割表格的叢集處理。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

  • if_exists (str) – 如果表格已存在,Airflow 應執行什麼操作。如果設定為 log,TI 將傳遞至成功,並記錄錯誤訊息。設定為 ignore 以忽略錯誤,設定為 fail 以使 TI 失敗,以及設定為 skip 以跳過它。

  • exists_ok (bool | None) – 已棄用 - 請改用 if_exists=”ignore”

template_fields: collections.abc.Sequence[str] = ('dataset_id', 'table_id', 'table_resource', 'project_id', 'gcs_schema_object', 'labels',...[source]
template_fields_renderers[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

get_openlineage_facets_on_complete(task_instance)[source]
class airflow.providers.google.cloud.operators.bigquery.BigQueryCreateExternalTableOperator(*, bucket=None, source_objects=None, destination_project_dataset_table=None, table_resource=None, schema_fields=None, schema_object=None, gcs_schema_bucket=None, source_format=None, autodetect=False, compression=None, skip_leading_rows=None, field_delimiter=None, max_bad_records=0, quote_character=None, allow_quoted_newlines=False, allow_jagged_rows=False, gcp_conn_id='google_cloud_default', google_cloud_storage_conn_id='google_cloud_default', src_fmt_configs=None, labels=None, encryption_configuration=None, location=None, impersonation_chain=None, bigquery_conn_id=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

使用來自 Google Cloud Storage 的資料建立新的外部表格。

BigQuery 表格所使用的結構描述可以透過兩種方式指定。您可以直接傳入結構描述欄位,或者您可以將運算子指向 Google Cloud Storage 物件名稱。Google Cloud Storage 中的物件必須是包含結構描述欄位的 JSON 檔案。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南: 建立外部表格

參數
  • bucket (str | None) – 外部表格指向的儲存桶。(已套用範本)

  • source_objects (list[str] | None) – 要指向表格的 Google Cloud Storage URI 清單。如果 source_format 為 ‘DATASTORE_BACKUP’,則清單必須僅包含單個 URI。

  • destination_project_dataset_table (str | None) – 要載入資料的點狀 (<project>.)<dataset>.<table> BigQuery 表格(已套用範本)。如果未包含 <project>,專案將會是連線 json 中定義的專案。

  • schema_fields (list | None) –

    如果設定,則為綱要欄位列表,如此處定義:https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load.schema

    範例:

    schema_fields = [
        {"name": "emp_name", "type": "STRING", "mode": "REQUIRED"},
        {"name": "salary", "type": "INTEGER", "mode": "NULLABLE"},
    ]
    

    當 source_format 為 ‘DATASTORE_BACKUP’ 時不應設定。

  • table_resource (dict[str, Any] | None) – 表格資源,如文件中所述: https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#Table 如果提供,則所有其他參數都會被忽略。將會解析來自物件的外部結構描述。

  • schema_object (str | None) – 如果設定,則為指向 .json 檔案的 GCS 物件路徑,其中包含表格的結構描述。(已套用範本)

  • gcs_schema_bucket (str | None) – 儲存結構描述 JSON 的 GCS 儲存桶名稱(已套用範本)。預設值為 self.bucket。

  • source_format (str | None) – 資料的檔案格式。

  • autodetect (bool) – 嘗試自動偵測結構描述和格式選項。當明確指定時,將會採用 schema_fields 和 schema_object 選項。 https://cloud.google.com/bigquery/docs/schema-detect#schema_auto-detection_for_external_data_sources

  • compression (str | None) – (選用)資料來源的壓縮類型。可能的值包括 GZIP 和 NONE。預設值為 NONE。此設定會被 Google Cloud Bigtable、Google Cloud Datastore 備份和 Avro 格式忽略。

  • skip_leading_rows (int | None) – 從 CSV 載入時要跳過的列數。

  • field_delimiter (str | None) – 用於 CSV 的分隔符號。

  • max_bad_records (int) – BigQuery 在執行作業時可以忽略的最大錯誤記錄數。

  • quote_character (str | None) – 用於在 CSV 檔案中引用資料區段的值。

  • allow_quoted_newlines (bool) – 是否允許引用的換行符號(true)或不允許(false)。

  • allow_jagged_rows (bool) – 接受缺少尾隨選用欄位的列。遺失的值會被視為 null。如果為 false,則缺少尾隨欄位的記錄會被視為錯誤記錄,並且如果錯誤記錄太多,則會在作業結果中傳回無效錯誤。僅適用於 CSV,對於其他格式則忽略。

  • gcp_conn_id (str) – (選填) 用於連線至 Google Cloud 並與 Bigquery 服務互動的連線 ID。

  • google_cloud_storage_conn_id (str) – (選用)用於連線至 Google Cloud 並與 Google Cloud Storage 服務互動的連線 ID。

  • src_fmt_configs (dict | None) – 設定特定於來源格式的選用欄位

  • labels (dict | None) – 包含表格標籤的字典,傳遞給 BigQuery

  • encryption_configuration (dict | None) –

    (可選) 自訂加密設定 (例如,Cloud KMS 金鑰)。

    encryption_configuration = {
        "kmsKeyName": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
    }
    

  • location (str | None) – 用於操作的位置。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

template_fields: collections.abc.Sequence[str] = ('bucket', 'source_objects', 'schema_object', 'gcs_schema_bucket',...[source]
template_fields_renderers[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

get_openlineage_facets_on_complete(task_instance)[source]
class airflow.providers.google.cloud.operators.bigquery.BigQueryDeleteDatasetOperator(*, dataset_id, project_id=PROVIDE_PROJECT_ID, delete_contents=False, gcp_conn_id='google_cloud_default', impersonation_chain=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

從 BigQuery 中的專案刪除現有的資料集。

https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets/delete

參見

如需更多關於如何使用此運算子的資訊,請參閱指南: 刪除資料集

參數
  • project_id (str) – 資料集的專案 ID。

  • dataset_id (str) – 要刪除的資料集。

  • delete_contents (bool) – (選用)即使資料集不是空的,是否強制刪除。如果設定為 True,將會刪除資料集中的所有表格(如果有的話)。如果設定為 False 且資料集不是空的,則會引發 HttpError 400:「{dataset_id} 仍在使用中」。預設值為 False。

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

範例:

delete_temp_data = BigQueryDeleteDatasetOperator(
    dataset_id="temp-dataset",
    project_id="temp-project",
    delete_contents=True,  # Force the deletion of the dataset as well as its tables (if any).
    gcp_conn_id="_my_gcp_conn_",
    task_id="Deletetemp",
    dag=dag,
)
template_fields: collections.abc.Sequence[str] = ('dataset_id', 'project_id', 'impersonation_chain')[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

class airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyDatasetOperator(*, dataset_id=None, project_id=PROVIDE_PROJECT_ID, dataset_reference=None, location=None, gcp_conn_id='google_cloud_default', impersonation_chain=None, if_exists='log', exists_ok=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

在 BigQuery 中為您的專案建立新的資料集。

https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets#resource

參見

如需更多關於如何使用此運算子的資訊,請參閱指南: 建立資料集

參數
  • project_id (str) – 我們要在其中建立資料集的專案名稱。

  • dataset_id (str | None) – 資料集的 ID。如果 dataset_reference 中有 datasetId,則不需要提供。

  • location (str | None) – 資料集應駐留的地理位置。

  • dataset_reference (dict | None) – 可以與請求內文一起提供的資料集參考。更多資訊: https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets#resource

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

  • if_exists (str) –

    如果資料集存在,Airflow 應該怎麼做。如果設定為 log,則 TI 將傳遞到成功狀態,並記錄錯誤訊息。設定為 ignore 以忽略錯誤,設定為 fail 以使 TI 失敗,並設定為 skip 以跳過它。範例

    create_new_dataset = BigQueryCreateEmptyDatasetOperator(
        dataset_id='new-dataset',
        project_id='my-project',
        dataset_reference={"friendlyName": "New Dataset"}
        gcp_conn_id='_my_gcp_conn_',
        task_id='newDatasetCreator',
        dag=dag)
    

  • exists_ok (bool | None) – 已棄用 - 請改用 if_exists=”ignore”

template_fields: collections.abc.Sequence[str] = ('dataset_id', 'project_id', 'dataset_reference', 'impersonation_chain')[source]
template_fields_renderers[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

class airflow.providers.google.cloud.operators.bigquery.BigQueryGetDatasetOperator(*, dataset_id, project_id=PROVIDE_PROJECT_ID, gcp_conn_id='google_cloud_default', impersonation_chain=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

取得由 ID 指定的資料集。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南: 取得資料集詳細資訊

參數
  • dataset_id (str) – 資料集的 ID。如果 dataset_reference 中有 datasetId,則不需要提供。

  • project_id (str) – 我們要在其中建立資料集的專案名稱。如果 dataset_reference 中有 projectId,則不需要提供。

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

template_fields: collections.abc.Sequence[str] = ('dataset_id', 'project_id', 'impersonation_chain')[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

class airflow.providers.google.cloud.operators.bigquery.BigQueryGetDatasetTablesOperator(*, dataset_id, project_id=PROVIDE_PROJECT_ID, max_results=None, gcp_conn_id='google_cloud_default', impersonation_chain=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

檢索指定資料集中的表格列表。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南: 列出資料集中的表格

參數
  • dataset_id (str) – 請求資料集的資料集 ID。

  • project_id (str) – (選用)請求資料集的專案。如果為 None,將會使用 self.project_id。

  • max_results (int | None) – (選用)要傳回的最大表格數。

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

template_fields: collections.abc.Sequence[str] = ('dataset_id', 'project_id', 'impersonation_chain')[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

class airflow.providers.google.cloud.operators.bigquery.BigQueryUpdateTableOperator(*, table_resource, fields=None, dataset_id=None, table_id=None, project_id=PROVIDE_PROJECT_ID, gcp_conn_id='google_cloud_default', impersonation_chain=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

更新 BigQuery 中專案的表格。

使用 fields 指定要更新的表格欄位。如果欄位在 fields 中列出,並且在表格中為 None,則會將其刪除。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南: 更新表格

參數
  • dataset_id (str | None) – 資料集的 ID。如果 table_reference 中有 datasetId,則不需要提供。

  • table_id (str | None) – 資料表的 ID。如果 table_reference 中有 tableId,則無需提供。

  • table_resource (dict[str, Any]) – 將與請求 body 一起提供的資料集資源。https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#resource

  • fields (list[str] | None) – 要變更的 table 欄位,以 Table 屬性 (例如 “friendly_name”) 拼寫。

  • project_id (str) – 我們要在其中建立資料表的專案名稱。如果 table_reference 中有 projectId,則無需提供。

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

template_fields: collections.abc.Sequence[str] = ('dataset_id', 'table_id', 'project_id', 'impersonation_chain')[source]
template_fields_renderers[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

class airflow.providers.google.cloud.operators.bigquery.BigQueryUpdateDatasetOperator(*, dataset_resource, fields=None, dataset_id=None, project_id=PROVIDE_PROJECT_ID, gcp_conn_id='google_cloud_default', impersonation_chain=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

更新 BigQuery 中專案的資料集。

使用 fields 指定要更新的資料集欄位。如果 fields 中列出了某個欄位,且該欄位在資料集中為 None,則會將其刪除。如果未提供 fields,則將使用提供的 dataset_resource 的所有欄位。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南:更新資料集

參數
  • dataset_id (str | None) – 資料集的 ID。如果 dataset_reference 中有 datasetId,則不需要提供。

  • dataset_resource (dict[str, Any]) – 將與請求 body 一起提供的資料集資源。https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets#resource

  • fields (list[str] | None) – 要變更的資料集屬性 (例如 “friendly_name”)。

  • project_id (str) – 我們要在其中建立資料集的專案名稱。如果 dataset_reference 中有 projectId,則不需要提供。

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

template_fields: collections.abc.Sequence[str] = ('dataset_id', 'project_id', 'impersonation_chain')[source]
template_fields_renderers[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

class airflow.providers.google.cloud.operators.bigquery.BigQueryDeleteTableOperator(*, deletion_dataset_table, gcp_conn_id='google_cloud_default', ignore_if_missing=False, location=None, impersonation_chain=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

刪除 BigQuery 表格。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南:刪除資料表

參數
  • deletion_dataset_table (str) – 點狀表示法 (<project>.|<project>:)<dataset>.<table>,指示要刪除的資料表。(可使用範本)

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • ignore_if_missing (bool) – 如果為 True,即使請求的資料表不存在,仍會傳回成功。

  • location (str | None) – 用於操作的位置。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

template_fields: collections.abc.Sequence[str] = ('deletion_dataset_table', 'impersonation_chain')[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

class airflow.providers.google.cloud.operators.bigquery.BigQueryUpsertTableOperator(*, dataset_id, table_resource, project_id=PROVIDE_PROJECT_ID, gcp_conn_id='google_cloud_default', location=None, impersonation_chain=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

Upsert 到 BigQuery 表格。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南:Upsert table

參數
  • dataset_id (str) – 點狀表示法 (<project>.|<project>:)<dataset>,指示要更新的資料集。(可使用範本)

  • table_resource (dict) – 資料表資源。請參閱 https://cloud.google.com/bigquery/docs/reference/v2/tables#resource

  • project_id (str) – 我們要在其中更新資料集的專案名稱。如果 dataset_reference 中有 projectId,則無需提供。

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • location (str | None) – 用於操作的位置。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

template_fields: collections.abc.Sequence[str] = ('dataset_id', 'table_resource', 'impersonation_chain', 'project_id')[source]
template_fields_renderers[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

class airflow.providers.google.cloud.operators.bigquery.BigQueryUpdateTableSchemaOperator(*, schema_fields_updates, dataset_id, table_id, include_policy_tags=False, project_id=PROVIDE_PROJECT_ID, gcp_conn_id='google_cloud_default', impersonation_chain=None, location=None, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperator

更新 BigQuery 表格結構描述。

根據提供的 schema_fields_updates 參數內容,更新資料表結構描述上的欄位。提供的結構描述不必完整,如果欄位已存在於結構描述中,您只需要提供要修補的項目的鍵和值,只需確保已設定 “name” 鍵即可。

參見

如需更多關於如何使用此運算子的資訊,請參閱指南:更新資料表結構描述

參數
  • schema_fields_updates (list[dict[str, Any]]) –

    部分結構描述資源。請參閱 https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#TableSchema

    schema_fields_updates = [
        {"name": "emp_name", "description": "Some New Description"},
        {
            "name": "salary",
            "policyTags": {"names": ["some_new_policy_tag"]},
        },
        {
            "name": "departments",
            "fields": [
                {"name": "name", "description": "Some New Description"},
                {"name": "type", "description": "Some New Description"},
            ],
        },
    ]
    

  • include_policy_tags (bool) – (選填) 如果設定為 True,則原則標籤將包含在更新請求中,即使未變更也需要特殊權限 (預設為 False),請參閱 https://cloud.google.com/bigquery/docs/column-level-security#roles

  • dataset_id (str) – 點狀表示法 (<project>.|<project>:)<dataset>,指示要更新的資料集。(可使用範本)

  • table_id (str) – 請求的資料表之資料表 ID。(可使用範本)

  • project_id (str) – 我們要在其中更新資料集的專案名稱。如果 dataset_reference 中有 projectId,則無需提供。

  • gcp_conn_id (str) – (可選) 用於連線到 Google Cloud 的連線 ID。

  • location (str | None) – 用於操作的位置。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

template_fields: collections.abc.Sequence[str] = ('schema_fields_updates', 'dataset_id', 'table_id', 'project_id', 'impersonation_chain')[source]
template_fields_renderers[source]
ui_color[source]
execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

class airflow.providers.google.cloud.operators.bigquery.BigQueryInsertJobOperator(configuration, project_id=PROVIDE_PROJECT_ID, location=None, job_id=None, force_rerun=True, reattach_states=None, gcp_conn_id='google_cloud_default', impersonation_chain=None, cancel_on_kill=True, result_retry=DEFAULT_RETRY, result_timeout=None, deferrable=conf.getboolean('operators', 'default_deferrable', fallback=False), poll_interval=4.0, **kwargs)[source]

繼承自:airflow.providers.google.cloud.operators.cloud_base.GoogleCloudBaseOperatorairflow.providers.google.cloud.openlineage.mixins._BigQueryOpenLineageMixin

執行 BigQuery 任務。

等待工作完成並傳回工作 ID。此運算子的運作方式如下:

  • 它使用工作的組態或 UUID (如果 force_rerun 為 True) 計算工作的唯一雜湊值

  • 以以下形式建立 job_id

    [provided_job_id | airflow_{dag_id}_{task_id}_{exec_date}]_{uniqueness_suffix}

  • 使用 job_id 提交 BigQuery 工作

  • 如果具有給定 ID 的工作已存在,則當工作尚未完成且其

    狀態在 reattach_states 中時,它會嘗試重新附加到該工作。如果工作已完成,運算子將引發 AirflowException

使用 force_rerun 將每次提交新工作,而不會附加到已存在的工作。

如需工作定義,請參閱此處

參見

如需更多關於如何使用此運算子的資訊,請參閱指南:執行 BigQuery 工作

參數
  • configuration (dict[str, Any]) – configuration 參數直接對應到工作物件中的 BigQuery configuration 欄位。如需更多詳細資訊,請參閱 https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfiguration

  • job_id (str | None) – 工作的 ID。除非 force_rerun 為 True,否則它將附加工作組態的雜湊值。ID 必須僅包含字母 (a-z、A-Z)、數字 (0-9)、底線 (_) 或破折號 (-)。最大長度為 1,024 個字元。如果未提供,則將產生 UUID。

  • force_rerun (bool) – 如果為 True,則運算子將使用 UUID 的雜湊值作為工作 ID 後綴

  • reattach_states (set[str] | None) – BigQuery 工作狀態的集合,在這些狀態下,我們應重新附加到工作。應為非最終狀態。

  • project_id (str) – 執行工作的 Google Cloud 專案

  • location (str | None) – 工作執行的位置

  • gcp_conn_id (str) – 用於連線至 Google Cloud 的連線 ID。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳戶,用於使用短期憑證模擬身分,或用於取得列表中最後一個帳戶的 access_token 所需的鏈式帳戶列表,該帳戶將在請求中被模擬身分。如果設定為字串,則帳戶必須授予原始帳戶 Service Account Token Creator IAM 角色。如果設定為序列,則列表中的身分必須將 Service Account Token Creator IAM 角色授予直接前一個身分,列表中的第一個帳戶將此角色授予原始帳戶(已範本化)。

  • cancel_on_kill (bool) – 旗標,指示在呼叫 on_kill 時是否取消 Hook 的工作

  • result_retry (google.api_core.retry.Retry) – 如何重試檢索列的 result 呼叫

  • result_timeout (float | None) – 在使用 result_retry 之前,等待 result 方法的秒數

  • deferrable (bool) – 在可延遲模式下執行運算子

  • poll_interval (float) – (僅限可延遲模式) 輪詢週期,單位為秒,用於檢查任務狀態。預設值為 4 秒。

template_fields: collections.abc.Sequence[str] = ('configuration', 'job_id', 'impersonation_chain', 'project_id')[source]
template_ext: collections.abc.Sequence[str] = ('.json', '.sql')[source]
template_fields_renderers[source]
ui_color[source]
sql()[source]
prepare_template()[source]

在樣板欄位被其內容替換後執行。

如果您需要您的物件在樣板呈現之前更改檔案內容,則應覆寫此方法來執行此操作。

execute(context)[source]

衍生自建立運算子時。

Context 是與呈現 jinja 範本時使用的字典相同的字典。

有關更多上下文,請參閱 get_template_context。

execute_complete(context, event)[source]

充當觸發器觸發時的回呼。

這會立即傳回。它依賴觸發器來拋出例外,否則它會假設執行成功。

on_kill()[source]

覆寫此方法以在任務實例被終止時清理子進程。

在運算子中任何使用 threading、subprocess 或 multiprocessing 模組的情況都需要清理,否則會留下幽靈進程。

此條目是否有幫助?