我尝试了很多选择。
我的消息路由自定义端点在 Azure 门户中设置。 我使用分区键模板,如下所示:
{deviceid}-{my_telemetry_date}
,这样我就可以实现具有以下示例值的分区键:
{“分区密钥”:“FFFFFFFA-2023-10-22”}
哪里
{"my_telemetry_date" : "2023-10-22"}
我尝试过以下语法:
{deviceid}-{Body.my_telemetry_date}
但结果是:
{“PartitonKey”:“FFFFFFFA-{Body.my_telemetry_date}”}
{deviceid}-{Body.<my_telemetry_date>}
但结果是:
{"PartitonKey" : "FFFFFFFA-{Body.
}"}
{设备 ID}-{
{“PartitonKey”:“FFFFFFFA-{
}”}
{deviceid}-<my_telemetry_date>
但结果是:
{“PartitonKey”:“FFFFFFFA-
”}
我需要将遥测数据字段 my_telemtry_date 中包含的日期附加到 {deviceid}-
{deviceid} 已正确替换,但找不到任何有关正确语法的信息来替换分区键模板中的遥测字段的值。
不幸的是,您无法使用 IoT 中心的内置功能在分区键中包含遥测值。分区键仅允许每个文档:
的某些值用于生成与此 Cosmos DB SQL 容器一起使用的合成分区键值的模板。该模板必须至少包含以下占位符之一:{iothub}、{deviceid}、{DD}、{MM} 和 {YYYY}。任何一个占位符最多可以指定一次,但顺序和非占位符组件是任意的。如果提供了分区键名称,则分区键模板默认为 {deviceid}-{YYYY}-{MM}。
如果您需要 telemtry 值作为分区键的一部分,您首先需要将消息路由到其他地方(例如 Azure Function),然后从那里取出值并将其传递到 CosmosDB。