自定义 OData 查询
asset-centric OData 服务 和 数据建模 OData 服务 都支持自定义查询,以筛选属性和检索特定数据集。
自定义查询 URL
Asset-centric OData 服务示例
要对资源类型属性进行筛选:
GET .../{resourceType}/?$filter={Filter}
其中:
{resourceType}
:资源类型,例如Assets、TimeSeries、Events等。{Filter}
:OData筛选表达式。
数据建模 OData 服务示例
要对数据模型中的 view 属性进行筛选:
GET .../{view}/?$filter={Filter}
其中:
{view}
:数据模型中view的名称。{Filter}
:OData筛选表达式。
自定义查询示例
简单的等式筛选器
等式筛选器使用 AttributeName eq 'AttributeValue'
格式:
GET .../Assets?$filter=Name eq '23-TE-96116-04'
数据建模筛选
直接应用于数据模型属性 view 的筛选器:
GET .../City?$filter=iso2 eq 'MX'
元数据筛选
对于元数据,对元数据对象内嵌套的属性执行筛选:
GET .../Assets?$filter=MetaData/RES_ID eq '525283'
组合筛选器
GET .../Assets?$filter=MetaData/RES_ID eq '525283' and Name eq '23-TE-96116-04'
在筛选器中使用函数
OData 支持startswith
、endswith
和 contains
等函数。
例如,要筛选 ExternalId
以 'Sensor'
开头的时间序列:
GET .../TimeSeries?$filter=startswith(ExternalId,'Sensor')
注意:并非所有函数都支持下推到 CDF。检查特定资源类型的筛选功能。
组合多个查询参数
你可以组合多个查询选项来优化数据检索。
例如,要检索 Name
以 'Pump'
开头的资产,请仅选择 Id
和 Name
,并按 Name
排序:
GET .../Assets?$filter=startswith(Name,'Pump')&$select=Id,Name&$orderby=Name asc
调试自定义查询
- 使用单独的工具:通过 Fiddler 等工具,可以检查客户端与服务器之间的 HTTP 流量。
- 检查筛选器语法:确保筛选器格式正确,符合
OData规范。 - 查看支持的筛选器:请参阅筛选数据模型中的项目和筛选 asset-centric 资源类型,了解
OData服务支持的筛选功能。
限制
并非所有 OData 函数和功能都受支持。有关支持的功能和限制的详细信息,请参阅单独的服务文档。