具有多个_TABLE_SUFFIX条件的嵌套查询的意外结果

时间:2017-11-10 22:15:03

标签: 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的单行。

这是预期的行为吗?

1 个答案:

答案 0 :(得分:0)

可以通过将_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