在生产设备领域,主要面向的数据范围包括:生产设备的时序数据,日志文件、检测文件、MES的过站数据、生产过程数据等增量事实数据,以及相关业务的主数据,例如,DCS的点位表,MES中物料、机台的定义数据等。
现实中几乎100%的工业现场都有各种数据质量问题,部分原因是过去工业现场的数据使用场景较少,一般只是做实时监控和事后分析两类常见场景:前者一般由现场人员及时响应和处理,而后者发生频次较低,一般由资深工程师捞取少量相关数据进行离线手动分析。这两类场景的人工参与程度都比较深,严重依赖现场人工经验而非“自动化”算法,因此,很多显性和隐性的数据质量问题往往都被不自觉地过滤和处理了,很少有人认真关注并解决相应的数据质量问题。但是当希望由计算机来完成更多、更复杂、自动化的数据处理和应用时,现场各种潜在的数据质量问题都将暴露无遗。简言之,在数字化时代,当人们真正使用和重视数据后,数据质量问题才浮出水面。
一般来说,主数据的数据质量必须依照相应的数据管理规范,从业务角度进行数据治理,例如,DCS定位表中的测点命名错误等,这方面的数据治理已有很多专业的管理和技术方法(可参考国际数据管理协会标准),本节不再赘述。作为数据量大但信息密度低的设备和生产系统实时产生的各类事实数据,其数据质量监控问题是本节讨论的重点。
国际数据管理协会(Data Management Association,DAMA)对数据质量定义了如下7个核心维度。
(1)准确性。反映数据值与准确值之间的一致程度。例如,是否有因为传感器故障所造成的数据错误?是否有其他冗余传感器或其他方式用于判断传感器故障?
(2)完整性。主要评估实体缺失、属性缺失、记录缺失等问题。
(3)一致性。确保相关数据集之间的一致性,例如,数据迁移或加工的前后数据表大小一致性对比。
(4)唯一性。针对某个数据项或某组数据,没有重复的数据值,例如,值必须是唯一的ID类数据。
(5)合理性。从业务角度评估(包括格式、类型、值域和业务规则等)是否合理有效,例如,MES过站数据中,一个批次(lot)进入一个机台的时间一定早于其离开该机台的时间。
(6)及时性。从业务角度评估数据的时效性是否满足业务需求,例如,秒级数据对应的数据应用并非一定要秒级响应,众多分析应用都是T+1需求即可。
(7)安全性。主要来源于企业在法律法规上的各种要求,例如,电厂的分区数据安全策略。
在过去几十年,随着各种各样自动化、信息化系统在工业企业中建立,已经形成了若干数据源(PLC、DCS、SCADA、CMS、MES、PLM等),虽然彼此之间有一定联系,但基本处于独立运营管理的状态,各自解决各自的业务问题。因此,当现场谈论数据质量话题时,往往将其狭义化在特定范围,例如,现场经常听到的声音:“数据全都上来了。”然而,在进行全面数字化建设的时代需要全企业域数据的融合,面临新的业务需求,形成新的数据应用,在这种情况下,从业务需求角度重新审视和评估数据质量时,会有不同的结论。例如,从一致性角度出发,因为原有信息系统大多是不同时期独立建设的,往往同一物理对象在不同数字空间的数据是不一致的。
以某钢铁企业建设生产大数据系统为例,其数据源有如下三大类。
(1)设备时序数据。数据源是PLC控制器中的变量(tag),通过OPC软件进行秒级数据采集,考虑到带宽等限制采用了工业现场常见的有损压缩策略——变化率小于一定数值(例如1%)的数据不上传。
(2)生产工艺参数。数据源来自过程数据采集软件ibaPDA(简称PDA)对各台设备PLC变量的采集,通过日志文件的方式记录关键工艺参数的毫秒级波形数据,2小时上传一次文件。
(3)MES相关生产控制数据。例如,钢坯进出加热炉的时间、通过每个轧机的开始和结束时间、轧辊的编号等。
在大数据系统建设和应用过程中,会发现若干数据质量相关问题,如下所示。
(1)设备测点命名不规范。PLC、PDA和MES系统对于设备上的同一测点命名不同,需要重新建立统一的命名和映射关系。
(2)系统时钟同步问题。PLC、PDA和MES三个系统的时钟没有严格同步,使得来自三个系统的时序数据无法被准确对齐,影响后续的数据分析。例如,某轧机正常工作电流约300 A,空载电流约30 A,因此,PDA电流数据在时间轴上表现为30~300A来回切换的类矩形波。理论上MES记录的起止时间正好对应了“工作”和“空闲”的切换时刻,可被用来准确切分轧机“工作”状态下的数据。但由于时钟同步问题,MES记录的起止时间与PDA电流数据的矩形波的上升下降沿无法匹配,导致无法准确获取轧机“工作”状态下的数据以供后续分析。
(3)PDA记录的波形数据,有时因为设备问题会整段丢失——因为该数据文件过大,以往只是在设备或工艺出现问题时,才偶尔打开对应时间段的数据日志文件进行查看,并未发现类似问题。
按照DAMA对数据质量的定义,数据质量需要站在整个企业全局的角度进行全面评估和治理,而不是单一的数据采集维度或单一信息系统的范围。从更实用的角度讲,数据质量的评价从数据应用角度出发,无论是数据分析、数据挖掘模型,还是数据监控、统计、报表、预测等,数据质量可以满足相关应用的需求,那就是合适的——因为全面数字化建设和全局数据质量的治理是一件长期持续的事情,许多时候并不是要求数据100%没有问题才能被使用。以机器学习领域为例,都是基于大数据样本从数据中学习规律,在实际使用中常遇到两类数据质量相关的情况:① 如果数据样本整体质量较好,少数问题数据完全可以在机器学习的建模和使用过程中被抛弃,而不影响模型的实际使用;② 数据虽然多,但真正有效的样本不足。例如,对于故障诊断类问题而言,历史样本极其缺乏,仅有的样本往往个性大于共性,就算数据质量再好,对于这个应用而言,其“数据质量”仍然是不合格的。
对于工业企业的管理者而言,对数据质量往往比较陌生,但是我们发现:如果将数据也看作生产要素,将数据加工使用的过程比作生产过程——从企业数据工厂的视角来考虑,将生产管理的理念引入数据管理,则许多概念和方法是共通的。
“质量是企业的生命”这是所有企业用经验或教训总结出来的结论。因为产品质量不好,最终会被消费者拒绝和被市场淘汰,所以,质量好坏事关企业生死存亡,是企业的生命。另一方面,因质量问题引起的返工,不仅影响生产进度和产能,也影响员工的工作情绪,从而导致更多问题的出现。对于数据质量而言,上述结论完全可以复制:对于数据的加工、生产、使用者而言,“数据质量就是生命的保证”,否则空谈数字化却无法真正落地。只有把数据的加工使用也看成工业企业生产过程的一环——从企业数据工厂的视角来考虑,用对待生产质量的态度对待数据质量,才能走向“全面数字化”。
正如在物理世界中工厂的生产管理中影响产品质量的人、机、料、法、环等要素一样,对于数据和数据应用而言也有类似的要素。其中,“测”在生产领域中与“质量”密切相关,在数据领域中也有“测量”或“测试”的含义。“测量”就是用数据评价数据,更具体一点,就像生产质量检测一样,对于从原材料到产品的数据加工全流程,也需要定义相应的“质量指标”,在原材料、中间半成品、最终产品等关键控制点进行相应的检测和控制,类似生产过程中的采料质量控制(Incoming Quality Control,IQC)、过程质量控制(Process Quality Control,PQC)、最终质量控制(Final Quality Control,FQC)、出货质量控制(Outgoing Quality Control,OQC)等。而生产领域常用的质量检测和控制手段,例如,统计过程控制SPC,也可以被用作数据质量的监控,将在2.4.3节中展开讨论。
对于数据质量的管理,完全可以参考工厂在生产过程中的质量管理体系,建立起全面的数据质量管理方法。质检领域常说的是:质量是制造出来的,不是检查出来的。数据质量监测已经是事后,而更重要的在于事前预防和事中及时处置。在工业企业数字化长期建设过程中,我们建议的步骤也是从单纯的数据质量检验走向统计质量控制,最终实现全面质量管理体系。从管理角度需要认识到的则是事前预防和教育的重要性。重视数据源(也就是原材料的质量)优于数据加工过程:相比物理化学生产过程,数据加工过程由于都是在计算机上执行,稳定性和可靠性相对较好,但是不变的在于:原料质量一定是所有生产过程的第一道关卡。因此,在全面数据质量管理体系中,不单纯只是数据质量监控等技术问题,也要从管理上、意识上下手,让全链条相关人员建立起数据质量的管控意识和相应的行为规范。另一方面,日常的数据运维类似工厂生产人员的日常工作,需要随时对数据加工的各个阶段及时发现和处理相应问题,尽量避免到最终用户侧才反映出数据问题,再反过来进行追根溯源的问题定位工作。
借用全面质量管理体系的原则,同样可以概况数据质量的全面管理原则。
(1)数据质量就是数字化的生命线。
(2)数据质量是做出来的,不是检验出来的。
(3)采取预防性措施避免数据质量问题的发生,尽早发现和解决。
(4)企业高层管理者的重视,充分认识到数据质量对于企业长期竞争力的价值。
(5)数据质量的改进必须全员参与,而不仅是IT部门的责任。
(6)数据质量需要持之以恒地改善,以长远的眼光对待数字化发展。
数据质量评价方法通常分为定性评价法、定量评价法及两者结合的综合评价法。定性方法主要依靠评判者的主观判断,定量方法则提供了相对系统和客观的数量分析方法。
(1)定性评价法。定性评价一般基于一定的准则与要求,根据评价的目的和用户对象的需求,对所涉及的数据资源进行描述与评价。定性方法的主体需要对领域背景有较深的了解,一般应由领域专家或专业人员完成。例如,通过用户反馈、专家评议等手法。
(2)定量评价法。定量评价基于数量分析方法,通过建立数据质量相应的指标,对数据资源进行评价,例如,本节将采用生产领域常用的SPC建立数据质量监控。
(3)综合评价法。综合评价将定性和定量两种方法有机地集合起来,对数据质量进行综合全面的评价。
数据质量的评价流程一般如下。
(1)需求分析。从业务需求出发来定义数据质量和评估方法。因为数据资源具有个性化、多样化、不稳定等特点,所以必须针对具体业务的需求特点,才能建立有效的数据质量评价体系。
(2)评价对象及范围。包括数据集的范围和边界,以及其属性、数量、时间等维度信息。
(3)评价维度及指标。参考2.4.1节给出的七大维度,根据具体需求细化维度并定义符合业务要求的具体数据质量评价指标。
(4)评价方法。根据评价对象的特点和评价指标的定义,确定其实现方法。
(5)实施与分析。根据上述定义的对象、范围、维度、指标和方法,实施数据质量评价的过程,并对数据质量评价结果进行相应分析,是否满足实际业务需求。
(6)持续监控和运维。数据质量的评价不是一次性的,因为数据应用也不是一次性的,数据质量是为具体的数据应用服务的。如同软件工程中DevOps实践的开发运维一体化,对数据质量进行持续监控,及时发现并解决问题。
数据产品的质量影响因素有很多,例如,原始数据质量波动、加工过程是否合理、采用的算法是否合适、具体的数据处理代码是否存在Bug等。这些具体因素可以总结为两大类:① 与数据(Data)相关,包括原始数据和中间加工结果数据;② 与处理逻辑相关,包括数据处理过程和算法,因为数据处理逻辑和实现的程序代码相关,所以统称为代码(Code)。在数据分析模型的研发阶段,数据分析师会构建、训练、验证数据分析模型,具体来说是调整代码;当这个分析模型上线后,开始持续处理业务中实际产生的数据,代码是固定的(严格来说是当前版本的模型,暂时不探讨迭代更新),而数据是变化的。因此,在线上环境保证结果质量的因素可以聚焦在如何监控流进系统的数据的质量。
经常会遇到这种情况,当一个数据分析师拿着辛辛苦苦做出来的数据结果,找到一个业务专家进行沟通,结果业务专家第一眼就发现了一个报表上的数据错误,因为在现实情况中这个值根本不可能发生,因此,业务专家就对数据分析师的分析过程产生了怀疑,信任在一瞬间被破坏。而数据分析师后来发现,这个错误来源于一个原始数据的问题,而不是他的分析逻辑。
如果上述数据质量评价方法看起来有点抽象,那么还是从类比生产管理的视角来看整个“数据加工”过程,数据质量评价其实类似于生产过程的原材料、半成品、成品的质量监控。而统计过程控制(SPC)是过去几十年被工业界广泛使用且行之有效的现场质量监控和改善方法,在一定假设前提下,我们也同样可以将SPC用于数据质量的监控和改善,数据质量指标就像产品质量检测指标、生产过程指标一样,也可以用统计过程控制的方法进行有效的监控。
下面通过一个例子来展开说明基于SPC进行数据质量监控的方法。如图2-6所示是某工业企业大型同步电机3个月的SCADA监控数据,包括电机电流、轴承润滑油温、电机驱动端和电机非驱动端的轴承温度等8个监测量,采样率是1分钟。
图2-6 某工业企业大型同步电机3个月的SCADA监控数据
如果从日常监控角度看,该数据情况看似比较好,没有问题,似乎完全满足需求了,但当计划开发一个设备健康评估的24小时不间断数据应用时,潜在的数据质量问题可能会引起数据模型在运行中的报错,无法达成真正无人值守下的健康度监控。例如,缺失值是数据质量中最常见的一类问题,这3个月的数据缺失情况如表2-7所示。
表2-7 3个月的数据缺失情况
从缺失值的现象中可以发现两个有趣的事实:
(1)温度测点的缺失率都非常高,超过90%的数值有缺失。
(2)大部分振动、电流测点的缺失率较低,但是电机驱动端轴承振动X的缺失率却有近四分之一。
经过与相关业务及技术人员的探讨,数据缺失(尤其是温度数据的缺失)主要来源于数据采集策略——不变不采(准确地说,变化量小于一定的阈值范围内则不采集),而温度作为慢变量,因此,大量采样点的数值为空是正常的。作为工业现场常见的数据采集和数据压缩策略,不变不采是合乎业务逻辑的;然而,该原因无法解释为何4个振动量中,只有电机驱动端轴承振动X的缺失率较高,因为振动是典型的快变量,几乎每个采样点的数值都不同,不应该有大量缺失现象的发生。
进一步对数据缺失进行更精细的统计。1分钟的数据采集频率,1天应该有1440个数据点,则以1小时为步长,24小时为统计窗口,对上述8个测点进行数据量统计,可以看到更清楚的数据缺失现象。
(1)在2020年11月1日前,电机驱动端轴承温度和电机非驱动端轴承温度每24小时大约有150个点,但是在2020年11月1日后,每24小时只有3~5个点。
(2)轴承润滑油温也有类似的数据量突变现象,只是切换时间发生在2020年12月1日。
(3)振动和电机电流测点每24小时的数据量都非常接近理论值1440,但是电机驱动端轴承振动X在2020年12月10日后,每24小时的数据量只有800个左右。
经过业务人员的再次确认,对于温度测点,在不变不采的数据采集策略下,此前的守护进程是每10分钟至少做一次数据采集,而出于各种原因:之后调整为每8小时至少做一次。而对于振动测点,如图2-7所示,因为X和Y方向也存在一定的相关性冗余,所以也对电机驱动端轴承振动X做了临时性的修改。
图2-7 滚动窗口(步长1小时,窗口24小时)的数据量统计
至此,我们对于该企业电机监控数据的数据质量评估指标——缺失率,进行了详细分析,并发现和确认了相应的原因。然而,我们真实目的是计划开发一个有关设备健康评估的24小时不间断的数据应用,而数据分析算法的开发内容严重依赖于数据质量本身。数据缺失本身很常见,在数据分析算法开发过程中也有相应的一些处理手法,但真正的问题在于:如果数据缺失本身随着数据采集机制发生变化,那么很可能数据分析算法(在该例中,即设备健康评估算法)会因为数据缺失机制的变化产生不可预期的结果。然而,从最终用户角度,算法给出的任何结果无法判断是因为算法的问题,还是数据质量的问题所造成的。因此,对关键数据算法而言,其结果依赖于数据和算法两大要素,为及时排除由于数据造成的问题,真正关注算法的结果或发现算法本身的异常,对这种需要连续后台自动运行的算法,有必要对数据质量进行同样连续的监控。当数据质量报警时,首先需要解决数据本身的问题,同时对算法给出的结果可以附上相应时间段的数据质量标签,作为数据分析算法结果“可信度”指标提供给最终用户进行参考。
因此,可以将数据质量评估这件事,转化为对数据质量指标的SPC监控问题。
(1)从原始数据中,按照业务定义计算相应的数据质量指标,例如,数据量、缺失率、平均值、变化范围、变化率等。
(2)选择适当的SPC Chart,例如,对连续变化指标可选择Xbar-Range Chart、Xbar-Std Chart,对数量、比例型指标选择p-Chart、np-Chart。
(3)基于历史上某正常时间段(例如,此前一周、一月)的数据,建立SPC Chart的基准线、上限和下限。
(4)实时监控数据质量指标,若超出控制限则发出相应的报警信息,提醒数据质量问题。
以电机驱动端轴承振动X测点为例,以数据完整度作为数据质量监测指标,选用p-Chart对该指标进行SPC监控。
(1)以2020年10月25—2020年11月24这一个月时间作为标准建立的数据区间,计算电机驱动端轴承振动X测点每天的数据完整度(非空点数/1440)。
(2)经计算,该指标的基准值为0.918,下限0.801,上限1.0。
(3)以该控制限进行SPC的持续监控,接下来一个月2020年11月25日—2020年12月24日的p-Chart图形如图2-8所示。
可以看到的是,2020年12月7日电机驱动端轴承振动X测点的数据完整率指标跌出了控制限,会引起相应的报警信息,提醒相关业务人员和数据分析人员。
图2-8 p-Chart图
将统计过程控制应用在数据质量监控上,需要非常小心地设计相应的数据质量指标——指标本身需要具有业务上的稳定性,如上例中:对连续采样的时序数据,采用数据完整度作为数据质量监控指标,背后的假设前提如下。
(1)固定采样周期下,每天的理论数据量是固定的。
(2)生产过程大多处于连续稳态运行过程中,也就意味着像温度这样的慢变量,其大多数时候变化较小,因此,数据缺失率与采集策略的设置高度相关(如变化率阈值、守护进程时长等);而如果该设备大量位于非稳态工作,那么很难建立相应的完整度标准。
综上所述,数据质量之于工业大数据分析,就像原材料和产品质量之于生产过程一般重要,尤其当数据分析算法由一次性的分析报告变成持续24小时不间断的数据应用时,数据质量的自动监控就变得尤其重要。
对于大数据分析和应用,工业企业的从业者往往比较陌生,容易混淆数据和算法这两个概念。成功的大数据分析和应用一定要基于知识、数据、算法三大要素。
(1)相关领域的专业知识是一切的开始和保障。需要什么样的数据、数据应该怎么被加工、结果如何评估等,都需要业务知识做支撑。
(2)好的数据就像生产的原材料,无论从任何角度强调数据质量的重要性都不为过。
(3)算法是根据业务需求和数据实际情况来选择的。数据作为原材料,其质量决定了数据分析的上限,而算法的选择是用合理的代价(时间和空间复杂度)尽量逼近上限的过程。
工业企业本身不缺相关领域的专业知识,算法是数据分析师的专业,而数据则是连接两者的关键——需要业务专家和数据分析师共同关注和解决。作为工业企业经常使用、被业务专家所熟悉的统计过程控制,将其应用于数据质量监控时,很容易被工业企业从业者理解并正确应用。其中的关键变成:如何合理地定义数据质量指标,实现其自动计算和监控的过程。对于工业数据分析场景,最终服务于工厂生产管理中的人机料法环等要素,数据质量也不一定需要100%完美才能支持相应的数据分析算法和应用,需要相关业务人员与数据分析师一起,基于业务需求(例如,算法准确性等要求)和数据算法的二次处理能力,对于关键数据源和数据分析算法,共同定义合理的数据质量指标,并使用SPC等工具实现自动化的监控。