如何在BigQuery中将字符串中的单词拆分为多行
解决字符串拆分为单独行的问题
我来帮你搞定这个拆分字符串到单行的需求!你遇到的语法错误主要是两个原因:一是你在UNNEST里引用了原本的字符串列context_page_title,但在CTE里你已经把它转换成数组列exemple了;二是BigQuery中UNNEST数组的正确用法需要和表做交叉联结,或者直接在FROM子句中处理。
正确写法一:基于你的CTE修改
你只需要在FROM子句中把数组列exemple通过UNNEST展开,同时给展开后的每个元素起个别名:
WITH teste AS ( SELECT SPLIT(context_page_title, " ") AS exemple FROM ( SELECT "a b c ddd ee eee dd" AS context_page_title ) ) SELECT word FROM teste, UNNEST(exemple) AS word
正确写法二:简化版(无需CTE)
如果不需要保留CTE,也可以直接在FROM里拆分并展开,代码更简洁:
SELECT word FROM ( SELECT "a b c ddd ee eee dd" AS context_page_title ), UNNEST(SPLIT(context_page_title, " ")) AS word
为什么你的代码报错?
你之前的错误代码里写了SELECT UNNEST(context_page_title) FROM teste,这里有两个问题:
context_page_title在CTEteste里已经不存在了,你定义的数组列是exemple;- BigQuery中不能直接在SELECT子句里单独使用
UNNEST(除非搭配LATERAL或者在特定场景),更标准的做法是在FROM子句中通过交叉联结(逗号等价于CROSS JOIN)来展开数组。
运行上面的正确代码后,你会得到每个单词单独一行的结果:
word ---- a b c ddd ee eee dd
内容的提问来源于stack exchange,提问作者angry sine
相关产品推荐
相关产品推荐

