Bigquery SQL 中的拆分函数
Posted
技术标签:
【中文标题】Bigquery SQL 中的拆分函数【英文标题】:Split function in Bigquery SQL 【发布时间】:2019-01-21 21:41:35 【问题描述】:我正在 Bigquery SQL 中尝试简单的拆分函数并尝试获取数组元素(从 hive SQL 获取的查询)。但是 Bigquery SQL 拆分功能使字段可重复并且没有给出预期的结果。有人可以帮助在 Bigquery #standardSQL 中创建类似的查询
-- Hive 查询 选择层次结构,hier_array,hier_array[0] 作为 level0,hier_array[1] 作为 level1,hier_array[2] 作为 level2 来自 ( 选择层次结构,拆分(层次结构,'-')作为hier_array 来自 gcs_publish.cr_party_dnm_gu_rel ) z 限制 10 个;
--想要的输出
hierarchy hier_array level0 level1
10000-211817-26510-25429 ["10000","211817","26510","25429"] 10000 211817
10019-10369 ["10019","10369"] 10019 10369
10021 ["10021"] 10021
10022-17256 ["10022","17256"] 10022 17256
10033 ["10033"] 10033
10037-3098187 ["10037","3098187"] 10037 3098187
10042 ["10042"] 10042
10050-11038-211637808-34880075 ["10050","11038","211637808","34880075"] 10050 11038
10052 ["10052"] 10052
10053 ["10053"] 10053
【问题讨论】:
欢迎来到 ***,请访问 tour 并阅读 how to ask a question。如果对您有用,请接受答案。 【参考方案1】:以下是 BigQuery 标准 SQL 并帮助您入门
#standardSQL
SELECT
hierarchy,
hier_array,
hier_array[SAFE_OFFSET(0)] AS level0,
hier_array[SAFE_OFFSET(1)] AS level1,
hier_array[SAFE_OFFSET(2)] AS level2
FROM (
SELECT hierarchy, SPLIT(hierarchy,'-') AS hier_array
FROM `gcs_publish.cr_party_dnm_gu_rel`
) z
LIMIT 10
结果如下所示
Row hierarchy hier_array level0 level1 level2
1 10000-211817-26510-25429 10000 10000 211817 26510
211817
26510
25429
2 10019-10369 10019 10019 10369 null
10369
3 10021 10021 10021 null null
如果你要检查这个结果的 JSON 表示(以第一行为例)
"hierarchy": "10000-211817-26510-25429",
"hier_array": [
"10000",
"211817",
"26510",
"25429"
],
"level0": "10000",
"level1": "211817",
"level2": "26510"
,
在我看来和你期望的一样
【讨论】:
以上是关于Bigquery SQL 中的拆分函数的主要内容,如果未能解决你的问题,请参考以下文章