为了账号安全,请及时绑定邮箱和手机立即绑定

BigQuery - 在 Airflow 运算符中使用 table_resource

BigQuery - 在 Airflow 运算符中使用 table_resource

森林海 2024-01-16 15:00:35
我想使用 Airflow 创建一个 BigQuery 表(通过 bigquery hook 或 bigquery 空表创建器)。不幸的是,无法使用范围分区进行创建。有人提出了 PR,但为了最小化气流操作员界面,他们建议跳过它。他们给出了这样的解决方法。you can use the table_resource argument to pass any table definition you want, no need to specify every single parameter.我不清楚,在气流中如何使用与范围分区相关的 JSON。有人能给我一个如何使用/实施它的例子吗?我尝试了以下操作,但它创建了没有分区的表。(它用于时间分区,但 BQ 运算符有一个参数,但我想尝试使用table_resource.resource="""{    "TimePartitioning": {        "type": "DAY",        "field": "created_at"    }}"""schema="""[{"mode": "REQUIRED", "name": "code", "type": "STRING"}, {"mode": "REQUIRED", "name": "created_at", "type": "DATETIME"}, {"mode": "REQUIRED", "name": "service_name", "type": "STRING"}]"""def bq_create(**kwargs):    table_schema = 'bhuvi'    table_name = 'sampletable'    create = BigQueryCreateEmptyTableOperator (        task_id='create_bq_{}'.format(table_name),        project_id = 'myproject',        dataset_id=table_schema,        table_id=table_name,        schema_fields=json.loads(schema),        bigquery_conn_id='bigquery_default',        table_resource =json.loads(resource)        )    create.execute(context=kwargs)bqcreate = PythonOperator(            task_id="bqcreate",            python_callable=bq_create,            provide_context=True,            dag=dag        )bqcreate
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

根据文档,时间分区的正确键是timePartitioning,这不是问题吗? https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#Table


查看完整回答
反对 回复 2024-01-16
  • 1 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信