我在看窗口函数寻找Spark DataFrame
在.net(c#)中。
我有一个Dataframe df
包含年、月、日、小时、分钟、id、类型和值列:
| 2021 | 3 | 4 | 8 | 9 | 87 | Type1 | 380.5 |
| 2021 | 3 | 4 | 8 | 10 | null | null | null |
| 2021 | 3 | 4 | 8 | 11 | null | null | null |
| 2021 | 3 | 4 | 8 | 12 | null | null | null |
| 2021 | 3 | 4 | 8 | 13 | 87 | Type1 | 0.0 |
| 2021 | 3 | 4 | 8 | 14 | 87 | Type1 | 0.0 |
我想用前一行基于年、月、日、小时、分钟的值填充空行(null),如下所示:
| 2021 | 3 | 4 | 8 | 9 | 87 | Type1 | 380.5 |
| 2021 | 3 | 4 | 8 | 10 | 87 | Type1 | 380.5 |
| 2021 | 3 | 4 | 8 | 11 | 87 | Type1 | 380.5 |
| 2021 | 3 | 4 | 8 | 12 | 87 | Type1 | 380.5 |
| 2021 | 3 | 4 | 8 | 13 | 87 | Type1 | 0.0 |
| 2021 | 3 | 4 | 8 | 14 | 87 | Type1 | 0.0 |
到目前为止,我在scala中找到了使用windows和lag函数的解决方案,但我不知道如何在c#中实现。在scala中,窗口的定义如下: val window = Window.orderBy("Year", "Month", "Day", "Hour", "Minute")
我想添加一个newvalue列,使用 var filledDataFrame = df.WithColumn("newValue", Functions.When(df["Value"].IsNull(), Functions.Lag(df["Value"], 1).Over(window)).Otherwise(df["Value"])
如何在.net中为spark定义一个窗口,并使用滞后函数向前填充空值?
1条答案
按热度按时间ybzsozfc1#
要使用lag和.net for apache spark的窗口,您已经非常接近了,需要:
这将导致:
但你可能想要
Last
而不是Lag
可以跳过空值:结果是:
希望有帮助!
预计起飞时间
(这项工作所需的using语句)