GCP 数据准备 - 前向和后向填充

GCP Data Prep- forward and backward fill

我有以下 table 我想在 GCP 数据准备中解决:

Timestamp   Event
2018-04-01   0
2018-04-02   0
2018-04-03   0
2018-04-04   0
2018-04-05   1
2018-04-06   0
2018-04-07   0
2018-04-08   0

我正在尝试以某种方式转换它,如果事件为 1,则事件中的前 3 个条目设置为 1,事件中接下来的 2 个条目设置为 2。

因此,基本上数据集在转换后将如下所示

Timestamp   Event
2018-04-01   0
2018-04-02   1
2018-04-03   1
2018-04-04   1
2018-04-05   1
2018-04-06   2
2018-04-07   2
2018-04-08   0

我曾尝试使用 window 和条件来实现这一点,但 w/o 成功了。 关于如何实现这种转变有什么想法吗?如果可以帮助实现此结果,我愿意拆分列或创建新的派生列。 谢谢!

您可以在 IF statements. Using the PREV and NEXT window 函数中使用 window 函数作为条件的一部分 您可以获得 [=] 中当前行上方或下方 X 行的值22=]。获得这些值后,您可以比较它们是否与预期值匹配并相应地调整您的 IF 语句。

对于您的用例,您需要验证前面 1 或 2 个位置的 PREV 值是否等于 1,并将这些行替换为数字 2。如果不正确,如果位置 1、2 的 NEXT 值或 3 等于 1,行应替换为数字 1。最后,您需要检查当前行的值是否为 1,并将其余行替换为 0。将其转换为 Dataprep 接受的公式看起来像下面这样:

IF(PREV(Event, 1) == 1 || PREV(Event, 2) == 1, 2, IF(NEXT(Event, 1) == 1 || NEXT(Event, 2) == 1 || NEXT(Event, 3) == 1, 1, IF(Event == 1, 1, 0)))

要在 Dataprep 上输入此公式,请在“函数”选项卡下,select“自定义公式”。在自定义公式 window 下,将公式类型设置为“多行公式”,因为 PREV 和 NEXT 函数需要一个额外的参数来指定要排序的列。