Google BigQuery 中出现错误 <EOF>

问题描述 投票:0回答:6

我是 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;
sql google-bigquery data-visualization
6个回答
14
投票

我需要有关查询错误的帮助:“在行中遇到”“WITH”“with”“ 1,第 1 列。预期:EOF"

BigQuery 标准 SQL 支持WITH - 请参阅启用标准 SQL - 您应该启用标准 SQL


3
投票

显示选项下取消选中使用旧版Sql


1
投票

使用终端命令访问 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;'

0
投票

我们在通过 Java SDK 运行查询时也遇到了相同的异常,为了修复它,我们传递了表名称,如

`project_id.dataset_id.table`


0
投票

您的查询语法错误,因此我修复了该问题并在编写任何查询时尝试#standardsql,这样您就不需要进行任何设置更改。尝试下面的代码并添加您的整个查询。

标准SQL

与 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 排序;


0
投票

我正在跑步

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)

并为我工作。

© www.soinside.com 2019 - 2024. All rights reserved.