我在保存从Azure IoT中心到Cosmos DB的遥测时遇到了问题。我有以下设置:
来自IoT Hub的示例消息:
{"id":33,"deviceId":"test2","cloudTagId":"cloudTag1","value":24.79770721657087}
处理事件的流分析中的查询:
SELECT
concat(deviceId, cloudtagId) as telemetryid, value as temperature, id, deviceId, 'asd' as '$pk', deviceId as PartitionKey
INTO
[TableApiCosmosDb]
From
[devicesMessages]
每次作业尝试将输出保存到CosmosDB时都会出现问题我收到错误An error occurred while preparing data for DocumentDB. The output record does not contain the column '$pk' to use as the partition key property by DocumentDB
注意:我在尝试解决问题时添加了$pk
列和PartitionKey
。
编辑这里是输出配置:
有谁知道我做错了什么?
答案 0 :(得分:1)
不幸的是,不支持CosmosDB中的Table API作为ASA的输出接收器。
如果要使用Table作为输出,可以使用存储帐户下的一个。 很抱歉给您带来不便。
我们将来会添加Cosmos DB Table API。
谢谢! JS - Azure流分析团队
答案 1 :(得分:1)
我也有这个问题。尽管在UI中尚不清楚,但目前仅支持CosmosDB的SQL API。我切换到那个,一切都很美妙。
答案 2 :(得分:0)
尝试
SELECT
id as PartitionKey, SUM(CAST(temperature AS float)) AS temperaturesum ,AVG(CAST(temperature AS float)) AS temperatureavg
INTO streamout
FROM
Streaminput TIMESTAMP by Time
GROUP BY
id ,
TumblingWindow(second, 60)
特殊字符是问题。
虽然使用分区作为'id'创建输出,而在插入查询'deviceId'作为PartitionKey时,因为它没有正确分区。
示例:强>
Todays_Date | 521_ERROR | 527_ERROR |
+---------------------+-----------+-----------+
| 2017-09-14 | 26098 | 35870 |
| 2017-09-15 | 26098 | 35870 |
| 2017-09-16 | 26098 | 35870 |
+---------------------+-----------+-----------+