GCP数据预填充和后填充

时间:2018-08-15 21:24:33

标签: google-cloud-platform google-cloud-dataprep

我有一张要在GCP数据准备中处理的表格:

RoutePrefix

我正在尝试以某种方式对其进行转换,如果Event为1,则将Event中的前3个条目设置为1,并将Event中的后2个条目设置为2。

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

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 个答案:

答案 0 :(得分:0)

您可以在IF语句中将窗口函数用作条件的一部分。使用PREVNEXT窗口函数,您可以获取窗口当前行上方或下方X行的值。一旦获得值,就可以比较它们是否与期望值匹配,并相应地调整IF语句。

对于您的用例,您需要验证在1或2位置之前的PREV值是否等于1,并用数字2替换这些行。如果不正确,则在位置1、2或3处的NEXT值等于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上输入此公式,请在“功能”选项卡下,选择“自定义公式”。在自定义公式窗口下,将公式类型设置为“多行公式”,因为PREV和NEXT函数需要一个附加参数来指定要对哪一列进行排序。

enter image description here