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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCP数据准备 - 向前和向后填充相关的知识,希望对你有一定的参考价值。

我有下表,我试图在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

我试图以这样的方式对其进行转换:如果Event为1,则Event中的前3个条目设置为1,Event中的后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

我试图使用窗口和条件来实现这一点,但没有成功。关于如何实现这种转变的任何想法?如果可以帮助实现此结果,我愿意拆分列或创建新的派生列。谢谢!

答案

您可以在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

以上是关于GCP数据准备 - 向前和向后填充的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 小部件,在应用程序组之间向前和向后共享数据

Java中List向前和向后遍历

JS正则向前查找和向后查找

每次在libgdx中单击按钮时如何向前和向后移动Sprite?

让玩家根据摄像机角度向前、向右、向左和向后移动

如何使用按钮在 UIPageViewController 中向前和向后导航?