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语句中将窗口函数用作条件的一部分。使用PREV和NEXT窗口函数,您可以获得窗口中当前行上方或下方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函数需要一个额外的参数来指定要排序的列。
以上是关于GCP数据准备 - 向前和向后填充的主要内容,如果未能解决你的问题,请参考以下文章