我有一个表,该表在单独的行中具有多个有效负载值。我想将这些行合并为一行以将所有数据组合在一起。表格看起来像这样。
+------------+--------------+------+----+----+----+----+
| 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 |
+------------+--------------+------+----+----+----+----+
我尝试了“设置”和“汇总”,但是它们并没有按我希望的那样工作,所以我不确定如何前进。
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:2)
tl; dr:
使用fill()函数填充所需组中的每d1-d4列中的所有空值(又称“日期+时间+用户”列),然后将其汇总\汇总到您的心脏内容。
长版
因此,最快的方法是使用称为“ fill()”的窗口函数。 此函数对列中每个给定字段的作用是: “向下看。向上看。找到最接近的非空值,然后将其复制!” 您当然可以 limit 看到它(例如,仅在上方看三行),但是在此示例中,不需要限制。因此您的填充函数将如下所示: FILL($ col,-1,-1) 因此,“ $ col”将引用所有选定的列。 “ -1”表示“视野无限”。 最后,“〜”表示“从D1列到D4列”。
因此,函数将如下所示:
现在,您可以使用“ dedup”转换来删除所有重复项,每个“组”仅保留1个副本。 另外,如果您仍然想使用“分组依据”,也可以这样做。
希望这有帮助=]
p.s 有更多方法可以做到这一点-需要使用“数据透视”转换和数组取消嵌套。但是在此过程中,您将丢失列的名称,并且需要重命名它们。