在 PySpark 中,存在这样的概念coalesce(colA, colB, ...):每行将从这些列中获取它遇到的第一个非空值。但是,我希望coalesce(rowA, rowB, ...)能够在每列中获取它从这些行中遇到的第一个非空值。我想合并一组或行窗口中的所有行。
例如,给定以下数据集,我想合并每个类别的行并按日期升序排列。
+---------+-----------+------+------+
| category| date| val1| val2|
+---------+-----------+------+------+
| A| 2020-05-01| null| 1|
| A| 2020-05-02| 2| null|
| A| 2020-05-03| 3| null|
| B| 2020-05-01| null| null|
| B| 2020-05-02| 4| null|
| C| 2020-05-01| 5| 2|
| C| 2020-05-02| null| 3|
| D| 2020-05-01| null| 4|
+---------+-----------+------+------+
Run Code Online (Sandbox Code Playgroud)
我应该得到的输出是......
+---------+-----------+------+------+
| category| date| val1| val2|
+---------+-----------+------+------+
| A| 2020-05-01| 2| 1|
| B| 2020-05-01| …Run Code Online (Sandbox Code Playgroud) pyspark ×1