在 Google BigQuery 中将数组转换为字符串 [重复]
Posted
技术标签:
【中文标题】在 Google BigQuery 中将数组转换为字符串 [重复]【英文标题】:Converting arrays to string in Google BigQuery [duplicate] 【发布时间】:2021-05-13 07:14:26 【问题描述】:我有一个类似的查询
SELECT lineid,
array
(
select day_name positions
FROM unnest(regexp_extract_all(json_extract(json, '$.attributes.day-part-targeting.data.dayparts'), r'("+[A-Za-z]+"+:+"+[A-Za-z]+")')) pair,
unnest([STRUCT(CONCAT(REPLACE(SPLIT(pair, ':')[OFFSET(1)],'"',''),';') AS day_name)]) )day_part,
array
(
SELECT start_time positions
FROM unnest(regexp_extract_all(json_extract(json, '$.attributes.day-part-targeting.data.dayparts'), r'"[^"]+":\[[\d,]*?]')) pair,
unnest([STRUCT(CONCAT(REPLACE(SPLIT(SPLIT(pair, ':')[OFFSET(1)],',')[OFFSET(0)],'[',''),':00;')AS start_time )])) hour_part,
array(
SELECT end_time VALUES
FROM unnest(regexp_extract_all(json_extract(json, '$.attributes.day-part-targeting.data.dayparts'), r'"[^"]+":\[[\d,]*?]')) pair,
unnest([STRUCT(CONCAT(REPLACE(REVERSE(SPLIT(REVERSE(SPLIT(pair, ':')[OFFSET(1)]),',')[OFFSET(0)]),']',''),':00;')AS end_time
)])
) time_part
FROM `project.dataset.table`
这给出了以下结果
我想要一个类似的输出
【问题讨论】:
我已修改查询并已解决问题 【参考方案1】:我能够在 where 子句中使用偏移量来解决这个问题
SELECT lineid,
day_part
FROM (
SELECT lineid,
array_to_string( array
(
select day_name
FROM unnest(regexp_extract_all(json_extract(json, '$.attributes.day-part-targeting.data.dayparts'), r'("+[A-Za-z]+"+:+"+[A-Za-z]+")')) day WITH offset pos1,
unnest(regexp_extract_all(json_extract(json, '$.attributes.day-part-targeting.data.dayparts'), r'"[^"]+":\[[\d,]*?]')) hour WITH offset pos2,
unnest([STRUCT(CONCAT(REPLACE(SPLIT(day, ':')[OFFSET(1)], '"', ''), ';')|| format_time('%I:%M %p', parse_time('%H:%M', concat(replace(split(split(hour, ':')[OFFSET(1)], ',')[OFFSET(0)], '[', ''), ':00'))) || ';' || format_time('%I:%M %p', parse_time('%H:%M', concat(replace(reverse(split(reverse(split(hour, ':')[OFFSET(1)]), ',')[OFFSET(0)]), ']', ''), ':00'))) AS day_name )])
WHERE pos1 = pos2), '|')day_part
FROM table )
【讨论】:
以上是关于在 Google BigQuery 中将数组转换为字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Google Apps 脚本中将 BigQuery TIMESTAMP 转换为日期?
无法在 Google BigQuery 中将此旧版 SQL 转换为标准 SQL
在 Google Cloud BigQuery 中存储句子嵌入