Iは、次のタイプのテーブルを持っている:自己条件でテーブルを結合
表dummy1:
e_n t_s item
a t1 c
a t2 c
a t3 c
a t4 c
b p1 c
b p2 c
b p3 c
b p4 c
T1、T2、T3、T4、P1、P2、P3、P4であるタイムスタンプに昇順。 t1、t2、t3、t4は、event_name 'a'の昇順のタイムスタンプです。 p1、p2、p3、p4は、event_name 'b'の昇順のタイムスタンプです。
cは、これらのイベント「a」と「b」が発生しているitem_numberです。
私は次のように結果がどうあるべき対象のクエリを記述しようとしています:ザ・はl.item = m.item参加
select l.e_n as e_n_1, m.e_n as e_n_2, l.item, l.t_s as t_s_a,
m.t_s as t_s_b from (
(select * from dummy where e_n = 'a') l
join
(select * from dummy where e_n = 'b') m
on l.item = m.item and l.t_s < m.t_s
:
e_n1 e_n2 item t_s_1 t_s_2
a b c t1 p1
a b c t2 p2
a b c t3 p3
a b c t4 p4
私は、次のコードを試してみました他の多くの項目のC1、C2、C3と同じ構造があるとして必要とされている
結果は次のとおりです。
e_n1 e_n2 item t_s_a t_s_b
a b c t1 p1
a b c t1 p2
a b c t1 p3
a b c t1 p4
a b c t2 p1
a b c t2 p2
a b c t2 p3
so on
結果を効率的に達成するにはどうすればよいですか?
あなたのapache-spark-sqlサポートはROW_NUMBER()OVER(ORDER BY t_s)ですか?もしそうなら、 'l.rn = m.rn'を使ってFULL OUTER JOINテーブル' l'と 'm'を入力してください。 –
Amazon Redshift専用ですか?それともスパークのためですか?それに応じてタグを明確にしてください。 –
これはapache-spark-sqlのためのものです – SpaceOddity