Arrays 在Google BigQuery中将数组转换为字符串

Arrays 在Google BigQuery中将数组转换为字符串,arrays,string,google-bigquery,unnest,Arrays,String,Google Bigquery,Unnest,我有一个类似的问题 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,

我有一个类似的问题

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`
这就是下面的结果

我想要一个像这样的输出


我能够使用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 )

我已经修改了查询并解决了问题