如何在 BigQuery 中连接两个 table,但连接参数是嵌套的

How to JOIN two table in BigQuery, but the join parameter are nested

抱歉新手问题,刚开始学习SQL。我有两个 tables:

  1. 场次

sessions table 有 questions (RECORD, Repeated), questions 里面有 item_id (String)

items table 有 topics (RECORD, Repeated),在 topics 里面有 prior_difficulty (String)。 items table 也有 item_id (字符串)

我的 objective 是通过将两个 table 与其 item_id 连接起来来获取会话列表及其 prior_difficulty。 TIA

您可以先使用 unnest() 函数从会话 table 中检索所有 item_id,然后将它们与项目 [=] 中的 item_id 连接起来25=].
要从结构列 topics 中检索 prior_difficulty,您还可以使用 unnest() 函数:

select distinct
  sessions.session_id,
  t.prior_difficulty
from sessions, unnest(questions) q
left join items on q.item_id = items.item_id, unnest(topics) t

或者如果您想创建重复记录列以按 session_idprior_difficulty 值进行分组:

select
  sessions.session_id,
  array_agg(distinct t.prior_difficulty ignore nulls) as prior_difficulties
from sessions, unnest(questions) q
left join items on q.item_id = items.item_id, unnest(topics) t
group by 1