全部文档
文档中心数据流3.0常见问题与自查调试与运行异常

调试与运行异常

本页按节点类型整理调试或运行阶段的常见异常。建议先复制错误信息中稳定、可识别的关键词进行页内搜索,再结合节点类型确认原因。

同一段报错可能由不同原因触发。处理前请先按问题自查与信息采集收集复现步骤、接口信息、日志和版本号;无法确认时,不要仅凭相似错误直接修改生产环境。

除通用运行异常外,本页分类与数据流节点面板保持一致,依次为【数据集查询】、【数据集转换】、【组件服务】和【流程控制】。本页只列出已有异常记录的节点,并不代表节点面板的完整清单。

错误关键词

常见原因

处理方案

临时方案

This run has been marked as failed from outside the execution context

gRPC 服务监听的 Unix Socket 临时文件被操作系统清理。

升级至 3.0.0.1.13 之后版本。


前端:element-deep-pipeline-3-0: V3.0.0.1.13

后端:deep-pipeline-3-0: V3.0.0.1.13

重启服务。

This run has been marked as failed from outside the execution context

发生内存溢出。可结合问题时段的内存使用率是否突然飙升进行确认,参考工单 issue_05425

减少单次处理的数据量,并根据实际数据规模评估、增加服务内存。

节点

错误关键词

原因

处理方案

连接器查询

SHOW VIEW command denied to user


SHOW CREATE TABLE

查询目标是视图,但当前数据库用户没有 SHOW VIEW 权限。UI 模式需要读取表结构,因此会执行 SHOW CREATE TABLE;普通表通常只需要 SELECT 权限。

为数据库用户增加 SHOW VIEW 权限。


临时方案:切换为 SQL 模式查询,该模式不需要读取表结构。

连接器查询

TypeError: argument 'data': unexpected value while building Series of type String; found value of type Int64: 99


Hint: Try setting strict=False

数据库查询已经成功,异常发生在结果转换为 Polars DataFrame 时。PostgreSQL 的 JSON/JSONB 字段会返回列表或对象;如果嵌套数据的同一字段同时存在文本、整数等不同类型,Polars 严格构造统一列类型时会失败。strict=False 是 Polars 的通用提示,并不是连接器查询节点的配置项,强制关闭还可能导致类型转换或空值。

切换为 SQL 模式,将 JSON/JSONB 字段显式转换为文本后再查询,例如 json字段::text AS json字段。如有多个 JSON 字段,需要分别转换。转换后 JSON 内容仍保留,但下游收到的是 JSON 字符串。


临时方案:不需要该字段时,在 UI 模式中使用【选择列】或【排除列】跳过它;下游必须使用嵌套结构时,应先在数据源中统一同一 JSON 字段的取值类型。

数据表查询

polars.exceptions.ShapeError: data does not match the number of columns

查询结果中存在重名列,数据库未自动为同名字段添加后缀。

修改 SQL,避免返回重名字段,或为重名字段设置不同别名。

数据表查询

psycopg2.errors.UndefinedColumn


column 实际表名.vcic does not exist

先确认字段确实存在;如果字段实际名称为大写 VCIC,则属于已知问题。

升级后端至 deep-pipeline-3-0: V3.0.0.1.25 之后版本。


临时方案:使用 SQL 模式;或在 UI 模式的【选择列】中不选择无法识别的列。

DeepModel 查询

BindingsError: "Decimal is too large to fit in Decimal128"

查询结果中某个字段的小数位数过大,无法放入 Decimal128。

先使用 Python SDK 查询原始 Decimal 数据,定位具体字段;修复源数据,并在写入 DeepModel 前通过数据转换、PY 转换或 SQL 转换等方式,将不可控精度的 DOUBLE 转为精度明确的 DECIMAL。参考:dm = DeepModel(); dm.execute("select YourObject{*} limit 1")

财务模型查询

Thread stack overrun


Use mysqld --thread_stack=#

按配置的维度范围生成的查询 SQL 过长,超过 MySQL 当前线程栈配置。

优先缩小并精确配置维度范围;确有需要时,由数据库管理员评估并调大 thread_stack

节点

现象

原因

处理方案

数据表查询

时间字段的查询结果与数据表实际值存在时差,例如数据库为 2025-09-16 17:00:00,数据流结果为 2025-09-16T09:00:00,相差 8 小时。

查询结果丢失时区信息。

升级至 3.0.0.1.15 之后版本。


前端:element-deep-pipeline-3-0: V3.0.0.1.15

后端:deep-pipeline-3-0: V3.0.0.1.15

节点

错误关键词

原因

处理方案

数据转换

Parser Error: syntax error at or near "RENAME"

当前 DuckDB 版本过低,不支持数据转换节点使用的底层语法。

将 DuckDB 升级到 1.2.2:pip3 install duckdb==1.2.2

数据转换

select * from (SELECT COLUMNS(c -> c not in ...

节点包含【重命名】步骤,并在单个步骤中重命名了所有列。

升级至 3.0.0.1.27 之后版本。


前端:element-deep-pipeline-3-0: V3.0.0.1.27

后端:deep-pipeline-3-0: V3.0.0.1.27

临时方案:拆成两个【重命名】步骤,避免单个步骤重命名全部列。

数据转换

Conversion Error: Could not convert string 'XXX' to TNT32

【聚合】等汇总步骤识别到同一列中同时存在文本和数字,例如 "ABC" + 123,DuckDB 尝试将整列转为数字时失败。

根据报错中的值定位字段,检查字段类型;在聚合前增加【列类型转换】步骤,将该列统一为同一种数据类型。

数据转换

STDDEV_SAMP is out of range

调试结果的数据页正常,但统计页无结果。常见原因是前序【列计算】发生除以 0,产生 Infinity。Infinity 在调试表格中可能显示为 NULL,但并不是真正的空值,标准差统计会失败。

检查前序步骤,尤其是【列计算】,过滤分母为 0 的记录或在计算前做好条件处理。

数据转换-连接

table instance cannot be referenced directly

参与连接的数据集节点编码与连接条件中的字段名相同,生成表达式时发生名称冲突。

修改节点编码,使其不与连接字段同名。

PY 转换

DagsterInvariantViolationError: Unexpected 'None' output value

Python 代码没有返回结果。

在代码中增加需要输出的 return;若本来就不需要输出,应按错误提示和节点契约确认是否允许声明 -> None

主键生成

Arrow datatype Map ... not supported by Polars

来源数据包含 Polars 不支持的 Map 类型,也可能是 Struct 内嵌 Map。

检查来源数据中的 Map 字段及其取值方式。若业务只需要链接字段的业务主键,应取文本主键,不要直接取整个链接对象。参考工单 issue_04816

单据转换

Provided table/dataframe must have at least one column

配置的【源单据范围】在来源模型中没有数据,或直接传入了空数组。

升级后端 adapter-engine-3-0V3.0.0.0.10 或更高版本,升级后来源为空时会返回带目标结构的空数据。


临时方案:在单据转换前增加条件分支,没有来源单据时不执行该节点。

组件服务节点包括财务模型、变量、维度、DeepModel 等复用其他组件服务能力的节点。

节点或场景

错误关键词

原因

处理方案

定时调用组件服务

APIResponseError


UNAUTHORIZED

被调用服务鉴权失败。

检查定时配置中的流程发起人,确保该用户拥有被调用元素的权限。

定时调用组件服务

当前admin账号无操作元素权限

定时调用没有配置流程发起人,数据流使用固定的 user_id=1 调用其他服务并鉴权失败。

升级至 3.0.0.1.24 之后版本,并在定时配置中指定流程发起人。


前端:element-deep-pipeline-3-0: V3.0.0.1.24

后端:deep-pipeline-3-0: V3.0.0.1.24

组件服务请求超时

APIRequestError


TimeoutError

节点复用 deepfos 调用组件服务,实际运行时间超过 OPTION.api.timeout

可先在 PY 代码节点中返回 OPTION.api.timeout 确认当前秒数,再在【设置-PY 设置】中按实际需要调整,例如 OPTION.api.timeout = 60000。调整前应同时确认下游服务耗时和平台超时边界。

PY 脚本定时调用

APIResponseError


UNAUTHORIZED

PY 脚本调用了需要鉴权的其他组件服务,定时调用时 Cookie 或 Token 已失效。

在被调用的 PY 脚本中使用平台支持的免登录调用方式,参见【启动-定时】和 DeepFOS 异常排查

PY 脚本定时调用

Call API ... failed because status code is not 2XX


拒绝访问

401

手动执行 PY 脚本和数据流均正常,只有定时调用失败时,通常是定时任务未指定有效用户。

升级至 3.0.0.1.24 之后版本,并在定时配置中指定流程发起人。参考工单 issue_04287


临时方案:调用 PY 脚本时,可按项目权限规范通过 OPTION.api.header['user'] = 'xxx_user_id' 指定用户。

DeepModel 操作

unexpected keyword argument 'error_on_empty_link'

数据流已升级并传入【链接字段值不存在时,抛出异常】参数,但底层 deepfos 版本过低,不支持 error_on_empty_link

deepfos 升级到 1.1.76 或更高版本。

DeepModel 操作

'NoneType' object has no attribute 'transaction'

环境缺少 EDGEDB_DSN

联系运维检查并补齐 EDGEDB_DSN 环境变量。

财务模型(提交数据)

TypeError: argument of type 'int' is not iterable

维度列必须是文本类型,但来源列为整数类型。

使用【数据转换-列类型转换】或其他方式,将维度列转为 STRING。

财务模型(提交数据)

批量查询维度成员失败


表达式错误,无法识别字符

提交的维度数据中存在空值,维度字段不允许为空。

检查并清理维度数据中的空值后重新提交。

财务模型(删除数据)

unexpected keyword argument 'data_audit'

数据流前后端已提供【记录到数据审计】配置,但底层 deepfos 版本过低,不支持 data_audit

deepfos 升级到 1.1.76 或更高版本。

维度

APIResponseError: 服务异常,请求中存在 NaNnan

NumPy 的 NaN 不是标准 JSON 值,提交到维度服务时无法被正确解析。

问题自查与信息采集获取调用维度服务的 cURL,确认请求数据;在维度提交前通过【PY 转换】等节点将 NaN 替换为 None

维度

datatable/execute-sql


Read timed out

如果在维度元素页面新增一条数据并保存也会超时,通常说明 PostgreSQL 查询该物理表时的执行计划存在问题。

由数据库管理员对实际物理表执行 ANALYZE。参考工单 issue_04275

节点

错误关键词

原因

处理方案

导出

Excel does not support datetimes with timezones

导出结果包含带时区的时间字段,当前版本不支持直接写入 Excel。

升级至以下版本:


前端:element-deep-pipeline-3-0: V3.0.0.1.38

后端:deep-pipeline-3-0: V3.0.0.1.38

deepfos: 1.1.80(数据流后端环境中的版本)

临时方案:去掉该列,或先用【数据转换-列类型转换】转为当前时区的本地 DATETIME。

节点

现象

原因

处理方案

导出

导出结果丢失一行。

已知问题。

升级后端至 deep-pipeline-3-0: V3.0.0.1.25 之后版本。

回到顶部

咨询热线

400-821-9199