我正在使用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作业的订阅相同
- Service Bus名称空间:现有的Event Hub名称空间
- 事件中心名称:事件(命名空间中的现有事件中心)
- 事件中心策略名称:具有读访问权限的策略
- 事件中心消费者组:空白
- 事件序列化格式:JSON
- 编码:UTF-8
输出如下:
- 输出别名:documentdb-events
- 接收器:DocumentDB
- 订阅:与我创建Google Analytics作业的订阅相同
- 帐户ID:现有的DocumentDB帐户
- 数据库:记录(帐户中的现有数据库)
- 集合名称模式:集合(数据库中的现有集合)
- 文件ID:id
我的查询很简单:
SELECT
event.Sequence AS id,
event.Tenant,
event.Status
INTO [documentdb-events]
FROM [eventhubs-events] AS event
原来输出中的所有字段名称都是自动低级的。
在我的DocumentDB集合中,我已经在分区模式下配置了集合,其中“/ Tenant”作为分区键。
由于案例与输出的案例不匹配,因此约束失败。
将分区键更改为“/ tenant”修复了该问题。
希望通过分享我的研究结果可以为碰到这一点的人们省去一些麻烦。
第二选择
现在我们可以在Stream分析中更改compatibility-Level,而不是以小写字母更改分区键。
1.0版本:在Azure Stream Analytics引擎处理时,字段名称已更改为小写。
1.1版本:Azure流分析引擎处理字段名称时,案例敏感性会保持不变。