你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
谨慎
这是一篇 Gen1 文章。
本文介绍用于管理引用数据集中的项的 Azure 时序见解 Gen1 引用数据管理 API。 它假定已在环境中创建了引用数据集。
参考数据包括不经常更改的制造商或位置数据。 参考数据用于将遥测数据置于上下文中,并用于比较遥测数据。
小窍门
- 若要创建引用数据集,请参阅 如何创建引用数据集。
由于数据集是预先存在且固定的,因此设备发送的每个数据包都包含相同的信息。 因此,引用数据不会从设备发送,你可以使用引用数据管理 API 或 Azure 门户来管理数据。
API 概述
引用数据管理 API 是一个批处理 API。
重要
- 针对此 API 的所有作都是 HTTP POST作。
- 每个作都接受 JSON 对象作为请求有效负载。
- HTTP 请求 JSON 对象定义一个属性名称,用于指定要由 API 执行的作。
有效的 JSON 请求作属性名称为:
重要
- 属性值是必须应用作的引用数据项的数组。
- 每个项目都是单独处理的,一个项目的错误不会阻止成功写入其他项目。 例如,如果您的请求有 100 个项目,其中一个项目有错误,则写入 99 个项目,拒绝 1 个项目。
- 引用数据项使用其完全枚举的键属性进行查询。
注释
以下所有 JSON 正文示例都假定一个引用数据集,其中包含一个属性键,名称为 deviceId ,类型 为 String。
放置参考数据项目
插入或替换整个引用数据项$.put[i](数组中带有键 put 的第 i 项)。 提交的单位是 $.put[i]. 作是幂等的。
- 端点和作: - POST https://<environmentFqdn>/referencedatasets/<referenceDataSetName>/$batch?api-version=2016-12-12
- 请求正文示例: - { "put": [{ "deviceId": "Fan1", "color": "Red", "maxSpeed": 5 }, { "deviceId": "Fan2", "color": "White", "floor": 2 }] }
- 响应示例: - { "put": [ null, null ] }
修补程序参考数据项
更新并插入引用数据项 $.patch[i]的特定属性。
- 端点和作: - POST https://<environmentFqdn>/referencedatasets/<referenceDataSetName>/$batch?api-version=2016-12-12
- 请求正文示例: - { "patch": [ { "deviceId": "Fan1", "maxSpeed": 108 }, { "deviceId": "Fan2", "floor": 18 } ] }
- 响应正文示例: - { "patch": [ null, null ] }
删除引用数据项中的属性
从参考数据项 $.deleteproperties[i]中删除指定的属性。
- 端点和作: - POST https://<environmentFqdn>/referencedatasets/<referenceDataSetName>/$batch?api-version=2016-12-12
- 请求正文示例: - { "deleteProperties":[ { "key":{ "deviceId":"Fan2" }, "properties":[ "floor" ] } ] }
- 响应正文示例: - { "deleteProperties": [ null ] }
删除参考数据项
删除由每个 $.delete[i].
- 端点和作: - POST https://<environmentFqdn>/referencedatasets/<referenceDataSetName>/$batch?api-version=2016-12-12
- 请求正文示例: - { "delete": [{ "deviceId": "Fan1" }] }
- 响应正文示例: - { "delete": [ null ] }
获取参考数据项
获取由每个 $.get[i].
- 端点和作: - POST https://<environmentFqdn>/referencedatasets/<referenceDataSetName>/$batch?api-version=2016-12-12
- 请求正文示例: - { "get": [{ "deviceId": "Fan1" }, { "deviceId": "Fan2" }] }
- 响应正文示例: - { "get": [ { "code": "InvalidInput", "message": "Key not found.", "target": null, "details": null, "innerError": null }, { "id": "Fan2", "floor": 18 } ] }
验证和错误处理
引用数据管理 API 单独处理每个项目,一个项目的错误不会阻止成功写入其他项目。 例如,如果您的请求有 100 个项目,其中一个项目有错误,则写入 99 个项目,拒绝 1 个项目。
物料错误代码
项目错误代码出现在具有 HTTP 状态代码 200 的成功 JSON 响应正文中。
- InvalidInput: Key not found.:表示在引用数据集中找不到查询的项。 - { "code": "InvalidInput", "message": "Key not found.", "target": null, "details": null, "innerError": null }
- InvalidInput: payload key 不应包含任何非键属性。:指示 JSON 请求正文查询项不应包含任何非键属性的属性(即引用集架构中指定的属性)。 可以在 Azure 门户中找到关键属性。 - { "code": "InvalidInput", "message": "Payload key should not contain any non-key property.", "target": null, "details": null, "innerError": null }
- InvalidInput: 有效负载项应包含所有键属性。:指示 JSON 请求正文查询项应包含所有键属性(即在引用集架构中指定的属性)。 可以在 Azure 门户中找到关键属性。 - { "code": "InvalidInput", "message": "Payload item should contain all key properties.", "target": null, "details": null, "innerError": null }
引用数据连接示例
考虑具有以下结构的事件中心消息:
[
  {
    "deviceId":"Fan1",
    "timestamp":"1/5/2015T00:10:30Z"
  },
  {
    "deviceId":"Fan2",
    "timestamp":"1/5/2015T00:10:30Z"
  }
]
考虑使用类型为 String 的名称contoso和键 deviceId 设置的引用数据项,该数据项具有以下结构:
| 设备ID | color | 最大速度 | 地板 | 
|---|---|---|---|
| 风扇1 | 红色 | 5 | |
| 风扇2 | 白色 | 2 | 
当事件中心消息中的两个事件由 Azure 时序见解 Gen1 入口引擎处理时,它们将与正确的引用数据项联接。 事件输出具有以下结构:
[
  {
    "deviceId":"Fan1",
    "timestamp":"1/5/2015T00:10:30Z",
    "color":"Red",
    "maxSpeed":5
  },
  {
    "deviceId":"Fan2",
    "timestamp":"1/5/2015T00:10:30Z",
    "color":"White",
    "floor":2
  }
]
联接规则和语义
联接参考数据时,请遵守以下约束:
- 键名称比较区分大小写。
- 对于字符串属性,键值比较区分大小写。
对于具有多个引用数据集的环境,在联接期间将强制执行三个进一步的约束:
- 引用数据集中的每个项都可以指定自己的非键属性列表。
- 对于任意两个引用数据集 A 和 B,非键属性不得相交。
- 引用数据集仅直接连接到事件,从不连接到其他引用的数据集(然后连接到事件)。 要将引用数据项连接到事件,引用数据项中使用的所有键属性都必须存在于事件中。 此外,键属性不应来自通过其他引用数据项连接到事件的非键属性。
鉴于这些约束,联接引擎可以对给定事件按任意顺序应用联接。 不考虑层次结构和排序。
当前限制
每个 Azure 时序见解 Gen1 环境最多可以添加两个参考数据集。 下表列出了与 Azure 时序见解 Gen1 参考数据关联的其他限制:
| 限制名称 | 限制值 | 受影响的 SKU | 注释 | 
|---|---|---|---|
| 键属性计数 | 3 | 中一、中二 | 每个参考数据集;仅限 Azure 资源管理器和 Azure 门户 | 
| 键属性大小 | 1 KB | 中一、中二 | 每个引用数据集 | 
| 参考数据项计数 | 2,000/20,000 (中一/中二) | 中一、中二 | 单位;例如,4 件商品 S1 SKU = 8,000 件商品 (4 x 2,000) | 
| 最大并发事务数 | 2/10 (S1/S2) | 中一、中二 | |
| 最大引用数据事务数 | 120/600 (中一/二) | 中一、中二 | 每小时 | 
| 最大参考数据项计数 | 1,000 | 中一、中二 | 每事务 | 
| 最大参考数据项大小 | 8,192 KB | 中一、中二 | 每事务 | 
另请参阅
有关应用程序注册和 Azure Active Directory 编程模型的详细信息,请参阅 面向开发人员的 Azure Active Directory。
若要了解请求和身份验证参数,请参阅 身份验证和授权。
帮助测试 HTTP 请求和响应的工具包括:
- 提琴手。 这个免费的 Web 调试代理可以拦截您的 REST 请求,因此您可以诊断 HTTP 请求和响应消息。
- JWT.io。 可以使用此工具快速转储持有令牌中的声明,然后验证其内容。
- 邮递员。 这是一个免费的 HTTP 请求和响应测试工具,用于调试 REST API。
通过查看 Gen1 文档,详细了解 Azure 时序见解 Gen1。