【问题标题】:Error in Google BigQuery <EOF>Google BigQuery <EOF> 中的错误
【发布时间】:2016-12-12 01:45:52
【问题描述】:

我是 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;

【问题讨论】:

  • 使用下面 Mikhail 的建议启用标准 SQL 后,您需要对查询进行一些其他转换,即: * 使用 CAST(TIMESTAMP_MICROS(event_dim.timestamp_micros) AS DATE)。 * 使用显式数组而不是GENERATE_SERIES。我在这里提交了序列/数组生成的功能请求,这将填补这个空白:code.google.com/p/google-bigquery/issues/detail?id=646
  • 作为更新,GENERATE_DATE_ARRAY 现在可在 BigQuery 中使用。例如,在上面的查询中,您可以使用FROM UNNEST(GENERATE_DATE_ARRAY(DATE_SUB(CURRENT_DATE(), INTERVAL 6 DAY), CURRENT_DATE(), INTERVAL 1 DAY)) AS d LEFT JOIN ...

标签: sql google-bigquery data-visualization


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    Show Options 下取消选中 Use Legacy Sql

    【讨论】:

      【解决方案3】:

      我们在通过 Java SDK 运行查询时也遇到了同样的异常,为了修复它,我们传递了类似 `project_id.dataset_id.table` 的表名

      【讨论】:

        【解决方案4】:

        使用终端命令访问 BQ:

        对于忽略这些情况:“遇到”、“WIT​​H”、“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;'
        

        【讨论】:

          【解决方案5】:

          您的查询语法错误,因此我修复了该问题并在编写任何查询时尝试#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 day), date_sub(current_date(), INTERVAL 1 day))) d left join t1 on t1.date = cast(d as date) 按 1 分组 按 1 排序;

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多