通过不产生输出使用 TIMESTAMP 进行基本查询
Posted
技术标签:
【中文标题】通过不产生输出使用 TIMESTAMP 进行基本查询【英文标题】:Basic query with TIMESTAMP by not producing output 【发布时间】:2015-08-06 14:58:18 【问题描述】:我有一个非常基本的设置,如果我使用 TIMESTAMP BY 语句,我永远不会得到任何输出。
我有一个流分析作业,它正在从事件中心读取数据并写入表存储。
查询如下:
SELECT
*
INTO
MyOutput
FROM
MyInput TIMESTAMP BY myDateTime;
如果查询使用时间戳语句,我永远不会得到任何输出事件。我确实在监控中看到了传入事件,监控和维护日志中都没有错误。我很确定源数据具有正确格式的正确列。
如果我删除时间戳语句,那么一切正常。我首先需要时间戳语句的原因是因为我需要在同一个作业中编写许多查询,将各种聚合写入不同的输出。如果我在一个查询中使用时间戳,我必须在所有其他查询中使用它。
我做错了吗?也许 SELECT * 不能很好地与 TIMESTAMP BY 配合使用?我只是没有找到任何文档解释...
【问题讨论】:
如果您在没有 TIMESTAMP 的情况下执行 SELECT * 并输出到 blob 存储以查看事件,您能否举几个 myDateTime/EventEnqueuedUtc 对的示例? myDateTime 值在所有行中是否按顺序排列?您在 CONFIGURE 选项卡上对 Late Arrival Tolerance Window、Out of Order Tolerance Window 进行了哪些设置,以及是调整还是放弃? @GregGalloway 当然,这里有两个例子:["myDateTime":"2015-08-02T10:59:02.0000000Z", "EventEnqueuedUtcTime":"2015-08-07T10:59:07.6980000 Z", "myDateTime":"2015-08-02T10:59:03.0000000Z", "EventEnqueuedUtcTime":"2015-08-07T10:59:07.6980000Z"]。延迟容差窗口:00.00:00:05,无序容差:00:00,操作:调整。 @GregGalloway 是的,myDateTime 值都是有序的。这只是我正在运行的一个测试,所以我可以生成一两个事件,看看它们如何通过或不通过... 还测试了将输出更改为 blob 容器而不是表存储并不能解决问题。这是我刚刚显示输入/输出事件的屏幕截图。前两个凹凸是我与您分享的没有时间戳的场景(首先是表输出,然后是 blob),第二个凹凸与添加时间戳的情况相同。还显示所有错误指标 = 0。prntscr.com/81vf6s 【参考方案1】:"myDateTime":"2015-08-02T10:59:02.0000000Z", "EventEnqueuedUtcTime":"2015-08-07T10:59:07.6980000Z"
延迟容忍窗口:00.00:00:05
您的所有事件都被视为迟到,因为 myDateTime 比 EventEnqueuedUtcTime 早 5 天。您能否尝试发送 myDateTime 为 UTC 且为“现在”的新事件,以便在几秒钟内匹配?
另外,当您开始工作时,您选择的工作开始日期时间是什么?你能确保在 myDateTime 值之前选择一个日期吗?你可以先试试这个。
【讨论】:
编辑提及工作开始日期时间。 啊啊啊,抱歉,我不认为提供时间戳会影响流分析如何确定事件是否迟到。当事件被物理添加到输入时,我的印象是它正在查看。在我的场景中,所有这些事件首先收集在其他一些外部存储中,然后被推送到 EventHub 并希望得到处理。也许你还可以有一个额外的指标——比如 Discarded late input events。 我同意。在这里向 Microsoft 提供很好的反馈:feedback.azure.com/forums/270577-azure-stream-analytics 如果你想做一个测试来确定是工作开始日期时间还是迟到的容忍度是罪魁祸首,我很想知道。 是的,将作业开始时间设置为自定义解决了输出事件的问题。将在 Azure uservoice 中记录我的建议。以上是关于通过不产生输出使用 TIMESTAMP 进行基本查询的主要内容,如果未能解决你的问题,请参考以下文章