google-bigquery - 具有多个 _TABLE_SUFFIX 条件的嵌套查询出现意外结果

标签 google-bigquery

考虑以下查询(标准语法):

WITH
  v AS (
  SELECT
    _TABLE_SUFFIX AS y,
    *
  FROM
    `bigquery-public-data.noaa_gsod.gsod*`
  WHERE
    _TABLE_SUFFIX > '2000' )
SELECT
  y,
  COUNT(1) c
FROM
  v
WHERE
  y IN ('2016',
    '2017')
GROUP BY
  y

我期望它返回两行:

2016 4292866     
2017 3683760

但是,仅返回第一个。我觉得很奇怪。这有什么原因吗?

如果从子查询中删除 WHERE _TABLE_SUFFIX > '2000',则两行都会按预期返回。此外,如果您从底部列表中删除 2016,则将正确返回 2017 的单行。

这是预期的行为吗?

最佳答案

可以通过将 _table_suffix 转换为整数来解决这个问题
信用归Przemek Iwańczak .

WITH
  v AS (
  SELECT
    _TABLE_SUFFIX AS y,
    *
  FROM
    `bigquery-public-data.noaa_gsod.gsod*`
  WHERE CAST(_TABLE_SUFFIX as INT64) > 2000
    )
SELECT
  y,
  COUNT(1) c
FROM
  v
WHERE
  y IN ('2016',
    '2017')
GROUP BY
  y

关于google-bigquery - 具有多个 _TABLE_SUFFIX 条件的嵌套查询出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47231947/

相关文章:

google-bigquery - REGEXP_CONTAINS 无法识别

node.js - BigQuery Node.js API 权限错误

javascript - BigQuery 一个数据字段中有多种数据类型

google-bigquery - 如何在 Google Data Studio 中按 2 个或更多用户属性过滤事件?

google-sheets - 在运行 BigQuery 作业之前确定资源使用情况

sql - 通过在 Big Query 中插入日期记录来填充数据

hadoop - BigQuery 是否给出聚合的确切值?

google-bigquery - 用户的最后一个事件

google-bigquery - 大查询 : Unable to delete table

google-bigquery - 如何让不同的用户访问不同的行而不在 BigQuery 中创建单独的 View ?