使用DocumentDB作为接收器获取Azure流分析中的错误

时间:2016-11-09 07:57:39

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

我使用Azure Stream Analytics将事件从事件中心流式传输到DocumentDB。 我已经记录了输入查询输出,并使用示例数据对其进行了测试,并设法按预期返回结果。

但是当我启动流式传输作业并发送与之前的示例数据相同的有效负载时,我收到此错误消息:

  

根据DocumentDB db的文件数据库约束格式化文档[id]列:[my-database-name]和集合:[my-collection-name]。

我的示例数据是一个JSON数组:

[
 { "Sequence": 1, "Tenant": "T1", "Status": "Started" },
 { "Sequence": 2, "Tenant": "T1", "Status": "Ended" }
]

我已按如下方式配置输入:

  
      
  • 输入别名:eventhubs-events
  •   
  • 来源类型:数据流
  •   
  • 来源:Event Hub
  •   
  • 订阅:与我创建Google Analytics作业相同的订阅
  •   
  • 服务总线命名空间:现有的事件中心命名空间
  •   
  • 事件中心名称:events (命名空间中的现有事件中心)
  •   
  • 事件中心策略名称:具有读取权限的策略
  •   
  • 活动中心消费者群组:空白
  •   
  • 事件序列化格式:JSON
  •   
  • 编码:UTF-8
  •   

输出如下:

  
      
  • 输出别名:documentdb-events
  •   
  • Sink:DocumentDB
  •   
  • 订阅:与我创建Google Analytics作业相同的订阅
  •   
  • 帐户ID:现有的DocumentDB帐户
  •   
  • 数据库:记录(帐户中的现有数据库)
  •   
  • 集合名称模式:集合(数据库中的现有集合)
  •   
  • 文件ID:id
  •   

我的查询很简单:

SELECT
    event.Sequence AS id,
    event.Tenant,
    event.Status
INTO [documentdb-events]
FROM [eventhubs-events] AS event

1 个答案:

答案 0 :(得分:4)

结果输出中的所有字段名称都是自动低位的。

在我的DocumentDB集合中,我已经在分区模式下配置了集合,其中“/ Tenant”作为分区键。

由于案例与输出的案例不匹配,因此约束失败。

将分区键更改为“/ tenant”解决了问题。

希望通过分享我的调查结果可以为遇到这种情况的人们带来一些麻烦。

第二个选项

现在我们可以在Stream分析中更改compatibility-Level,而不是以小写字母更改分区键。

  

1.0版本:在Azure Stream Analytics引擎处理时,字段名称已更改为小写。

     

1.1版本:Azure流分析引擎处理字段名称时,案例敏感性会保持不变。