设想如下所示的Dataframe:
+-------+--------+---------+---------+--------+-----------------+---+
|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
将用作与其他Dataframe连接的索引键。
另一部分关于 id
其他虚拟Dataframe也将包含类似的 id
可能会使用 monotonically_increasing_id()
所以最好是 id
从0或1开始,以不断增加的方式。
我怎样才能用scala在spark中实现这一点?
2条答案
按热度按时间ldioqlga1#
使用
window
功能。输出
mtb9vblg2#
那么有哪些明显的改进呢?两者之间的分隔符-哈希前的大写或小写字符。如果不清除,则用分隔符替换所有空格和奇数字符。
所以更好的方法是:
不这样做意味着在另一个答案中,另一个答案在散列方面可以与另一个答案相同。
输出: