AWS GLUE SQL 从右侧加入单行 table

AWS GLUE SQL join with single row from right table

我正在尝试在 AWS glue 中连接两个数据集

Table 1(别名 af):

id data created
1 string 1 2020-02-10
2 string 2 2020-02-11
3 string 3 2020-02-12

Table 2(别名 mp):

id data data2 created foreign_key
1 string 1 json string 2020-02-10 2
2 string 2 json string 2020-02-11 3
3 string 3 json string 2020-02-12 3

我想要做的是从 table 1 和 select 中获取与外键匹配的 table 2 中第一行的所有行。

这就是我目前遇到的问题,在回答了几个问题后我发现我需要用一个聚合函数来包装查询,让 spark 知道只有 1 个元素会匹配这个子查询。

select af.id,af.data
       (select first(mp.data)
        from mp
        where af.id= mp.foreign_key
       ) as alias1,
       
       (select first(mp.data2)
        from mp
        where af.id= mp.foreign_key
       ) as alias2
from af 
having alias 1 is not null and alias2 is not null

但这给了我以下错误:

ParseException: mismatched input 'first' expecting {')', ',', '-'}(line 3, pos 15)

任何帮助将不胜感激!

我找到了适用于我的用例的解决方案。上面的评论是正确的 SQL 以前很时髦。

Select af.*, mp.*
from af  join
     (select mp.*, row_number() over (partition by mp.fid order by mp.created_at) as seqnum
      from mp
     ) mp
     on af.id= mp.fid and seqnum = 1;