如何在运行Azure Stream Analytics Query

时间:2018-05-08 04:13:31

标签: azure azure-stream-analytics

在应用程序中,有一组事件进入事件中心,作为流分析的一部分,我有一组要求,其中一个是查明某些记录集是否未到达最后一个事件中心分钟。我在消息中有一个时间戳告诉我消息的有效时间,但是为了计算滞后(在消息的有效时间和now()之间),我需要知道运行时的当前时间戳。查询。

我尝试了System.Timestamp,但它给了我值#34; 1970-01-01T12:01:01.0010000Z"

该消息的排队时间戳最新如" 2018-05-06T00:00:00.1000000Z" ...但不确定为什么System.timestamp不会返回我的入队时间(当我有未使用" Timestamp By" Clause)。

所以,我有两个问题:

  1. 如何在执行流分析查询时获取服务器的当前时间戳。
  2. 为什么system.timestamp不返回enqueue timestamp
  3. 查询: 选择    System.Timestamp为ts 从     源

    结果: " 1970-01-01T12:01:01.0010000Z"

    输入数据中的所有时间戳都不早于2018年5月6日。

    谢谢, Rajneesh

1 个答案:

答案 0 :(得分:1)

  

该消息的Enqueue时间戳最新如“2018-05-06T00:00:00.1000000Z”...但不确定为什么System.timestamp不会返回我的入队时间(当我没有使用“Timestamp By”时) “条款”。

System.Timestamp (Stream Analytics)所述:

  

如果没有为给定输入指定TIMESTAMP BY子句,则将事件的到达时间用作时间戳。例如,在事件中心输入的情况下将使用事件的入队时间。

我刚测试了这个问题并发现如果您只是在Azure门户的“JOB拓扑>查询”下测试查询,那么对于没有指定TIMESTAMP BY子句的方法,System.Timestamp的值将是{{ 1}}。在指定TIMESTAMP BY子句时,System.Timestamp的值将是您在TIMESTAMP BY子句中指定的列值。

然后,我刚为我的工作创建了一个Blob输入和Blob outout,然后在Overview选项卡下,单击Start以运行我的Stream Analytics作业,我可以成功检索System.Timestamp的正确值。

<强>查询:

1970-01-01T12:01:01.0010000Z

<强> TEST:

enter image description here

<强>更新

  

如何在执行流分析查询时获取服务器的当前时间戳。

根据您的要求,我假设您可以使用JavaScript UDF。我刚刚创建了一个示例UDF,如下所示:

SELECT birth,name,System.Timestamp as t   
into output
FROM input

<强> TEST:

enter image description here

您可以计算UDF中的延迟或利用内置函数Date and Time Functions