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 与此运算符一起使用。

但是,对于您的用例,您仍然可以将 _PARTITIONTIMELegacy 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的主要内容,如果未能解决你的问题,请参考以下文章