【发布时间】:2020-11-07 01:23:33
【问题描述】:
我想了解如何在标准 SQL (BigQuery) 中将数组安全地取消嵌套到列中,即将列表中的每个项目转换为列。
考虑:
WITH shoppingList AS (
SELECT 'Bob' AS name, ['bananas', 'olives', 'ham'] AS list
UNION ALL
SELECT 'Anna', ['toothpaste', 'shampoo']
)
然后我可以轻松查询:
SELECT name, list[OFFSET(0)] as item1, list[OFFSET(1)] AS item2
FROM shoppingList
但是,当我希望查询 item3 和 itemN 时,事情会变得更加复杂。
由于SQL数组元素访问不是函数,我不能使用SAFE.前缀,如果我查询SELECT list[OFFSET(2)] as item3 FROM shoppingList,那么SQL就会报错。有没有办法实现 SAFE 等效项并在找不到项目时返回 NULL?
【问题讨论】:
标签: sql arrays error-handling google-bigquery