azure stream analytics to cosmos db

时间:2017-06-06 11:08:06

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

我在保存从Azure IoT中心到Cosmos DB的遥测时遇到了问题。我有以下设置:

  • IoT Hub - 用于事件聚合
  • Azure流分析 - 用于事件流处理
  • 使用Table API的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

编辑这里是输出配置:

enter image description here

有谁知道我做错了什么?

3 个答案:

答案 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 |
+---------------------+-----------+-----------+