2019年7月10日

ThingWorx的大数据分析工具


ThingWorx是目前较为流行的工业物联网数据集成、分析、开发平台。
在业务方面,工艺实时数据有较大的分析价值,也符合大数据的分析特点。
本文介绍一下其大数据分析工具。
1.     数据存储
要对实时数据进行大数据分析,需要在创建Thing的时候满足以下条件:
1)     Thing指定Value Stream
Value Stream是存储数据的实体,其配置的Persistence Provider对应物理数据库,可以是内置的ProgreSQL数据库,也可以是支持ODBC的其它主流数据库。
2)     对于要追踪的属性打勾Logged选项
此选项在属性的值发生变化时,自动向Value Stream插入记录。

PostgreSQL中使用以下SQL可以查询数据:
---------------------------------------------------------------------
SELECT * FROM value_stream
WHERE ENTITY_ID = 'ValueString_KBSZ_MM'             -- Value Stream Name
AND source_id = 'KBSZ_DEMO_MM21_THING'           -- Thing Name
AND PROPERTY_NAME = 'Main_Speed'              -- Property Name
AND TIME > to_timestamp(EXTRACT(EPOCH FROM NOW())- 2*24*3600)  -- 2 days earlier till now
ORDER BY time --DESC
---------------------------------------------------------------------

2.     数据分析工具之Time Series Chart
要将ThingProperty数值传递给Mashup,通常通过这2ServiceGetPropertiesQueryPropertyHistory,前者传递当前值,后者传递历史数据。
QueryPropertyHistory有以下几个输入参数:
-       startDate,起始时间
-       endDate,结束时间
-       maxItems,记录数,相当于SQL中的TOP/LIMIT
-       oldestFirst,排序方式,相当于ORDER BY TIME ASC
-       query,过滤条件,相当于追加WHERE语句
然后把输出条件中的All Data绑定到Time Series ChartDataSource,然后设定:
-       NumberOfSeries,参数个数
-       DataSourceX.DataFieldX,纵坐标,选择对应的Property
-       DataSourceX.XAxisFieldX,横坐标,选择timestamp
需要说明的是,QueryPropertyHistory返回的是符合条件的查询结果数据集,因此结果集越大,查询越慢。
此外,Time Series Chart加载了QueryPropertyHistory结果集的所有数据,因此结果集越大,显示越慢。
因此,要慎重设定查询参数,特别是startDate/endDate/maxItems


3.     数据分析工具之Dygraph Chart
PTC ThingWorx Manufacturing Apps提供了PTC.Factory.TrendManagementUtils,其GetJSONStringTrendHistory方法可以将属性的历史值转换成JSON格式。
然后配合Dygraph Chart,可以实现数据的动态加载。
具体实现方式为:
1)     Manufacturing Apptrending and troubleshooting设定追踪项,记录Trend Name
2)     Mashup中加载GetJSONStringTrendHistory方法,将displayId设为步骤1Trend Name。并设置startDate/endDate等其它参数。
3)     Mashup中将GetJSONStringTrendHistory绑定到dygraphchartwidget,将Data映射为JSONData,将TrendNameX映射为DataLabelX
我们注意到,在GetJSONStringTrendHistory方法中并没有maxItems参数,在dygraphchartwidget中也不可设置时间。
这是因为GetJSONStringTrendHistory查询得到了所有符合条件的数据集,此数据集以JSON字符串的形式予以输出。
dygraphchartwidget得到JSON数据后,根据数据的特点动态地予以展示,因此数据集的大小不会影响显示的时间。
我们从PTC的文档可以看到,Dygraph Chart采用了开源的JavaScriptdygraphs,具体使用可参考ThingWorx Apps自定义指南的第21章。



没有评论: