【问题标题】:How to declare a list/array/struct type variable in BigQuery如何在 BigQuery 中声明列表/数组/结构类型变量
【发布时间】:2020-04-24 03:20:45
【问题描述】:

如何在 BigQuery 中声明一个列表类型变量,以便在 where 子句中使用它?我有这个代码

WITH
  subquery AS (
  SELECT
    1 AS col1
  UNION ALL
  SELECT
    2 AS col1
  UNION ALL
  SELECT
    3 AS col1 )

SELECT
  col1
FROM
  subquery
WHERE
  col1 IN (1, 2)

相反,我想用查询中的变量来说明问题

DECLARE list ARRAY;
SET list = (1,2);

WITH
  subquery AS (
  SELECT
    1 AS col1
  UNION ALL
  SELECT
    2 AS col1
  UNION ALL
  SELECT
    3 AS col1 )

SELECT
  col1
FROM
  subquery
WHERE
  col1 IN list

我尝试过 DECLARE list STRUCT [小于] int64,int64 [大于] 它不接受

【问题讨论】:

    标签: arrays struct google-bigquery ddl


    【解决方案1】:

    如果您确实想将 DECLARE 与 STRUCT 类型一起使用,或者对于找到此帖子的其他人,以下语法似乎也有效:

    DECLARE foo DEFAULT (SELECT AS STRUCT 2, 2, 2, 2);

    【讨论】:

      【解决方案2】:

      试试下面的代码:

      DECLARE list ARRAY <INT64>;
      SET list = [1,2];
      
      WITH
        subquery AS (
        SELECT
          1 AS col1
        UNION ALL
        SELECT
          2 AS col1
        UNION ALL
        SELECT
          3 AS col1 )
      
      SELECT
        col1
      FROM
        subquery
      WHERE
        col1 IN UNNEST(list)
      

      【讨论】:

      猜你喜欢
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2021-03-23
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多