问答 查看内容
返回列表

Spark ETL 中不同字段类型的内连接结果不一致

16 1
发表于 5 小时前 | 查看全部 阅读模式
Spark ETL 中,两张数据集的门店 ID 分别为文本和数字类型。使用门店 ID 进行内连接时,交换两张表的输入顺序后,连接结果和门店数统计结果不一致,如何处理?

评论1

观小程楼主Lv.1 发表于 5 小时前 | 查看全部
原因是两张表的门店 ID 格式不统一。比如文本表中有门店 ID `001`,数字表中对应值为 `1`:按数字规则可以关联,但转成文本后,`001` 与 `1` 并不相同,因此两种写法的连接结果会不同。

门店 ID 属于标识字段,建议统一按文本处理。在连接前将数字类型转换为文本,并固定使用同一连接条件:

```sql
select *
from 文本门店表 a
inner join 数字门店表 b
  on a.`门店id` = cast(b.`门店ID` as string)
```

如果数字表作为第一个输入,则相应调整为:

```sql
select *
from 数字门店表 a
inner join 文本门店表 b
  on cast(a.`门店ID` as string) = b.`门店id`
```

这样无论哪张表在前,都会按相同的门店 ID 文本规则进行关联。

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表