检查一行中多列的内容,并根据内容添加具有值的新列

时间:2018-02-26 11:20:30

标签: scala apache-spark

我有一个包含频道信息的数据集。 我现在想要的是聚合f.e.所有通道都以X_开头,如果其中一个状态值“不合适”,新列中的值也应该“不合适”,否则“好”

+-----------------+-----------------+-----------------+-----------------+----------------+
|X_ChannelA_status|Y_ChannelB_status|X_ChannelC_status|X_ChannelD_status|X_channel_status|
+-----------------+-----------------+-----------------+-----------------+----------------+
|         not okay|             okay|             okay|         not okay|            true|
|         not okay|         not okay|         not okay|         not okay|            true|
+-----------------+-----------------+-----------------+-----------------+----------------+

我已经通过映射确定了这样的事情,并且不适用于零和“不好”= 1且“好”= 0的情况。 然后我将所有列汇总为一个新列,如果新列中的值是> 0然后很明显,其中一列必须包含“不好”。

val df_grouped = df_filtered.select(list_groupX.map(col).reduce((c1, c2) => c1 + c2) as "sum")

我很想摆脱字符串到int映射的事情,因为我觉得它会减慢计算速度。

0 个答案:

没有答案