假设我有以下数据:
import duckdb
rel = duckdb.sql("""
FROM VALUES
([{'a': 'foo', 'b': 'bta'}]),
([]),
([{'a': 'jun', 'b': 'jul'}, {'a':'nov', 'b': 'obt'}])
df(my_col)
SELECT *
""")
看起来像这样:
┌──────────────────────────────────────────────┐
│ my_col │
│ struct(a varchar, b varchar)[] │
├──────────────────────────────────────────────┤
│ [{'a': foo, 'b': bta}] │
│ [] │
│ [{'a': jun, 'b': jul}, {'a': nov, 'b': obt}] │
└──────────────────────────────────────────────┘
我想保留所有行,其中元素之一中的任何项目'my_col'
,字段'a'
包含子字符串'bt'
因此,预期输出:
┌──────────────────────────────────────────────┐
│ my_col │
│ struct(a varchar, b varchar)[] │
├──────────────────────────────────────────────┤
│ [{'a': foo, 'b': bta}] │
│ [{'a': jun, 'b': jul}, {'a': nov, 'b': obt}] │
└──────────────────────────────────────────────┘
我该如何编写 SQL 查询来执行此操作?
也许是
list_sum()
布尔值或者list_bool_or()
?列表推导与
list_apply(my_col, s -> 'bt' in s.b)