提问人:Howins 提问时间:9/25/2023 更新时间:9/26/2023 访问量:51
如何根据字段的值将表合并到其他表中?
How can I merge table inside an other table base on the value of a field?
问:
我有一张这样的表:
╭─────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ 0 │ ╭───┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ │ 0 │ 2023-09-22 17:49:03.301 │ │
│ │ │ 1 │ INFO: 10.0.0.30:49398 - "GET ..." 200 OK │ │
│ │ ╰───┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ 1 │ ╭───┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ │ 0 │ 2023-09-22 17:44:11.024 │ │
│ │ │ 1 │ INFO: 10.0.2.177:15974 - "GET ..." 404 │ │
│ │ ╰───┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ 2 │ ╭───┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ │ 0 │ 2023-09-22 17:44:11.024 │ │
│ │ │ 1 │ INFO: 10.0.0.30:47184 - "GET ..." 500 │ │
│ │ ╰───┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
如果第 1 行的日期相同,如何合并每个单元格的第 0 行? 为了添加更多上下文,它是 AWS 日志的显示,我想合并来自同一请求的行(因此具有相同的时间戳),以便更好地查看日志。
在上面的示例中,我希望有一个新表(或更新的前一个表)来具有如下内容:
╭─────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ 0 │ ╭───┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ │ 0 │ 2023-09-22 17:49:03.301 │ │
│ │ │ 1 │ INFO: 10.0.0.30:49398 - "GET ..." 200 OK │ │
│ │ ╰───┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ 1 │ ╭───┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ │ 0 │ 2023-09-22 17:44:11.024 │ │
│ │ │ 1 │ INFO: 10.0.2.177:15974 - "GET ..." 404 │ │
| | | | INFO: 10.0.0.30:47184 - "GET ..." 500 │ │
│ │ ╰───┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
答:
1赞
pmf
9/25/2023
#1
假设底层数据结构是两个嵌套的字符串数组,如下所示:
[
['2023-09-22 17:49:03.301', 'INFO: 10.0.0.30:49398 - "GET ..." 200 OK'],
['2023-09-22 17:44:11.024', 'INFO: 10.0.2.177:15974 - "GET ..." 404'],
['2023-09-22 17:44:11.024', 'INFO: 10.0.0.30:47184 - "GET ..." 500']
]
然后,可以使用 group-by
按输入数组的第一个项目(日期行)对输入数组进行分组,然后使用项
循环访问这些组,以捕获其分组键(日期)和组合在一起的输入值数组。对于每个
,取后者,使用 skip
with amout 跳过它们的第一个项目(常见的日期线),然后将它们的内容展平
。最后,将捕获的日期预
后到每个组:0
1
group-by 0 | items {|date, logs|
$logs | each {skip 1} | flatten | prepend $date
}
╭───┬──────────────────────────────────────────────────────╮
│ 0 │ ╭───┬──────────────────────────────────────────────╮ │
│ │ │ 0 │ 2023-09-22 17:49:03.301 │ │
│ │ │ 1 │ INFO: 10.0.0.30:49398 - "GET ..." 200 OK │ │
│ │ ╰───┴──────────────────────────────────────────────╯ │
│ 1 │ ╭───┬────────────────────────────────────────────╮ │
│ │ │ 0 │ 2023-09-22 17:44:11.024 │ │
│ │ │ 1 │ INFO: 10.0.2.177:15974 - "GET ..." 404 │ │
│ │ │ 2 │ INFO: 10.0.0.30:47184 - "GET ..." 500 │ │
│ │ ╰───┴────────────────────────────────────────────╯ │
╰───┴──────────────────────────────────────────────────────╯
评论