gpt4 book ai didi

Azure 流分析输入损坏了包含时区信息的字符串

转载 作者:行者123 更新时间:2023-12-02 07:12:06 27 4
gpt4 key购买 nike

我正在使用 Azure 事件中心来收集基于时间的事件。将 Azure 流分析 (ASA) 连接到它。

这会导致 ASA 级别的时区信息丢失。

我确定的内容如下:我已发送 JSON 格式的数据,其中包含带有与 ISO 8601 兼容的时间戳的字符串。例如:"event_timestamp": "2016-09-02T19:51:38.657+02:00"

我通过 ServiceBus Explorer(感谢编写此工具的人)检查该字符串是否完全按原样到达事件中心。

在流分析中,我添加了事件中心作为输入。当我在 Azure 门户中使用选项“样本数据”时,会产生包含以下内容的数据: "event_timestamp":"2016-09-02T17:51:38.6570000"

为什么流分析要删除时区信息???

根据 ISO 8601,未在时间戳中指定时区意味着时间戳将转换为本地时间。这是否意味着 Azure 资源运行所在的时区?在这种情况下我该如何使用异地复制?

这意味着在使用数据并将其呈现在仪表板中之后,所有时间都与运行流分析的服务器的时间相关?

我是否需要在 JSON 有效负载中单独添加时区信息并随后重建它?

我的结论是,ASA 实际上从我的数据流中删除/破坏了信息。想象一下这个 ASA 查询: SELECT * INTO [myoutput] FROM [myinput]

这会更改我的数据的内容 (*)。所有看起来是带有时区信息的日期时间的字符串都将被转换。

在我看来,这是非常不受欢迎的行为。

我对这个论坛中其他人的意见非常感兴趣。

最佳答案

Azure 中的所有内容都以 UTC 时区运行,除非另有支持和明确配置(支持设置时区的服务并不多)。

如果您仔细查看引用的示例,您会发现时间戳在 ASA 中转换为 UTC,这就是时区信息丢失的原因:

发送到事件中心:"event_timestamp": "2016-09-02T19:51:38.657+02:00"

在 ASA 中收到:"event_timestamp":"2016-09-02T21:51:38.6570000"

请注意,您的事件在 19:51:38.657 +2:00 中发送,ASA 读取 21:51:38.6570000,这是完全相同的。

更新

我不是 ISO 标准专家,但以下是 ASA Docu 的一些摘录: Azure Stream Analytics data types

datetime Defines a date that is combined with a time of day with fractional seconds that is based on a 24-hour clock and relative to UTC (time zone offset 0).

convertions:

datetime string converted to datetime following ISO 8601 standard

据记录,日期时间采用 UTC 格式。因此不需要明确指定它。我无法判断这是否适合 ISO,首先是因为 WikiPedia 不是 ISO 文档,其次是因为我不是 ISO 专家。

关于Azure 流分析输入损坏了包含时区信息的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39471333/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com