我想使用SPLIT函数对各种文本条目进行文字分析,在本例中为git commit comments。通常,单词由空格分隔,但我还希望在分隔符列表中包含逗号,分号,冒号,句号,问号,感叹号,制表符,新行。基本上使用REGEX模式来指定分隔符,如果找到它们中的任何一个,则将其视为分隔符。SPLIT可以与多个分隔符一起使用吗?
例如:
SELECT
split(commit_message, " ") as words,
FROM [project:dataset.table]
LIMIT 1000
如果输入的数据是这样的:
"Commit message XYX: Hello. This is a test. This is a fun test! First, we'll run a test, then we'll check the results. A test is currently running."
如果我们做一个GROUP BY的话,这个词“测试”将有一个COUNT我希望4,但使用上面的查询测试只计算一次。如果分隔符字段接受类似于下面的REGEXP,但是我认为这不可用,或者语法未发布,那将会很好。
SELECT
split(commit_message, "[\W]+") as words,
FROM [project:dataset.table]
LIMIT 1000
在上面的例子中,如果检测到一个或多个非单词字符,这些会全部作为分隔符处理。如果此功能不存在,是否可以考虑将来的改进?在这个时候,我需要将结果放在“单词”列中,并去除所有非单词字符以获得我想要的内容。 (见下文)
SELECT
LOWER(REGEXP_EXTRACT(words, r'(\w+)')) as words
FROM
(
SELECT
split(commit_message, " ") as words,
FROM [project:dataset.table]
)
LIMIT 1000
我很感激,如果你有建议,以避免这个额外的步骤提取非单词字符。
请参阅下面的回答,请分享成果! – 2014-10-29 22:30:23