匹配 SQL / BigQuery 中相同索引的数组元素

Match array elements of the same index in SQL / BigQuery

我想在 SQL/BigQuery

中的先前匹配期间输出与索引匹配的数组中的元素

比如我有这5个字段。 Match_Home_Date 和 Match_Away_date 是 Array(String) 格式。

Match_ID Match_Home Match_Away Match_Home_Date Match_Away_Date
121 101, 102 103, 121 [01-02-2021, 01-05-2021] [01-07-2021, 01-09-2021]
131 131, 140 117, 115 [02-02-2021, 02-15-2021] [02-20-2021, 02-25-2021]

我想输出一个“最终日期”字段,其中当 Match_ID 与 Match_Home 或 Match_Away 匹配时,它将输出相应的 Match_Home_Date 或Match_Away_同索引日期

输出应该是:

Final Date
01-09-2021
02-02-2021

考虑以下方法

select Match_ID, 
  (Match_Home_Date || Match_Away_Date)[offset(
  ( select offset
    from unnest(split(Match_Home) || split(Match_Away)) id with offset 
    where trim(id)  = '' || Match_ID
  ))] as Final_Date
from your_table            

如果应用于您问题中的示例数据 - 输出为

你可以用下面的cte来测试上面的

with your_table as (
  select 121 Match_ID, '101, 102' Match_Home, '103, 121' Match_Away, ['01-02-2021', '01-05-2021'] Match_Home_Date, ['01-07-2021', '01-09-2021'] Match_Away_Date union all
  select 131, '131, 140', '117, 115', ['02-02-2021', '02-15-2021'], ['02-20-2021', '02-25-2021'] 
)