我正在尝试连接两个表,每个表都有一个如下所示的数组列
SELECT a.id, b.value
FROM a INNER JOIN b
ON a.array IN b.array
Run Code Online (Sandbox Code Playgroud)
要么
SELECT a.id, b.value
FROM a INNER JOIN b
ON UNNEST(a.array) IN UNNEST(b.array)
Run Code Online (Sandbox Code Playgroud)
根据这个问题,postgres有像<@和> @这样的运算符来比较是否是另一个数组的子集( postgres doc页面),但是BigQuery只允许将数组的元素与其他数组进行比较,如下所示
a.arrayelement IN UNNEST(b.array)
Run Code Online (Sandbox Code Playgroud)
可以在BigQuery中完成吗?
编辑
这是我正在使用的架构
WITH b AS (
{ "ip": "192.168.1.1",
"cookie": [
{ "key": "apple",
"value: "red"
},
{ "key": "peach",
"value: "pink"
},
{ "key": "orange",
"value: "orange"
}
]
}
,{ "ip": "192.168.1.2",
"cookie": [
{ "key": "apple", …Run Code Online (Sandbox Code Playgroud) 我有两张桌子
1) 表 main
id phone.type phone.id
==============================
| 1 | android | adkfjagp |
| | android | asdfasdf |
| | iphone | akfj2341 |
| | iphone | ada93519 |
------------------------------
Run Code Online (Sandbox Code Playgroud)
我有另一个表,它存储了一堆这样的安卓手机 ID
2) 表 android
==============
| adkfjagp |
| ... |
--------------
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以获取表 main 中的所有行,其中该行包含一个类型为 android 和 id 的记录,该记录也在表 android 中。
有没有一种方法可以检查BigQuery REPEATED字段是否包含特定值?
我正在尝试做类似的事情:
SELECT CASE WHEN column1 CONTAINS ("Test Value") THEN 1 ELSE 0 END FROM testdata
Run Code Online (Sandbox Code Playgroud)
当column1是模式为REPEATED的STRING类型的字段时。我有多个相同性质的REPEATED列,因此不得不将它们全部弄平似乎很乏味。