【问题标题】:Unexpected results for a nested query with multiple _TABLE_SUFFIX conditions具有多个 _TABLE_SUFFIX 条件的嵌套查询的意外结果
【发布时间】:2017-11-10 22:15:02
【问题描述】:

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

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

这是预期的行为吗?

【问题讨论】:

  • 这是一个错误!内部报告...谢谢!!

标签: google-bigquery


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-06-27
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多