簡體   English   中英

Airflow BigQuery Operator - 將一張表復制到另一張表

[英]Airflow BigQuery Operator - Copying One Table to Another Table

使用 Airflow 中的 BigQueryOperator,如何將一個 BigQuery 表(具有所有字符串的架構)復制到另一個 BigQuery 表(具有字符串、整數和浮點數的架構)? 請注意,table_1 和 table_2 已在 BigQuery 中使用以下架構創建,table_1 和 table_2 的架構不應更改。

table_1 具有以下架構和數據:

Column_1 (string)  Column_2 (string)  Column_3 (string)  Column_4 (string)  Column_5 (string)
ABC                1                  1                  1.5                1
DEF                2                  2                  2.5                2 
HIJ                3                  3                  3.5                3 

table_2 具有以下架構和數據:

Column_1 (string)  Column_2 (integer) Column_3 (integer) Column_4 (float)  Column_5 (integer)
ABC                1                  1                  1.5                1
DEF                2                  2                  2.5                2 
HIJ                3                  3                  3.5                3 

為完成此任務,我嘗試使用以下 BigQueryOperator,但收到錯誤消息“查詢列 2 的類型為 STRING,無法插入到列 Column_2,其類型為 INT64”。

BigQuery_Task = BigQueryOperator(
     task_id = "Copy_To_New_Table",
     sql = "INSERT `gcp_project.gcp_dataset.table_2` (Column_1, Column_2, Column_3, Column_4, Column_5) SELECT Column_1, Column_2, Column_3, Column_4, Column_5 FROM `gcp_project.gcp_dataset.table_1`", 
     write_disposition = "WRITE_TRUNCATE",
     location = "US", 
     bigquery_conn_id = "conn_id",
     use_legacy_sql = False, 
     dag = dag)

首先,刪除這部分調用:

 destination_dataset_table = "gcp_project.gcp_dataset.table_1

然后編寫將運行的 SQL 命令。 BigQuery 通常需要顯式轉換:

INSERT `gcp_project.gcp_dataset.table_2` (Column_1, Column_2, Column_3, Column_4, Column_5)
    SELECT CAST(Column_1 as int64),
           CAST(Column_2 as int64) as Column_2, 
           CAST(Column_3 as int64) as Column_3, 
           CAST(Column_4 as int64) as Column_4, 
           CAST(Column_5 as int64) as Column_5 
    FROM `gcp_project.gcp_dataset.table_1`"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM