在Google数据准备中将多行合并为单行

时间:2020-04-15 14:10:41

标签: google-cloud-dataprep trifacta

我有一个表,该表在单独的行中具有多个有效负载值。我想将这些行合并为一行以将所有数据组合在一起。表格看起来像这样。

+------------+--------------+------+----+----+----+----+
|    Date    |     Time     | User | D1 | D2 | D3 | D4 |
+------------+--------------+------+----+----+----+----+
| 2020-04-15 | 05:39:45 UTC | A    |  2 |    |    |    |
| 2020-04-15 | 05:39:45 UTC | A    |    |  5 |    |    |
| 2020-04-15 | 05:39:45 UTC | A    |    |    |  8 |    |
| 2020-04-15 | 05:39:45 UTC | A    |    |    |    |  7 |
+------------+--------------+------+----+----+----+----+

我想将其转换为类似的内容。

+------------+--------------+------+----+----+----+----+
|    Date    |     Time     | User | D1 | D2 | D3 | D4 |
+------------+--------------+------+----+----+----+----+
| 2020-04-15 | 05:39:45 UTC | A    |  2 |  5 |  8 |  7 |
+------------+--------------+------+----+----+----+----+

我尝试了“设置”和“汇总”,但是它们并没有按我希望的那样工作,所以我不确定如何前进。

任何帮助将不胜感激。 谢谢。

1 个答案:

答案 0 :(得分:2)

tl; dr:

使用fill()函数填充所需组中的每d1-d4列中的所有空值(又称“日期+时间+用户”列),然后将其汇总\汇总到您的心脏内容。

长版

因此,最快的方法是使用称为“ fill()”的窗口函数。 此函数对列中每个给定字段的作用是: “向下看。向上看。找到最接近的非空值,然后将其复制!” 您当然可以 limit 看到它(例如,仅在上方看三行),但是在此示例中,不需要限制。因此您的填充函数将如下所示: FILL($ col,-1,-1) 因此,“ $ col”将引用所有选定的列。 “ -1”表示“视野无限”。 最后,“〜”表示“从D1列到D4列”。

因此,函数将如下所示:

fill_creation

这将使您的列看起来像这样: output columns

现在,您可以使用“ dedup”转换来删除所有重复项,每个“组”仅保留1个副本。 另外,如果您仍然想使用“分组依据”,也可以这样做。

希望这有帮助=]

p.s 有更多方法可以做到这一点-需要使用“数据透视”转换和数组取消嵌套。但是在此过程中,您将丢失列的名称,并且需要重命名它们。