查询雪花数组的子集

JLu*_*Luu 3 sql snowflake-cloud-data-platform

我正在尝试根据我的列之一中的数组元素对雪花中的 SQL 查询进行子集化,但不确定如何执行此操作。

例如,如果 column2 是一个数组数据类型,如下所示

SELECT column2
FROM table
LIMIT 7;
Run Code Online (Sandbox Code Playgroud)

与输出:


Row column2
1 ["cats","dogs"]
2 ["horses","cows","cats"]
3 NULL
4 ["dogs","fish]
5 ["birds"]
6 ["cats"]
7 NULL
Run Code Online (Sandbox Code Playgroud)

我想对数据进行子集化并运行一个查询,该查询会拉入第 2 列中任何数组中任何具有“cats”元素的行 - 所以第 1,2 行和第 6 行 - 我将如何构建该查询?

使用这样的东西是行不通的:

SELECT column1, column2, column3
FROM Table
WHERE column2 = "cats" (or using an IN statement)
Run Code Online (Sandbox Code Playgroud)

并导致错误消息为无效标识符“cats”,这是我所期望的,因为它位于数组中

任何见解将不胜感激!

Gor*_*off 5

你要array_contains()

where array_contains('cats'::variant, column2)
Run Code Online (Sandbox Code Playgroud)