我有一个页面URL列组件由分隔/.我试图SPLIT()在BigQuery中运行该函数,但它只给出了第一个值.我想要特定列中的所有值.
我不明白如何将Split字符串中Regexp_extract()提到的示例用于带有bigquery的多个列.
我需要类似的东西REGEX_SPLIT_TO_TABLE(<String>, <DELIMITER>)将单个字符串转换为多个列.
查询:
SELECT PK,
DATE(TIMESTAMP(CONCAT(SUBSTR(date,1,4),'-',SUBSTR(date,5,2),'-',SUBSTR(date,7,2),' 00:00:00'))) as visit_date,
hits_page_pagePath,
split(hits_page_pagePath,'/')
FROM [Intent.All2mon] limit 100
Run Code Online (Sandbox Code Playgroud)
Fel*_*ffa 26
#standardSQL
SELECT SPLIT(path, '/')[OFFSET(0)] part1,
SPLIT(path, '/')[OFFSET(1)] part2,
SPLIT(path, '/')[OFFSET(2)] part3
FROM (SELECT "/a/b/aaaa?c" path)
Run Code Online (Sandbox Code Playgroud)
现在我明白你想要它们在不同的列中.
您提供的查询的替代方法:
SELECT FIRST(SPLIT(path, '/')) part1,
NTH(2, SPLIT(path, '/')) part2,
NTH(3, SPLIT(path, '/')) part3
FROM (SELECT "/a/b/aaaa?c" path)
Run Code Online (Sandbox Code Playgroud)
NTH(X, SPLIT(s))将提供SPLIT的Xth值.FIRST(s)是相同的NTH(1, s)
Lon*_*nUK 10
您还可以使用 SPLIT 函数尝试以下操作,但是您需要知道您的 url 将有多少个“/”或进行足够的条目,以便如果您的 url 包含更多“/”,那么您仍然可以在单独的列中获取这些值
SPLIT(`url`, '/')[safe_ordinal(1)] AS `Col1`,
SPLIT(`url`, '/')[safe_ordinal(2)] AS `Col2`,
SPLIT(`url`, '/')[safe_ordinal(3)] AS `Col3`,
SPLIT(`url`, '/')[safe_ordinal(4)] AS `Col4`,
.
.
SPLIT(`url`, '/')[safe_ordinal(N)] AS `ColN`
Run Code Online (Sandbox Code Playgroud)
这对我有用:
SELECT SPLIT(path, '/') part
FROM (SELECT "/a/b/aaaa?c" path)
Row part
1 a
2 b
3 aaaa?c
Run Code Online (Sandbox Code Playgroud)
不知道为什么它对你不起作用。您的数据是什么样的?
| 归档时间: |
|
| 查看次数: |
36382 次 |
| 最近记录: |