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;
我正在尝试在 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;