我是 Google BigQuery 的新手。我需要有关查询错误的帮助:
“在第 1 行第 1 列遇到了”“WITH”“with”“。期望: EOF”
with
t1 as
(
select
date(USEC_TO_TIMESTAMP(event_dim.timestamp_micros)) date, event_dim.name
from
[myfoody-1313:it_rawfish_myfoody_ANDROID.app_events_20160727]
where
event_dim.name='pv_detail' and event_dim.params.key='item_id' and
event_dim.params.value.string_value='31'
)
select
date(d) as day, count(event_dim.name)
from
generate_series(current_date - interval '6 day', current_date, '1 day') d
left join t1 on t1.date = d
group by day
order by day;
我需要有关查询错误的帮助:“在行中遇到”“WITH”“with”“ 1,第 1 列。预期:EOF"
BigQuery 标准 SQL 支持WITH - 请参阅启用标准 SQL - 您应该启用标准 SQL
在显示选项下取消选中使用旧版Sql
使用终端命令访问 BQ:
对于忽略这些情况:“遇到”、“WITH”、“with”位于第 1 行第 1 列。“预期:EOF”
用途:
--use_legacy_sql=false
终端正常查询示例:
bq query --use_legacy_sql=false 'SELECT * from `table_name` where published_date >= "2020-05-05" limit 10;'
我们在通过 Java SDK 运行查询时也遇到了相同的异常,为了修复它,我们传递了表名称,如
`project_id.dataset_id.table`
您的查询语法错误,因此我修复了该问题并在编写任何查询时尝试#standardsql,这样您就不需要进行任何设置更改。尝试下面的代码并添加您的整个查询。
与 t1 为 ( 选择 日期((当前时间戳()))日期, “xyz”名称 ——来自
-- 哪里 -- event_dim.name='pv_detail' 和 event_dim.params.key='item_id' 和 -- event_dim.params.value.string_value='31' )
选择 演员(d 作为日期)日, 计数(姓名) 来自 UNNEST(GENERATE_DATE_ARRAY(date_sub(CURRENT_DATE(), INTERVAL 6 天), date_sub(current_date(), INTERVAL 1 天))) d 在 t1.date 上左连接 t1 = cast(d as date) 按 1 分组 按 1 排序;
我正在跑步
self.hook.run_query(sql=sql_query)
来自 Airflow BigQuery Hook,我收到了进一步的错误消息:
[Try using standard SQL (https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql)]
根据我提到的第一个文档:
use_legacy_sql (bool | None) – 是否使用旧版 SQL (true) 还是标准 SQL (false)。如果没有,默认为 self.use_legacy_sql。
所以我把它改为:
self.hook.run_query(sql=sql_query, use_legacy_sql=False)
并为我工作。