BigQueryValueCheckOperator 和标准 sql
Posted
技术标签:
【中文标题】BigQueryValueCheckOperator 和标准 sql【英文标题】:BigQueryValueCheckOperator and standard sql 【发布时间】:2018-05-31 19:57:54 【问题描述】:我想知道是否有办法在apache气流1.9中将标准sql与气流BigQueryValueCheckOperator一起使用气流BigQueryOperator通常有这样的标志
use_legacy_sql=False
禁用旧版 sql。我找不到使用 BigQueryValueCheckOperator 实现此目的的方法。
由于我想在 where 子句中使用 _PARTITIONTIME
,所以暂时不能在旧 sql 中重写查询。
谢谢。
【问题讨论】:
如果你把#standardSQL
放在查询的开头是否有效?
@ElliottBrossard 不幸的是,没有,因为 BigQueryHook 会将 use_legacy_sql 标志默认设置为 True,这与 #standardSql
冲突一旦此问题得到解决 issues.apache.org/jira/browse/AIRFLOW-1874,它将起作用。
【参考方案1】:
目前,您不能将 StandardSQL 与此运算符一起使用。
但是,对于您的用例,您仍然可以将 _PARTITIONTIME
与 Legacy Sql 一起使用,如文档中所述:https://cloud.google.com/bigquery/docs/querying-partitioned-tables#querying_ingestion-time_partitioned_tables_using_time_zones
示例查询:
#legacySQL
SELECT
field1
FROM
mydataset.partitioned_table
WHERE
_PARTITIONTIME BETWEEN TIMESTAMP("2016-05-01")
AND TIMESTAMP("2016-05-06")
AND DATE_ADD([MY_TIMESTAMP_FIELD], 8, 'HOUR') BETWEEN TIMESTAMP("2016-05-01 12:00:00")
AND TIMESTAMP("2016-05-05 14:00:00");
【讨论】:
以上是关于BigQueryValueCheckOperator 和标准 sql的主要内容,如果未能解决你的问题,请参考以下文章