打开数据协议(OData)教程#
本文档将为配置开放数据协议(OData)数据源提供快速指南,以便轻松检索可用于外部工具中高级分析的MES数据。
概述#
OData是一种广泛接受并受Microsoft Excel、Microsoft Power BI、Tableau、QlikView等分析工具支持的标准。为了提供简单的互操作性并提供对MES数据的快速简单访问,这些数据随后可用于任何类型的用户高级分析(和仪表板),从8.0版开始,所有MES查询都将在OData API下公开。
配置#
首先,如果现有的MES查询尚未涵盖所需的数据,用户应在MES中创建一个新的。有关详细信息,请参阅《用户指南》的查询部分。
用户可以单击主查询页面或特定查询页面顶部功能区上的端点按钮,并获取OData API的特定端点:
无论在哪种情况下,都会打开一个新向导,其中包含复制端点URL的选项,并在配置外部工具的访问权限时使用该URL。
访问令牌#
除了端点URL之外,用户还需要生成一个访问令牌,然后用于身份验证。为此,用户应打开其用户页面并转到访问令牌部分:
单击顶部功能区上的创建按钮,填入有意义的名称(如果用户将来需要使令牌失效,请务必填写),设置过期日期,单击创建,然后复制新令牌:
Warning
此令牌只会出现一次,因此用户必须确保将其存储在安全的位置以供将来使用。
外部工具配置#
以Microsoft Excel为例,为了打开OData数据集,步骤如下:
- 使用数据菜单中的获取数据功能(如下图所示,然后在来自其他来源子菜单中选择来自OData源选项:
- 将OData端点粘贴到URL字段中,然后按确定。应用程序应将用户重定向到OData 源窗口。
Info
如果未执行此重定向,或者系统抛出错误,请滚动至下面的凭据清理部分以了解更多信息。
- 选择左侧面板上的基本选项,然后将访问令牌粘贴到用户名字段中。将密码字段留空,然后按连接:
- 如果访问令牌有效,则应打开导航器视图,并列出用户可以使用的所有查询:
- 可以显示每个查询的输出数据预览,允许用户选择应导入的查询。按下加载后,数据将被导入:
支持带有参数的MES查询#
MES查询的参数化增加了OData集成的复杂性,因为需要执行额外的步骤才能正确配置OData源。
在参数化的MES查询中,参数在Excel导航器中显示为$VarName。在下面的示例中,MES查询GetAreaByFacility有一个名为$Area_Facility的参数:
按照预期,包括没有定义默认值的强制参数的查询将不返回任何数据。让我们通过这个例子来说明如何正确配置OData源。使用高级查询选项时,还支持其他功能,如筛选、排序和分页等。
首先,用户需要知道$Area_Facility代表哪种参数。在这种情况下,我们可以使用MES UI尝试运行相同的MES 查询:
请注意,尽管实体筛选器选项将显示在MES UI用户中,但参数本身将向查询引擎传递设施的ID。但是,这不是一条规则,取决于MES查询的定义方式。
对于此示例,用户要为其检索现有车间的目标设施称为Cookie工厂。目前,Cookie工厂设施的ID很可能仍然未知,但可以在MES UI中查询,只需打开目标设施并从信息部分复制即可:
现在参数值已知,用户可以在导航器视图中选择按设施获取车间实体,然后按转换数据:
Power Query编辑器应打开,单击高级编辑器:
现在,您应该用以下方法替换现有代码:
OData.Feed("<ODataURL>/<QueryName>?$filter=$VarName Eq 'value'", null, [ Implementation="2.0"])
使用当前的示例,此行将是:
OData.Feed("<http://VM-PROD-CI.cmf.criticalmanufacturing.com:10082/api/odata/GetAreaByFacility>?$filter=$Area_Facility Eq '2006291529520000006'", null, [ Implementation="2.0"])
按完成,您应该能够看到预期结果:
如果出现错误,请检查参数是数值还是字符串。如果是数值,则应将筛选器设置为:
$filter=$Area_Facility Eq 2006291529520000006” instead of “$filter=$Area_Facility Eq '2006291529520000006'
用户还可以应用筛选、排序和分页等附加条件。除OData函数外,所有其他条件都应受支持。
筛选#
通过复杂的表达式和AND/OR进行筛选,然后选择“名称”(ID返回为空)。表达式:
$filter=$Area_Facility Eq '2006291529520000006' AND Name ge 'Cookie' AND (Id Eq 1907180027250000002 OR Id Ne 1907180027250000002 )&$select=Name:
排序#
按Name ascending, Id descending排序,跳过5行后检索前5行。表达式:
$filter=$Area_Facility Eq '2006291529520000006'&$orderby=Name asc, Id desc&$top=5&$Skip=5:
凭据清理#
如果系统在连接到OData源时挂起,清除数据库凭据应能解决问题。
使用数据菜单中的获取数据功能(如上图所示),然后选择数据源设置选项。在以下屏幕中,选择导致问题的端点,然后按清除权限。在下一个对话框中按删除确认操作,并重复连接配置。





















