跳转至

打开数据协议(OData)教程#

本文档将为配置开放数据协议(OData)数据源提供快速指南,以便轻松检索可用于外部工具中高级分析的MES数据。

概述#

OData是一种广泛接受并受Microsoft Excel、Microsoft Power BI、Tableau、QlikView等分析工具支持的标准。为了提供简单的互操作性并提供对MES数据的快速简单访问,这些数据随后可用于任何类型的用户高级分析(和仪表板),从8.0版开始,所有MES查询都将在OData API下公开。

配置#

首先,如果现有的MES查询尚未涵盖所需的数据,用户应在MES中创建一个新的。有关详细信息,请参阅《用户指南》的查询部分。

用户可以单击主查询页面或特定查询页面顶部功能区上的端点按钮,并获取OData API的特定端点:

Add OData Endpoint from Main Queries page

Add OData Endpoint from Specific Query page

无论在哪种情况下,都会打开一个新向导,其中包含复制端点URL的选项,并在配置外部工具的访问权限时使用该URL。

Endpoint URL

访问令牌#

除了端点URL之外,用户还需要生成一个访问令牌,然后用于身份验证。为此,用户应打开其用户页面并转到访问令牌部分:

Generate Access Token

单击顶部功能区上的创建按钮,填入有意义的名称(如果用户将来需要使令牌失效,请务必填写),设置过期日期,单击创建,然后复制新令牌:

Access Token

Warning

此令牌只会出现一次,因此用户必须确保将其存储在安全的位置以供将来使用。

外部工具配置#

以Microsoft Excel为例,为了打开OData数据集,步骤如下:

  1. 使用数据菜单中的获取数据功能(如下图所示,然后在来自其他来源子菜单中选择来自OData源选项:

Get Data from OData Feed in Microsoft Excel

  1. 将OData端点粘贴到URL字段中,然后按确定。应用程序应将用户重定向到OData 源窗口。

Microsoft Excel - OData feed URL

Info

如果未执行此重定向,或者系统抛出错误,请滚动至下面的凭据清理部分以了解更多信息。

Microsoft Excel - OData feed access

  1. 选择左侧面板上的基本选项,然后将访问令牌粘贴到用户名字段中。将密码字段留空,然后按连接

Microsoft Excel - OData feed user name

  1. 如果访问令牌有效,则应打开导航器视图,并列出用户可以使用的所有查询:

Microsoft Excel - OData feed queries

  1. 可以显示每个查询的输出数据预览,允许用户选择应导入的查询。按下加载后,数据将被导入:

Microsoft Excel - OData feed preview

支持带有参数的MES查询#

MES查询的参数化增加了OData集成的复杂性,因为需要执行额外的步骤才能正确配置OData源。

在参数化的MES查询中,参数在Excel导航器中显示为$VarName。在下面的示例中,MES查询GetAreaByFacility有一个名为$Area_Facility的参数:

Microsoft Excel - Query parameters

按照预期,包括没有定义默认值的强制参数的查询将不返回任何数据。让我们通过这个例子来说明如何正确配置OData源。使用高级查询选项时,还支持其他功能,如筛选、排序和分页等。

首先,用户需要知道$Area_Facility代表哪种参数。在这种情况下,我们可以使用MES UI尝试运行相同的MES 查询:

Using query parameters in MES UI

请注意,尽管实体筛选器选项将显示在MES UI用户中,但参数本身将向查询引擎传递设施的ID。但是,这不是一条规则,取决于MES查询的定义方式。

对于此示例,用户要为其检索现有车间的目标设施称为Cookie工厂。目前,Cookie工厂设施的ID很可能仍然未知,但可以在MES UI中查询,只需打开目标设施并从信息部分复制即可:

Checking ID field in MES UI

现在参数值已知,用户可以在导航器视图中选择按设施获取车间实体,然后按转换数据

Navigator - Transform Data

Power Query编辑器应打开,单击高级编辑器

Microsoft Excel - Advanced Editor

现在,您应该用以下方法替换现有代码:

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"])

Microsoft Excel - Advanced Editor feed

完成,您应该能够看到预期结果:

Microsoft Excel - Advanced Editor results

如果出现错误,请检查参数是数值还是字符串。如果是数值,则应将筛选器设置为:

$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

Microsoft Excel - Advanced Editor results filtering

排序#

Name ascending, Id descending排序,跳过5行后检索前5行。表达式:

$filter=$Area_Facility Eq '2006291529520000006'&$orderby=Name asc, Id desc&$top=5&$Skip=5

Microsoft Excel - Advanced Editor results ordering

凭据清理#

如果系统在连接到OData源时挂起,清除数据库凭据应能解决问题。

Microsoft Excel - Data Source settings

使用数据菜单中的获取数据功能(如上图所示),然后选择数据源设置选项。在以下屏幕中,选择导致问题的端点,然后按清除权限。在下一个对话框中按删除确认操作,并重复连接配置。

Microsoft Excel - Credentials Cleanup