我的spark数据框如下
+-----+------+-----------+
|col_1| col_2| col_3|
+-----+------+-----------+
| abc| 123| Allowed|
|dasdj| null|Not-Allowed|
| dce| 786| wrong|
| null| 23456|Not-Allowed|
| def|682364| temp|
| bcr| 786|Not-Allowed|
+-----+------+-----------+
我的要求是创建一个新列并捕获 col_1
以及 col_2
并捕获 col_3
值,并替换 col_3
默认值无效(“不允许”)
issue列包含 col_1
, col_2
, col_3
如果 col_1
或者 col_2
为null或 col_3
除了允许和不允许之外。
连接之后,我要更新 col_3
默认值为“不允许”。
我的预期产出:
+-----+------+-----------+------------------+
|col_1| col_2| col_3| issue|
+-----+------+-----------+------------------+
| abc| 123| Allowed| null|
|dasdj| null|Not-Allowed|dasdj,,Not-Allowed|
| dce| 786|Not-Allowed| dce,786,wrong|
| null| 23456|Not-Allowed|,23456,Not-Allowed|
| def|682364|Not-Allowed| def,682364,temp|
| bcr| 786|Not-Allowed| null|
+-----+------+-----------+------------------+
如果有人能给我建议一个实现这一目标的方法,我会很感激吗?
1条答案
按热度按时间j1dl9f461#
你可以用
when
函数来检查col_1
或者col_2
为空或col_3
与允许/不允许的值不同,然后在列中输入:更新列的步骤
col_3
使用默认值Not-Allowed
,则使用与when
功能。