【问题标题】:Combine multiple rows into single row in Google Data Prep在 Google 数据准备中将多行合并为单行
【发布时间】:2020-04-15 14:10:41
【问题描述】:

我有一个表,它在不同的行中有多个有效负载值。我想将这些行组合成一行以将所有数据放在一起。表格看起来像这样。

+------------+--------------+------+----+----+----+----+
|    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 |
+------------+--------------+------+----+----+----+----+

我尝试了“设置”和“聚合”,但它们没有按照我的意愿工作,我不知道如何继续。

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

【问题讨论】:

    标签: google-cloud-dataprep trifacta


    【解决方案1】:

    tl;博士:

    使用 fill() 函数填充所需组中每个 d1-d4 列中的所有空值(AKA - 列日期+时间+用户),然后删除\聚合到您的心脏内容。

    长版

    因此,最快的方法是使用名为“fill()”的窗口函数。 这个函数对列中的每个给定字段做了什么,它告诉它: “向下看。向上看。找到最接近的非空值,并复制它!” 你当然可以限制它的视线(例如,只看上面的 3 行),但对于这个例子,不需要限制。所以你的填充函数将如下所示: 填充($col,-1,-1) 所以 "$col" 将引用所有选择的列。 “-1”表示“无限视野”。 最后,“~”表示“从 D1 列到 D4 列”。

    因此,函数将如下所示:

    .

    这反过来会使您的列看起来像这样: .

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

    希望这会有所帮助 =]

    附言 有更多方法可以做到这一点 - 这需要使用“枢轴”转换和数组取消嵌套。但在此过程中,您会丢失列名,并且需要重命名它们。

    【讨论】:

    • 嘿阿米特,看来我的食谱根本无法运行。我无法加载新样本或将其作为作业运行。其他所有食谱似乎都可以正常工作。任何想法。
    • 不是我能想到的。可能有很多原因。例如,源处的架构更改。我建议您访问社区网站community.trifacta.com/s - 并在那里询问。你会在那里得到更多的回应=]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多