【发布时间】:2017-05-19 22:08:42
【问题描述】:
我是 Hive 新手,我的 SQL 知识有点生疏,因此在 SO 上发布问题。
我有一个 SAP 表中的数据,其中缺少一列的值。我想知道如何填充这些列。
例子:
+----------+-----------+--------+
| EBELN | BELNR | EBELP |
|----------+-----------+--------|
| 1 | 123 | 001 |
|----------+-----------+--------|
| | 123 | 002 |
|----------+-----------+--------|
| | 123 | 003 |
+----------+-----------+--------+
在上表中,所有三行都相互关联,但EBELN 列的值仅存在于第一行。
当我使用EBELN 列作为连接键将该表与其他表连接时,连接中只出现第一行。我想将所有三行都带入输出连接。
Expected output:
+----------+-----------+--------+
| EBELN | BELNR | EBELP |
|----------+-----------+--------|
| 1 | 123 | 001 |
|----------+-----------+--------|
| 1 | 123 | 002 |
|----------+-----------+--------|
| 1 | 123 | 003 |
+----------+-----------+--------+
我希望输出是这样的,这样我就可以使用EBELN 列将此表与其他表连接起来。
我要加入的表不包含 BELNR 或 EBELP 列,因此我无法使用这些列进行加入。
我想知道我是否可以使用self join 或者我可以在这里使用其他任何东西。
添加更多信息。我有其他表让我们称之为“ABCD”。该表有EBELN 列。
+----------+-----------+--------+
| EBELN | COL12 | COL13 |
|----------+-----------+--------|
| 1 | ABC | LMN |
|----------+-----------+--------|
| 2 | DEF | OPQ |
|----------+-----------+--------|
| 3 | GHI | RST |
+----------+-----------+--------+
我试图使用EBELN 列将这个“ABCD”表与“EKPF”表连接起来。
我需要获取BELNR 编号相同的所有行,但由于BELNR 列在ABCD 表中不存在,我不能使用它来加入。
最终连接的输出应该是这样的
+----------+-----------+--------+--------+--------+
| EBELN | BELNR | EBELP | COL12 | COL13 |
|----------+-----------+--------+--------+--------|
| 1 | 123 | 001 | ABC | LMN |
|----------+-----------+--------+--------+--------|
| | 123 | 002 | ABC | LMN |
|----------+-----------+--------+--------+--------|
| | 123 | 003 | ABC | LMN |
|----------+-----------+--------+--------+--------|
| 2 | | | DEF | OPQ |
|----------+-----------+--------+--------+--------|
| 3 | | | GHI | RST |
+----------+-----------+--------+--------+--------+
【问题讨论】:
-
行之间有什么关系?通过 BELNR 列? EBELN 列应该如何计算?
-
EBELN计算可以使用自连接或其他方式,但需要先定义规则。
-
您好,感谢您宝贵的时间。我更新了问题详情以反映我打算做什么。
-
您真的需要在 EBELN 中用 1 填充所有表吗?