Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何通过运行左和右外部联接来合并数据帧中的两列_Sql_Scala_Apache Spark_Aws Glue - Fatal编程技术网

Sql 如何通过运行左和右外部联接来合并数据帧中的两列

Sql 如何通过运行左和右外部联接来合并数据帧中的两列,sql,scala,apache-spark,aws-glue,Sql,Scala,Apache Spark,Aws Glue,我有两个表,每个表有两列,一个id列和一个收入列。我已使用完全外部联接连接了这两个表,并执行了以下操作: val income = incomeA.join(incomeB, incomeA("idA") === incomeB("idB"), "full") 产生以下集合: +--------------------+----------+--------------------+----------+ | idA | A_INCOME| idB

我有两个表,每个表有两列,一个id列和一个收入列。我已使用完全外部联接连接了这两个表,并执行了以下操作:

val income = incomeA.join(incomeB, incomeA("idA") === incomeB("idB"), "full")
产生以下集合:

+--------------------+----------+--------------------+----------+ 
|  idA               |  A_INCOME|  idB               |  B_INCOME|
+--------------------+----------+--------------------+----------+
|0d4f671c-552b-449...|      2250|                null|      null|
|9e03f92e-af0e-416...|      1250|                null|      null|
|                null|      null|c75d0d17-f3c1-497...|      4300|
|02572d79-bc54-427...|      2880|                null|      null|
|                null|      null|ca493eca-0709-4db...|      2320|
|cb7831ac-2550-435...|      1650|                null|      null|
|da7ac4c4-403b-466...|      2250|                null|      null|
|9bddb7b5-0047-4e1...|      5170|                null|      null|
|                null|      null|b54fc648-5f00-411...|       800|
|7aeade0a-47d4-459...|      4250|                null|      null|
|4fde8deb-a7de-45a...|      1650|                null|      null|
+--------------------+----------+--------------------+----------+
但我希望最终结果包含3列,一个id列同时包含idA和idB,两个收入列,而不是上述内容,如下所示:

+--------------------+----------+----------+ 
|  id                |  A_INCOME|  B_INCOME|
+--------------------+----------+----------+
|0d4f671c-552b-449...|      2250|      null|
|9e03f92e-af0e-416...|      1250|      null|
|c75d0d17-f3c1-497...|      null|      4300|
|02572d79-bc54-427...|      2880|      null|
|ca493eca-0709-4db...|      null|      2320|
|cb7831ac-2550-435...|      1650|      null|
|da7ac4c4-403b-466...|      2250|      null|
|9bddb7b5-0047-4e1...|      5170|      null|
|b54fc648-5f00-411...|      null|       800|
|7aeade0a-47d4-459...|      4250|      null|
|4fde8deb-a7de-45a...|      1650|      null|
+--------------------+----------+----------+

该表本质上应该是在该数据帧上执行完全左连接和完全右连接的结果。有没有办法做到这一点?你将如何处理这个问题?非常感谢

我想您只需要
合并()

大多数数据库支持标准的
语法,因此您也可以使用:

select id, a.income as a_income, b.income a b_income
from a full join
     b
     using (id);

我想您只需要
coalesce()

大多数数据库支持标准的
语法,因此您也可以使用:

select id, a.income as a_income, b.income a b_income
from a full join
     b
     using (id);

我删除了MySQL标签。它不支持
完全连接
,因此您不能使用该数据库。我删除了MySQL标记。它不支持
完全连接
,因此您不能使用该数据库。太好了,非常感谢!成功了!对任何感兴趣的人来说,这就是我对上述fo spark所做的修改:
incomeA.join(…).select(coalesce(incomeA(“idA”)、incomeB(“idB”)、as(“accountId”)、col(“A_INCOME”)、col(“B_INCOME”))
太好了,非常感谢!成功了!对任何感兴趣的人来说,这就是我所做的调整上述fo spark:
incomeA.join(…).select(coalesce(incomeA(“idA”)、incomeB(“idB”)、as(“accountId”)、col(“A_INCOME”)、col(“B_INCOME”))