Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

4.5.3 DFF边定义

DFF边定义部分的配置内容包括DFF ID、首尾节点、边名称、边描述、边类型及其参数。

DFF ID首尾节点边名称描述边类型参数
<u64><u64>;<u64><String><String>None
Eval
Sql
Onnx
OnnxUrl
Nnef
NnefUrl
WriteFile
WriteSql
< \ >
<String>
<String>
<String>
<String>
<String>
<String>
<String>
<String>
  • DFF ID:声明边属于哪个DFF,用<u64>(64位无符号整数)表示。

  • 首尾节点:边需要声明首尾节点,用一对正整数表示,格式为:<尾节点ID>;<首节点ID>。边的方向为:尾节点→首节点。节点ID与DFF节点定义中相对应。

  • 边名称:便于理解边内容,往往是对边的动作做简要文字解释,用<String>(表示字符串类型)表示。

  • 边描述:用于解释边动作的具体作用,用<String>(表示字符串类型)表示。

  • 边类型:用约定的类型声明表示,包含如下类型:None、Eval、Sql、Onnx、OnnxUrl、Nnef、NnefUrl、WriteFile、WriteSql。

  • 边参数:不同边类型的参数配置要求不同,具体要求如下。

边类型示例说明

一、None

边类型为None时,边不动作。特殊的,当边名称设置为需要传递的变量名,可以传递变量(只能传递一个变量)。

DFF ID首尾节点边名称描述边类型参数
655361;2busNone

边含义:将节点1中获得的变量bus传递给节点2,作为节点2的输入变量。

二、Eval

边类型为Eval时,边可执行张量计算。举例如下:

DFF ID首尾节点边名称描述边类型参数
655361;2数据转换Evalselect(alias(cast(col(value),f32),r_1_1_672));

边含义:将名为value的数据进行强制类型转换为f32类型,并改名为r_1_1_672。

三、SQL

边类型为SQL时,可对边首节点输入的DataFrame执行SQL操作,具体配置方法举例如下:

DFF ID首尾节点边名称描述边类型参数
655361;2query_dfSQLSQL语句(如:select col1,col2 from `` order by col1;)

边首节点输出的DF名称未进行配置时,默认为空字符串。

四、Onnx

边类型为Onnx时,边读取Onnx神经网络模型并执行。举例如下:

DFF ID首尾节点边名称描述边类型参数
655362;3负荷预测Onnxmodel.onnx

边含义:节点2输入的数据作为神经网络的输入,经过model.onnx后输出数据至节点3。

注:

  1. 参数为Onnx文件的路径。
  2. 节点2输入的DF数据需要和model.onnx的输入维度对应。

具体例子:负荷预测

五、OnnxUrl

边类型为OnnxUrl时,边通过url获取Onnx神经网络模型并执行。举例如下:

DFF ID首尾节点边名称描述边类型参数
655362;3负荷预测Onnxhttp://127.0.0.1:80/forecast/model_96_96.onnx

注:

  1. 参数为Onnx模型的url。
  2. 节点2输入的DF数据需要和Onnx模型的输入维度对应。

六、Nnef

边类型为Nnef时,边读取Nnef神经网络模型并执行。举例如下:

DFF ID首尾节点边名称描述边类型参数
655362;3do_NnefNnefmodel.nnef

边含义:节点2输入的数据作为神经网络的输入,经过model.nnef后输出数据至节点3。

注:

  1. 参数为Nnef文件的路径。
  2. 节点2输入的DF数据需要和model.nnef的输入维度对应。

七、NnefUrl

边类型为NnefUrl时,边通过url获取Nnef神经网络模型并执行。举例如下:

DFF ID首尾节点边名称描述边类型参数
655362;3do_nnefNnefNnef模型的Url

注:

  1. 参数为Nnef模型的url。
  2. 节点2输入的DF数据需要和Nnef模型的输入维度对应。

八、WriteFile

边类型为WriteFile时,边可将DataFrame流数据写至指定路径文件中保存,或用DataFrame更新指定数据源id的量测值。对于这两种动作模式,WriteFile动作逻辑如下:如果参数为“meas://x”, 表示用DataFrame更新数据源id为x的量测值;其他形式的参数表示文件路径,表示将DataFrame写到文件。需要注意的点:

  1. 对于“meas://x”,输入的DataFrame需包含“point”和“discete或analog”两列信息。其中,“point”的列表示测点号,如果有“discete”的列表示更新离散量,如果有“analog”的列表示更新模拟量,注意discrete或analog不能同时出现。

  2. WriteFile动作通过“meas://x”,一般设置数据源非0的量测,或者数据源为0的本地测点,不可以设置数据源为0的远方测点,远方测点只能间接通过AOE设置。

  3. WriteFile动作通过“meas://x”更新量测值后,后续的节点或边如果需要用到该动作设置后的量测的数据,由于异步的关系,并不能保证是更新后的值。

  4. DataFrame写到文件支持输出xlsxcsv格式。文件可指定路径,若未指定则默认mems.exe所在文件夹。

举例如下:

DFF ID首尾节点边名称描述边类型参数
655363;4结果输出WriteFileoutput.csv

边含义:将节点2输入的数据写至output.csv文件中保存。

DFF ID首尾节点边名称描述边类型参数
655363;4结果输出WriteFilemeas://1

边含义:用DataFrame更新数据源id为1的量测值,注意此时节点2输入数据需包含“point”列和“discete/analog”列。

九、WriteSQL

边类型为WriteSQL时,可将边首节点输入的DataFrame数据写入数据库,或对数据库执行sql操作。WriteSQL边有2个参数,其中第1个参数填写数据库连接URL,支持mysql、sqlite和postgres数据库,对应填写格式如下:

  • mysql://user:password@host:port/database
  • sqlite:///path/to/database.db
  • postgres://user:password@host:port/database

第2个参数填写对数据库的操作,用参数字符串前缀区分操作类型:

前缀作用是否依赖输入DataFrame示例
sql://执行原生SQLsql://TRUNCATE TABLE table_in_db
insert://把 DataFrame 每行插入表insert://table_in_db
UPDATE://按主键更新表update://table_in_db?key=key1,key2
无前缀默认按 insert 处理table_in_db

具体配置方法举例如下:

DFF ID首尾节点边名称描述边类型参数1参数2
655361;2write_dfWriteSQL数据库URL(如:sqlite://./my_database.db;)insert://t1