前期版本的单据引擎没有保存检验机制,因此可能会在保存时,右侧弹出形如body缺少字段:mappingScheme.0.fieldMapping.0.fields.4.UserField.rule.RuleDocumentLinkage.agg的报错,排查方法:
1、以上述报错为例,应该依次检查mappingScheme.<font style="color:#DF2A3F;">0</font>.fieldMapping.<font style="color:#DF2A3F;">0</font>.fields.<font style="color:#DF2A3F;">4</font>,这能帮我们知道是【第几个映射方案/会计事件】的、【第几列】的、【第几个字段】的映射规则配置有误,例中即为【第1个】映射方案的【第1列】的第【5个字段】的取值规则有误
2、检查该字段配置的取值规则是否配置有误

单据引擎主要进行以下数据处理:
1、将配置的字段规则,转换为QL,通过执行QL初步得到目标数据
2、将目标数据整合为表结构,若目标有行结构(例如凭证头+凭证行),各行的数据union
3、再应用其他预的置规则
因此,若出现调试异常,可尝试以下思路:
1、先将QL粘贴至DeepModel控制台,或者数据流组件中,查询结果,排除语法问题导致的错误;
2、用数据流组件将QL执行结果转为表格,再检查数据,以排查数据问题导致的polars在处理表格中产生的错误。
适用后端组件(adapter-engine-server3-0)版本号≤V3.0.0.0.9时。
1、获取运行的QL

2、将QL粘贴至DeepModel控制台的查询器

3、粘贴变量pk_range的值
若单个调试单据,QL中用到的是等号:= <str>$pk_range,则只需要粘贴形如"key1"的来源单据业务主键值即可
若多个调试单据,在≤V3.0.0.0.9版本,QL中用到的是包含关系:contains(array_agg(<str>json_array_unpack(to_json(<str>$pk_range))), .业务主键属性编码),需要粘贴形如"[\"key1\", \"key2\"]"的来源单据业务主键值
请确认好您QL中在with区域的写法,来决定pk_range的值如何写。

4、运行查询器
若运行失败,说明是按配置组装的QL语句存在语法问题,按返回的语法错误提示进行配置的修改
若运行成功,则是在将运行结果组组合为表格时出现问题,请复制或下载出返回结果的JSON,进行后续排查

5、使用数据流辅助排查
1)新建数据流元素,将查询器返回的JSON粘贴至开始节点的默认启动参数:

2)添加PY转换节点,添加如下代码
import pandas as pd
pd.DataFrame(Pipeline.params)
调试节点,可将启动参数的结果作为表格显示

3)结果中有子结构的,展开,有多少个列是子结构,就展开多少列

展开节点中可以设置不保留其他列,专注排查子表的数据是否正确

4)再用分支合并节点,把展开的行表合并,带前序一起调试,按报错排查问题

适用前后端组件版本号≥V3.0.0.0.10时,且数据流的deepfos≥1.1.80。
单据引擎:
后端:adapter-engine-server3-0:≥V3.0.0.0.10
前端:element-adapter-engine-3-0:≥V3.0.0.0.10
数据流:
后端(建议):adapter-engine-server3-0:≥V3.0.0.1.38
前端(建议):element-deep-pipeline-3-0:≥V3.0.0.1.38
deepfos(必须):≥1.1.80,注意是数据流组件的deepfos,不是py服务的deepfos
全程使用数据流辅助排查。
1、获取单据引擎运行的QL,同方式一;
2、新建数据流元素,添加【DeepModel查询】节点,用【DeepQL】查询模式,将获取的QL粘贴进【DeepQL语句】;
3、为参数pk_range赋值
若单个调试单据,QL中用到的是等号:= <str>$pk_range,则可以用静态值类型赋值,只需要粘贴形如key1的来源单据业务主键值即可,
若多个调试单据,QL中用到的是包含关系:contains(array_agg(<str>json_array_unpack(<json>$pk_range)), .业务主键属性编码),则需要用表达式类型复制,粘贴形如["key1", "key2"]的来源单据业务主键值列表。你可以在调试单据配置处,快速复制出业务主键列表。
请确认好您QL中在with区域的写法,来决定pk_range的值如何写。

4、运行查询器,将结果中的行全部展开,再用分支合并将展开的行合并,同方式一,检查数据并排查问题

|
报错 |
原因 |
方案 |
替代方案 |
|---|---|---|---|
|
Cannot destructure property ‘message’ of ‘o’ as it is null. |
字段取值规则中,【业务规则】选择了不存在的业务规则 |
检查各字段的取值规则,修改【业务规则】类型中选择的取值规则 | |
|
identifiers surrounded by double underscores are forbidden |
字段取值规则中,【单据联查】选择了链接,但edgedb服务未升级 |
edgedb服务升级到v3.30 |
【单据联查】修改为该链接的业务主键(属性),而非链接 |
|
TypeError(‘unexpected value while building Series of type Float64; found value of type Int64: 0\n\nHint: Try setting |
目标行结构的某列值有的是float,有的是int,polars处理的有点问题,要求所有类型严格一致,要不然创建不出dataframe |
bugfix,升级至V3.0.0.0.10之后版本 |
回到顶部
咨询热线
