sql - 如何在 Big Query 中声明结构类型变量?
问题描述
我有几个嵌套表的查询,它们都使用这样的过滤器:
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">;
但我不断收到错误,无法弄清楚语法。
任何人都知道如何解决这个问题?
谢谢
解决方案
以下示例用于在 BigQuery 标准 SQL 中编写脚本
#standardSQL
DECLARE dates ARRAY<DATE>;
SET dates = [DATE '2017-08-12', '2017-08-13', '2017-08-14', '2017-08-30'];
WITH sample_table AS (
SELECT 1 id, DATE '2017-08-12' dt UNION ALL
SELECT 2, '2017-09-13' UNION ALL
SELECT 3, '2017-09-14' UNION ALL
SELECT 4, '2017-08-30'
)
SELECT * FROM sample_table
WHERE dt IN UNNEST(dates);
推荐阅读
- .htaccess - 使用 htaccess 设置服务器变量
- firebase-authentication - 使用 OpenId 连接将第 3 方应用程序连接到 Firebase 身份验证
- excel - 从共享点通过电源查询加载 .xlsb 文件
- android - 如何在 Kotlin 的 Android aap 上创建左侧抽屉菜单
- uwp - 如何使用 .appx 更新已安装的 UWP .appxbundle
- python - 我如何将两个具有相同索引但其中一个中缺少一些条目的熊猫数据框组合起来
- javascript - MIME 类型(“text/html”)不匹配(X-Content-Type-Options: nosniff)
- sql - 功能光标分配
- plugins - 如何控制 Shopify 插件中的字体?
- pgrouting - 我想不出一种在 pgRouting 中从另一个表的 2 个点之间生成路由的方法