如何对datetype数据列进行排序,并在pyspark中忽略空值的同时在新列中获取数组形式的列名?

ajsxfq5m  于 2023-01-16  发布在  Spark
关注(0)|答案(1)|浏览(117)

数据如下所示,我需要一个名为"result_column"的附加列
| 个人标识|第1天|第二天|第3天|第4天|结果列|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 第1页|2022年1月23日|2022年1月22日|无效|2022年1月25日|[第2、1、4天]|
| 第二页|2022年2月15日|2022年2月16日|无效|无效|[d1、d2]|
对不起,如果我的问题框架是不可理解的,但我希望,上面的数据传达我所需要的。

icnyk63a

icnyk63a1#

在Spark SQL中:

transform(
      array_except(sort_array(
       zip_with(array(d1,d2,d3,d4), array('d1','d2','d3','d4'), (x,y) -> case when x is not null then concat_ws(x,y) end)
       ), array(null))
  , x -> right(x, 2)
  )

我的方法是将列名和日期压缩在一起,删除空值,先将它们与日期串接,然后排序,去掉日期。
可能有一个更优雅的解决方案,但它看起来像工作

相关问题