pyspark 如何将多个表合并在一起,如果最后一个表缺少键,则使用前一个表键

wb1gzix0  于 2022-12-03  发布在  Spark
关注(0)|答案(1)|浏览(310)

如果有多个表具有相同列
表1:

==========
 |id |  a |
 ==========
 |1  | aa |
 |2  | bb |
 |3  | cc |
 |4  | dd |
 ==========

表2:

==========
 |id |  a |
 ==========
 |1  | aa |
 |2  | bb |
 |3  | cc |
 |4  | dd |
 ==========

表3:

===========
 |id |  a  |
 ==========
 |1  | aaa |
 |2  | bbb |
 |3  | ccc |
 ===========

如何合并3个表,使输出包含所有3个表中的所有ID。它使用最后一个表table3的ID内容,如果有ID丢失,如ID 4,它使用上次在表中看到ID 4的时间,如table2。
最终输出应如下所示:

============
 |id |  a   |
 ============
 |1  |  aaa |
 |2  |  bbb |
 |3  |  ccc |
 |4  |  dd  |
 ============

我在考虑通过完全或联合连接,但不知道如何格式化输出表像上面一样。

finaloutput = \
    table3 \
        .join(table2, (table3.id == table2.id), "full") \
        .join(table1, (table3.id == table1.id), "full")
6pp0gazn

6pp0gazn1#

我认为您正在寻找coalesce函数,该函数在其参数中返回第一个非空元素。
在您的情况下,它将如下所示:
第一个

相关问题