azure - 使用流分析将数据从 IoT 中心传输到 Cosmos DB 会出现分区错误

标签 azure azure-cosmosdb azure-iot-hub azure-stream-analytics

我想使用流分析将数据从 IoT 中心传输到 Cosmos DB 和存储表。储物 table 没问题。但是,我的流分析在事件日志中显示以下数据转换错误:

“输出记录不包含用作分区键属性的“deviceId”列(区分大小写)。默认情况下,Azure 流分析会无限期地重试写入事件,直到写入成功。请考虑选择“删除输出错误策略”跳过此类错误,这样错误就不会阻止作业进度。写入 [0] 个批处理后遇到错误。”

deviceId 是我的 Cosmos 数据库中的分区键。我可以看到数据正确地进入流分析。以下是输入示例:

[{"deviceId":1,"dateStamp":"2019-03-27T18:55:43.3546682Z","temperature":6.510664596692969,"EventProcessedUtcTime":"2019-03-27T18:58:41.6172586Z","PartitionId":1,"EventEnqueuedUtcTime":"2019-03-27T18:55:43.3450000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"Simulator","ConnectionDeviceGenerationId":"636891216524279053","EnqueuedTime":"2019-03-27T18:55:43.3370000Z","StreamId":null}},
{"deviceId":1,"dateStamp":"2019-03-27T18:56:43.3809346Z","temperature":5.5680961758215428,"EventProcessedUtcTime":"2019-03-27T18:58:41.6172586Z","PartitionId":1,"EventEnqueuedUtcTime":"2019-03-27T18:56:43.3640000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"Simulator","ConnectionDeviceGenerationId":"636891216524279053","EnqueuedTime":"2019-03-27T18:56:43.3690000Z","StreamId":null}},
{"deviceId":1,"dateStamp":"2019-03-27T18:57:43.4122929Z","temperature":5.07182001605249,"EventProcessedUtcTime":"2019-03-27T18:58:41.6172586Z","PartitionId":1,"EventEnqueuedUtcTime":"2019-03-27T18:57:43.4050000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"Simulator","ConnectionDeviceGenerationId":"636891216524279053","EnqueuedTime":"2019-03-27T18:57:43.4010000Z","StreamId":null}}]

My SQL API查询如下,ColdStorageSmartFridge是存储表,HotStorageSmartFridge是cosmosdb:

SELECT
    deviceId,
    dateStamp as time,
    temperature
INTO
    [ColdStorageSmartFridge]
FROM
    [IoTHubSmartFridge]

SELECT 
    deviceId,
    dateStamp,
    temperature    
INTO
    [HotStorageSmartFridge]
FROM
    [IoTHubSmartFridge]

我花了整个下午的时间来解决这个问题,但没能成功。我错过了什么?

最佳答案

看来您的分区键可能区分大小写。以前,Azure 流分析将不同字段的大小写为小写。虽然这不是预期的行为,但我们不想在服务中引入重大更改,因此在“compatibility level 1.1”下发布了修复程序。

您能否尝试将工作兼容级别更改为 1.1,并告诉我是否可以解决您的问题。

我们将在不久的将来更改默认的兼容级别。

关于azure - 使用流分析将数据从 IoT 中心传输到 Cosmos DB 会出现分区错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55384850/

相关文章:

powershell - 通过 Azure PowerShell 预配 Azure VM 时出现“角色大小”错误

azure - 了解 DocumentDB 响应 header 中的 x-ms-resource-usage

database - 如何在cosmos db中构建多对多关系

c# - 当目标架构为arm32v7时,azure iot Edge构建失败(在ubuntu中)

azure - 是否自动进行故障转移以及自动 SQL Azure 故障转移需要多长时间

c# - 需要 CancellationToken 的替代品

c# - 用于发送短信和电子邮件通知的 Azure 服务

azure - 部署 Azure 文档数据库时出现错误

c# - 用于从 Azure IoT 中心接收消息的 UWP 应用

c# - 高 CPU Azure 辅助角色