【发布时间】:2020-06-19 11:52:17
【问题描述】:
想象一个如下图所示的数据框:
+-------+--------+---------+---------+--------+-----------------+---+
|address|lastname|firstname|patientid|policyno|visitid |id |
+-------+--------+---------+---------+--------+-----------------+---+
|addr1 |Pits |Rodney |patid1 |policy1 |visituid_rodney_1| 1 |
|addr1 |Pits |Rodney |patid1 |policy1 |visituid_rodney_2| 1 |
|addr1 |Pits |Rodney |patid1 |policy1 |visituid_rodney_3| 1 |
|addr2 |Dobs |Aliya |patid2 |policy2 |visituid_aliya_1 | 2 |
|addr2 |Dobs |Aliya |patid2 |policy2 |visituid_aliya_2 | 2 |
|addr2 |Dobs |OP |patid3 |policy3 |visituid_OP_1 | 3 |
+-------+--------+---------+---------+--------+-----------------+---+
当名称 (firstname + lastname) 相同时,“id”的列值保持不变,当名称变得不同时 - 我想分配一个新的 id。
我需要这个,因为我想识别某个数据集(其中包含敏感细节),以便我可以在我的应用程序中使用相同的数据,但值已更改。字段id 将用作与其他数据帧连接的索引键。
关于id 的另一部分是其他虚拟数据帧也将包含类似的id 列,该列可能会使用monotonically_increasing_id() 填充,因此最好让id 从0 开始OR 1,以不断增加的方式。
如何在 scala 中实现这一目标?
【问题讨论】:
-
您可以创建一个接受两列(姓氏、名字)并计算唯一 ID(例如通过哈希)的 UDF。
-
嗨 @Blobonat 感谢 UDF 的想法。虽然我没有在我的帖子中提到它,但它确实在我脑海中浮现。如果有一些标准功能可以做这样的事情——那就太好了。如果不是 - 我想 UDF 将是要走的路。
-
我已经更新了下面的解决方案,如果有帮助,请检查并接受或支持.. :)
标签: scala dataframe apache-spark uniqueidentifier