概述
在MOM项目实施过程中,经常需要进行关键绩效指标KPI(Key Performance Indicator)的统计计算和分析,通过MOM系统中的数据统计和分析,从而实现实时决策和驱动改进。Apriso提供了对应的解决方案,使我们能够创建、监控和可视化 KPls,为日常活动提供实时可见性,指导日常绩效监控和分析,从而提高生产力。
Apriso MOM解决方案中提供了完整的数据报表分析架构,包括MPI(ETL/CUBE)、PDA(Performance Dashboard Administration)、SPC、MTA/OMC、Dashboard Buider等等。本文着重介绍PDA(Performance Dashboard Administration)KPI配置和计算实现机制,整个机制可以在实际项目实施过程中直接使用,也可以借鉴这种设计思路和机制,通过客制化定制开发来满足项目客户在数据分析的需求
术语
- KPI:关键绩效指标(Key Performance Indicator,简称KPI),在Apriso中KPI是通过由KPI Terms组成的表达式或公式来计算的,KPI同时连接一个KPI_Context上下文表进行描述,最终计算结果保存在KPI_Value表中,为了计算KPI,必须提供一个Context_Query上下文查询来定义计算的范围和条目
- KPI Terms:KPI项,由KPI项的计算表达式组成KPI,KPI Term定义数据源及计算逻辑,必须首先计算返回值后才能计算KPI的值,Apriso中可以通过存储过程、业务组件、计算表达式、MDX Query、Operation标准操作来计算,KPI Terms必须返回时间Datatime或者数值Decimal类型的单个结果值
- From/To Term:用来计算和确定KPI的计算范围(开始和结束时间)的一种KPI Term,可能是班次、日期、星期或者月的开始/结束时间,必须返回一个时间类型的单值
- Context_Query:上下文描述查询,这个查询提供KPI计算条目范围,查询结果中每一行都会计算和存储一次KPI的值,查询结果可以通过匹配,并作为KPI Terms参数输入值进行计算,提供这个KPI值对应的关键信息列(Key)的值,如工厂、产线、设备等,并保存到KPI_Value表中
- Tolerances:KPI值容差,可以定义每个KPI的目标值、上下限,如果KPI值超出上下限,则可以通过配置发出报警等信息
- KPI Grid:用于定义在性能仪表板运行时显示KPI值的属性,并用于不同KPI进行分组中KPI计算结果值显示的一个表格,绑定KPI后,可以直接显示计算结果。
- Client:客户端,客户端的引入是为了支持多工厂场景,数据可以通过XML Manager在不同的Apriso系统之间发送,一个系统中只能配置一个Client作为主系统。Client可以通过客户端配置(Client Configuration)界面进行配置。
PDA组成
PDA主要由管理、计算和监控仪表盘三部分组成
- 管理:配置和定义KPI Terms、KPI、KPI Grid,配置入口菜单Desktop Client->浏览器->PD管理员(Performance Dashboard Administration),用户需要具备“Performance Dashboard Administrator ”角色权限。
- 计算:可以通过Job Scheduler、Apriso Operation并调用业务组件KpiCalculateAndPersist_v94进行计算
- 显示:通过KPI Grids或者性能仪表板(Performance Dashboard Monitoring Screen)页面进行KPI指标查询,通常这部分展示需要客制化开发
KPI Terms和KPI配置
一、KPI Terms配置
KPI Terms是KPI计算的基础,应该首先配置KPI Terms。KPI Terms使用MOM生产、物流、设备、质量中事实数据,通过调用业务组件、存储过程等进行数值指标计算,根据KPI指标的复杂程度,可以定义一个或多个KPI Terms。
- 客户:客户端,默认使用主(Master)客户端
- 上下文:上下文分类,只有相同的上下文才能在KPI计算中使用
- 类型:支持脚本、存储过程、业务组件、MDX Query、标准操作Operation多种类型,类型不同具体配置的界面可能不一样
- 外部输入列表:操作的输入参数列表,这些参数输入值需要从KPI Term所附加的KPI传递值给它们
二、KPI配置
KPI Terms配置完成后,可以进行KPI的配置,
1、KPI属性配置
- 名字:KPI名称
- 客户:KPI所属的客户端,默认为主客户端
- 上下文:用于筛选KPI Terms的KPI上下文,以便可以使用某些术语进行计算。例如,如果使用生产上下文,则只能在计算中使用生产KPI Terms。在Apriso Desktop Client中没找到配置界面,可能需要在数据库层级进行维护(KPI_Context表)
- 种类:KPIs的种类定义,在Apriso Desktop Client中没找到配置界面,可能需要在数据库层级进行维护(KPI_Category表)
- 关键性能指标表达式:用于计算KPI的数学公式。这可以用Javascript、c#或VB编写,也可以包含要在计算中使用的KPI Terms。不能将KPI Terms命名为与编码语言中使用的关键字一致。例如,Math.Random()是一个有效的Javascript代码行,因此您不能有一个名为“Math”或“Random”的KPI Term。双击“高级表达式编辑器”可以进入公式编辑页面
输入批量Grid中显示相同上下文下可以使用的KPI Terms,双击Terms则可以直接进入脚本中的表达式。上下文是一个可选字段,如果设置了上下文,则只能使用相同上下文的术语或没有上下文的术语。
- 设计模式:当这个值为True时,保存KPI时不执行任何验证。这样就可以在不设置所有所需值的情况下保存KPI的配置,当“设计模式”为“False”时,才会计算KPI
- 启用消息:当这个值为True时,会生成报警信息,并且发送主题ALERTS/KPI为的AprisoMessage消息。
2、KPI查询配置
- 按钮:
- 验证查询:验证上下文查询。弹出消息将显示查询是否有效
- 校验表达式:验证KPI表达式是否有效。弹出消息将显示表达式是否有效
- ValidateKPI:验证KPI配置。计算KPI,但不持久化以确定任何配置问题
- CalculateKPI:计算并存储KPI值。KPI不应处于设计模式以进行计算
- 关键列映射:关键列映射用于将上下文查询结果与KPI值表的关键列进行映射。在上面的示例中,“Facility”将存储在Key_Value表的Key1中,“WorkCenter”将存储在Key_Value表的Key2中
- 数据库:指定上下文查询描述连接的数据库
- 上下文查询描述:在计算KPI时,向KPI定义中使用到KPI Terms定义的输入提供数据,查询结果中每一行将进行一次KPI Terms的计算,这个查询语句中不支持输入参数定义,如果需要进行动态的计算,则可以在调用KpiCalculateAndPersist_v94业务组件时,动态赋值CalculationEntitySelectQuery参数来实现
- 输入匹配:输入映射网格列出了KPI条款所需的所有输入。如果在上下文查询中找到了输入,则Mapped设置为True。不会检测到类型为脚本“Script”的KPI Term的输入。
3、KPI容差配置
配置KPI目标值和规格上下限(USL和LSL),控制上下限(UCL和LCL)则从数据中通过统计计算而来,容差本身不参与计算,但是会和KPI值一起保存到KPI_Value和KPI_Value_History表中。
可以配置KPI的默认容差,可以使用可编辑网格创建或修改不同Key值下的容差来覆盖默认工厂公差。
4、KPI时间配置
时间配置用于定义KPI和KPI Terms计算时的开始时间和结束时间(KPI计算时间段并不是从上下文查询中输入的)。“开始时间”和“结束时间”值可以使用KPI Terms或时间表达式。时间KPI Terms和其他KPI Terms相同从上下文查询中接收输入计算并输出时间类型值,时间表达式由时间字面值组成,可用于指定时间,并从中添加或减去(天、小时、分钟等),以设置time from和time to值。
网格中提供了可用时间文字的列表,双击一行将根据焦点中的最后一个输入添加到输入字段中。“评估”Evaluate链接将计算并显示该值。这将提供在计算KPI时开始时间和结束时间值的概念。“评估”Evaluate按钮对于测试和理解时间字面量和表达式非常有用。
表达式必须始终以时间值字面值开始,例如CurrentTime,并且只能有一个时间值字面值。表达式只能有加法或减法运算符。
需要注意的是:
- 如果KPI Term中并没有要求输入开始时间和结束时间,则可以不进行KPI的时间配置
- 如果在KPI Term中需要启用开始时间和结束时间,则输入参数的名称固定为“TimeFrom”和“TimeTo”(存储过程输出参数也可以是“i_TimeFrom”和i_TimeTo)
- 如果计算时间段不固定,则可以在调用KpiCalculateAndPersist_v94业务组件时,动态赋值StartTime和EndTime参数来实现
KPI计算流程
KPI是通过调用KpiCalculateAndPersist_v94业务组件方法来计算的,允许根据计划计划任务Job Scheduler或按需从在标准操作Opeartion,流程Process,或在DELMIA Apriso的任何可以调用业务组件的地方。
下面的流程图描述了计算KPl所涉及的步骤:
- 首先执行查询Context Query并获取结果,如果查询结果没有数据,则计算结束
- 如果查询结果集中存在数据行,则循环每行记录进行一下计算
- 传递开始时间FromTime、结束时间ToTime以及KPI定义中的“输入匹配”中匹配的参数值
- 根据KPI Term定义的数据源和计算方式进行计算
- 计算和返回KPI Terms结果值
2.1 根据KPI中的时间配置获取开始时间FromTime、结束时间ToTime
2.2 分析KPI定义中需要用到哪些KPI Terms,并循环计算每个KPI Term
- 根据KPI计算表达式和KPI Terms返回值计算KPI结果
- 保存到KPI_Value和KPI_Value_History表