【问题标题】:KQL join two tables with different TimeStampKQL 连接两个具有不同时间戳的表
【发布时间】:2021-11-01 14:12:30
【问题描述】:

我正在使用 KQL 并尝试在时间戳字段上连接两个表。问题是它们在秒数方面有不同的值。

表格“TableToJoin”将每分钟摄取一次记录(因此秒数为 00),并且我创建的 MeasureTime 列将具有不同的秒数,具体取决于我何时按下运行按钮(知道它将从现在开始计算 36 小时)

你知道我可以用什么方法来解决这个问题吗?

我把我的代码贴在下面:

range MeasureTime from ago(36h) to now() step(10m) 
| join kind=rightouter 
(TableToJoin| where TagName == 'TagName') on $left.MeasureTime == $right.Timestamp | take 10

TableToJoin 时间戳:

2021-11-01T14:09:00Z
2021-11-01T14:08:00Z
2021-11-01T14:06:00Z
2021-11-01T14:05:00Z
2021-11-01T14:04:00Z
2021-11-01T14:03:00Z
2021-11-01T14:02:00Z
2021-11-01T14:01:00Z
2021-11-01T14:00:00Z

MeasureTime 时间戳:

2021-11-01T13:59:20.5230363Z
2021-11-01T14:00:20.5230363Z
2021-11-01T14:01:20.5230363Z
2021-11-01T14:02:20.5230363Z
2021-11-01T14:03:20.5230363Z
2021-11-01T14:04:20.5230363Z
2021-11-01T14:05:20.5230363Z
2021-11-01T14:06:20.5230363Z

提前致谢

【问题讨论】:

    标签: azure azure-data-explorer kql


    【解决方案1】:

    您可以使用 bin() 函数“四舍五入”时间戳。例如:

    range MeasureTime from ago(36h) to now() step(10m) 
    | extend MeasureTime = bin(MeasureTime, 10s)
    | join kind=rightouter (
        TableToJoin| where TagName == 'TagName'
    ) on $left.MeasureTime == $right.Timestamp | take 10
    

    【讨论】:

    • 谢谢@Avnera。我能够使用 00.00 秒的日期将 ago() 和 now() 更改为 datetime() 来解决它
    • 酷肖恩。我为它添加了一个示例,它可能更通用,因为您不需要提供固定的“日期时间”并且可以使用相对日期时间函数。
    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 2011-04-07
    • 2021-01-09
    • 2014-07-17
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多