【发布时间】:2020-04-03 11:41:09
【问题描述】:
给定一个如下所示的查询:
SELECT
EventDate,
system.Timestamp as test
INTO
[azuretableoutput]
FROM
[csvdata] TIMESTAMP BY EventDate
根据文档,EventDate 现在应该用作时间戳。 但是,当使用此路径将数据存储到 blobstorage 中时:
sadata/Y={datetime:yyyy}/M={datetime:MM}/D={datetime:dd}
我似乎仍然需要摄取时间。就我而言,摄取时间毫无意义,我需要使用 EventDate 作为路径。这可能吗?
在 Visual Studio 中检查数据时,test 和 EventDate 应该相等,但结果如下所示:
EventDate ;Test
2020-04-03T11:13:07.3670000Z;2020-04-09T02:16:15.5390000Z
2020-04-03T11:13:07.0460000Z;2020-04-09T02:16:15.5390000Z
2020-04-03T11:13:07.0460000Z;2020-04-09T02:16:15.5390000Z
2020-04-03T11:13:07.3670000Z;2020-04-09T02:16:15.5390000Z
2020-04-03T11:13:08.1470000Z;2020-04-09T02:16:15.5390000Z
延迟到货窗口设置为:99:23:59:59 乱序容差设置为:00:00:00:00,乱序操作设置为调整。
在 Azure 上的流分析中运行相同的查询时,我得到以下结果:
[{"eventdate":"2020-04-03T11:13:20.1060000Z","test":"2020-04-03T11:13:20.1060000Z"},
{"eventdate":"2020-04-03T11:13:20.1060000Z","test":"2020-04-03T11:13:20.1060000Z"},
{"eventdate":"2020-04-03T11:13:20.1060000Z","test":"2020-04-03T11:13:20.1060000Z"}]
到目前为止一切顺利。在 Azure 上使用数据运行查询时,它会生成以下路径:
Y=2020/M=04/D=09
它应该产生这条路径: 年=2020/月=04/日=03 有趣的是,在检查实际存储在 blobstorage 中的数据时,我发现:
EventDate,test
2020-04-03T11:20:39.3100000Z,2020-04-09T19:33:35.3870000Z,
System.timestamp 似乎只在对采样数据进行查询测试时才会更改,但在查询正常运行并接收数据时实际上并未更改。
我已将延迟到达设置设置为 0 天和 20 天对此进行了测试。实际上,我需要禁用延迟到达调整,因为我可能会通过管道获得多年前的事件。
【问题讨论】:
-
当您测试查询或您的 blob 输出不使用路径时,您是否获得了所需的时间戳?
-
blob 始终将路径输出为当前日期,即使 eventdate 时间戳早于 2-3 天。所以我在输出时检查它,并通过 Visual Studio 对其进行测试。
-
“System.Timestamp”的值用于 blob 输出路径。 “System.Timestamp”通常使用“TIMESTAMP BY”中的值分配,但是,由于无序阈值和迟到阈值,这可能会有所不同。您可以选择“System.Timestamp”作为一列来确认行为。
标签: azure-blob-storage azure-stream-analytics