SELECT * FROM (VALUES ...) AS t 的 BigQuery 等效项是什么

vil*_*asv 5 google-bigquery

我正在尝试使用以下 PosgreSQL 语法设置带有常量表的 CTE:

WITH rates AS (
  SELECT * FROM (
    VALUES
      (2017, 2018, 0.1),
      (2016, 2017, 0.1),
      (2015, 2016, 0.2),
      (2014, 2015, 0.3)
  ) AS t(init, end, rate)
)
SELECT * FROM my_bq_table as my
  JOIN rates as r ON my.year = r.init;
Run Code Online (Sandbox Code Playgroud)

但我明白了,Syntax error: Expected keyword JOIN but got ","因为显然 BigQuery 无法将语法识别VALUES [(tuple)]为与from-clausePostgreSQL 完全相同的语法。

实现类似 CTE 的最简单方法是什么?

Mik*_*ant 9

考虑以下方法

WITH rates AS (
  SELECT * FROM UNNEST([
      STRUCT<init INT64, `end` INT64, rate FLOAT64>
      (2017, 2018, 0.1),
      (2016, 2017, 0.1),
      (2015, 2016, 0.2),
      (2014, 2015, 0.3)
  ])
)
SELECT * FROM rates     
Run Code Online (Sandbox Code Playgroud)

带输出

在此输入图像描述