Azure 流分析输出到 Azure Cosmos DB

Posted

技术标签:

【中文标题】Azure 流分析输出到 Azure Cosmos DB【英文标题】:Azure Stream Analytics output to Azure Cosmos DB 【发布时间】:2019-04-17 03:06:54 【问题描述】:

流分析作业(到 CosmosDB 输出的 iot 集线器)“启动”命令失败并出现以下错误。

[12:49:30 PM] 源 'cosmosiot' 出现了 1 次 kind 处理之间的“OutputDataConversionError.RequiredColumnMissing” 次 '2019-04-17T02:49:30.2736530Z' 和 '2019-04-17T02:49:30.2736530Z'.

我按照说明进行操作,但不确定是什么导致了此错误。 请问有什么建议吗?这是 CosmosDB 查询:

SELECT
[bearings temperature],
[windings temperature],
[tower sway],
[position sensor],
[blade strain gauge],
[main shaft strain gauge],
[shroud accelerometer],
[gearbox fluid levels],
[power generation],
[EventProcessedUtcTime],
[EventEnqueuedUtcTime],
[IoTHub].[CorrelationId],
[IoTHub].[ConnectionDeviceId]
INTO
cosmosiot
FROM
TurbineData 

【问题讨论】:

这可能是属性名称区分大小写的问题吗?在 ASA v1.0 中,输出属性名称是小写的。在 v1.1 中,它们不是。这可能会导致与您的(区分大小写的)Cosmos DB 属性名称不匹配。您可以通过查看您的 ASA 作业设置进行检查(其中一个选项卡用于兼容性级别) 运气不好,大卫。我仍然遇到同样的错误 如果您编辑问题以显示您的 ASA 查询以及您在 Cosmos DB 中为您的集合定义的内容,将会有所帮助。 有关上述错误的其他详细信息以及输出事件有效负载的一部分应包含在诊断日志中。您能否启用诊断日志并查看那里的其他详细信息是否有帮助?另外,您是否仍会收到输出事件,或者这会影响所有输出事件吗? 嗨,David,我再次尝试创建 IOT 设备模拟解决方案加速器。流分析作业(iot hub 到 cosmosdb)与实时数据完美配合。历史数据的问题仍然存在(自定义计划设置过去的日期/时间)。 【参考方案1】:

如果您在查询中指定字段(即Select Name, ModelNumber ...)而不是仅使用Select * ...,则在使用兼容级别1.0 时,字段名称默认转换为小写,这会导致Cosmos DB 失效。在门户中,如果您打开流分析作业并转到“配置”部分下的“兼容性级别”并选择应该可以解决问题的 v1.1 或更高版本。您可以在此处阅读有关流分析文档中兼容性级别的更多信息:https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-compatibility-level

【讨论】:

以上是关于Azure 流分析输出到 Azure Cosmos DB的主要内容,如果未能解决你的问题,请参考以下文章

Azure 流分析输出到 azure 函数应用

为啥 Azure 流分析将数据输出到单独的文件?

发生错误发送事件:Azure 函数输出适配器无法将事件写入 Azure 函数作为流分析作业输出

带有 azure 函数输出的流分析,错误写入批次

Azure 流分析:SQL 输出不起作用

无法将 Azure 函数添加为流分析作业输出