回答

收藏

分解表以透视列(SQL,PYSPARK)

技术问答 技术问答 371 人阅读 | 0 人回复 | 2023-09-11

我正在AWS Glue中使用python3.6的环境pyspark中进行工作。我有这张桌子:
$ m$ v4 y* h2 D* \3 [+----+-----+-----+-----+# V4 \3 T- x0 w  A1 w
|year|month|total| loop|1 W4 X, H0 z+ |7 k2 a8 R6 J: b
+----+-----+-----+-----+0 N, ?9 s' E+ Y  j
|2012|    1|   20|loop1|, F) `# N- k; ?9 C
|2012|    2|   30|loop1|
% Y. X2 k& r. q5 o9 E; F|2012|    1|   10|loop2|* M* u$ M( U( W
|2012|    2|    5|loop2|8 L1 L1 |7 ?! t2 n5 D% Q. d. j' O
|2012|    1|   50|loop3|
; {3 [4 j& K3 h|2012|    2|   60|loop3|( m1 m  h; J6 E! O
+----+-----+-----+-----+7 G& u& p; E/ h, A/ h& l' }
我需要得到一个类似的输出:# b$ W4 e9 N. G
year    month   total_loop1 total_loop2 total_loop3
2 o) u* Z$ S  M% {6 J4 d2012    1         20           10           50
& |9 V- t" {$ U7 o2 T" O; N  h" Z2012    2         30           5            609 X' n, u6 S; J
我得到的是与SQL代码更接近的信息:; k3 S! W2 A5 w9 y
select a.year,a.month, a.total,b.total from test a
3 l' @! j7 Q  ^4 f& Zleft join test b% o2 j# f' n* B3 {6 c4 g3 h& h
on a.loop  b.loop
7 E0 [; v9 ?9 Jand a.year = b.year and a.month=b.month
8 ]$ P  A4 Y. F, ^9 U" A) [3 t到目前为止的输出:* k" i4 ^7 |, V0 G3 ]4 M
+----+-----+-----+-----+
' e' m  ]( Z" Y3 M|year|month|total|total|
/ M; q* c) C8 v: F3 h; |5 V+ ~+----+-----+-----+-----+
1 d- @- o; I8 _|2012|    1|   20|   10|! G$ [& W% C* t# t( M
|2012|    1|   20|   50|
3 |* f3 g# l4 o" f|2012|    1|   10|   20|
6 B7 _6 M0 Y* I+ F1 w+ c1 F|2012|    1|   10|   50|
5 a! G8 j7 h0 h9 }: \|2012|    1|   50|   20|0 s0 D" {! e$ G+ K. X
|2012|    1|   50|   10|
0 o, O( [9 e' ?3 B7 s  o|2012|    2|   30|    5|; D6 F) J: S, M, T( T
|2012|    2|   30|   60|
9 m, S4 L( a, {% p# K* ~|2012|    2|    5|   30|
0 R! {' u/ V7 A+ l1 e! R6 s|2012|    2|    5|   60|& j6 P6 D9 C6 C* G
|2012|    2|   60|   30|
) u4 E, ^$ Z- p! ]+ C8 J|2012|    2|   60|    5|
- n7 e& i, Q  M& W5 B+----+-----+-----+-----+
, y/ i. J$ v- f  W我该怎么办?非常感谢
, F8 ?4 p6 R+ t! G+ R" H" L. c               
6 b5 Y& J5 H; M/ K' J! s解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则