Warm tip: This article is reproduced from serverfault.com, please click

sql-如何在Big Query中声明结构类型变量?

(sql - How to declare a struct type variable in Big Query?)

发布于 2019-11-19 15:13:35

我有一个带有几个嵌套表的查询,并且所有这些表都使用如下过滤器:

WHERE
    DATE(my_time) IN ("2017-08-12", "2017-08-13", "2017-08-14", ..., "2017-08-30")

我想在查询开始时声明带有所有日期的STRUCT类型变量,以便以后可以将所有过滤器替换为:

WHERE
    DATE(my_time) IN struct_var

我正在寻找这样的东西:

DECLARE struct_var STRUCT <"2017-08-12", "2017-08-13", "2017-08-14", ..., "2017-08-30">;

但我不断收到错误,无法弄清楚语法。

有人知道如何解决这个问题吗?

谢谢

Questioner
Lev
Viewed
11
Gordon Linoff 2019-11-19 23:24:16

你不需要结构。你需要一个数组:

declare date_array array<date>;

set date_array = [date('2017-08-12'), date('2017-08-13'), date('2017-08-14')] ;

当然,你不会in为此目的而使用你可以使用:

where date(my_time) in (select d from unnest(date_array) d)