【问题标题】:Is there an operator in Airflow to create a table from a query in BigQuery?Airflow 中是否有操作员可以根据 BigQuery 中的查询创建表?
【发布时间】:2021-07-29 11:49:10
【问题描述】:

我正在寻找类似的东西

CreateBQTableOperator(
    query='select * from my_table',
    output_table='my_other_table'
)

我正在寻找已经存在的运算符或此类运算符的代码。运算符应采用另一个参数来决定是在重新创建表之前删除表(如果表存在)还是将查询附加到当前表。

【问题讨论】:

    标签: python google-bigquery airflow


    【解决方案1】:

    您可以将BigQueryExecuteQueryOperatordestination_dataset_table 参数用作:

    from airflow.providers.google.cloud.operators.bigquery import BigQueryExecuteQueryOperator
    
    execute_query_save = BigQueryExecuteQueryOperator(
        task_id="execute_query_save",
        sql="SELECT * FROM my_data_set.table1",
        use_legacy_sql=False,
        destination_dataset_table="my_data_set.table2",
        location="southamerica-east1",
        write_disposition="WRITE_EMPTY",
        create_disposition="CREATE_IF_NEEDED",
    )
    

    您可以通过设置参数值来控制请求的行为(参考来自Google docs 的值)。

    write_disposition 选项是:

    WRITE_TRUNCATE:如果表已存在,BigQuery 会覆盖表数据并使用查询结果中的架构。

    WRITE_APPEND:如果表已存在,BigQuery 会将数据附加到表中。

    WRITE_EMPTY:如果表已存在且包含数据,则作业结果中返回“重复”错误。

    create_disposition 选项是:

    CREATE_IF_NEEDED:如果表不存在,BigQuery 会创建表。

    CREATE_NEVER:表必须已经存在。如果没有,则在作业结果中返回“notFound”错误。

    【讨论】:

      猜你喜欢
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2010-10-20
      • 2018-07-21
      • 1970-01-01
      相关资源
      最近更新 更多