本手册列出数据流3.0组件,在使用中的常见问题和对应自查步骤。
当节点运行失败,或没有得到期望结果时,需要用户先自行排查,并确定该问题可稳定复现。
在自己无法解决的情况下,可提交工单至产研团队,产研团队会根据工单优先级和提交时间先后,对工单依次处理。
不论是自行排查问题,还是提交到产研,都需要用户提供尽量详尽和完备的信息,这些信息通常可以在curl中获得。
如果是调试,后端会触发名为debug的接口,请按照以下步骤复制出curl,提供工单时作为说明信息。
其他调后端接口的场景,同样可以用这种方法得到对应接口的curl信息(例如保存数据流元素时,会调用update接口,发布时会调用deploy接口),用户可以举一反三,作为通用的问题排查手段,推荐用户自行了解更多关于浏览器开发者工具的其他知识。
参考步骤:
按F12打开检查工具;
切到【NetWork】页签,该页签会记录所有后端接口信息;
回到系统,复现问题;
点击最新的名为【debug】的请求,切到【Payload】和【Response】页签,截图,工单上附上截图;
右键【debug】请求,复制->复制cURL(bash),则得到了cURL,将其粘贴到本地记事本或其他文本处理工具中,工单上附上附件;
参考动图:
                    
若您的节点调用了其他组件服务,这类cURL通过debug请求也无法完全获得,则需求您在公共脚本中添加一段PY代码,以在节点的日志中获得所有的cURL。
代码:
from deepfos.options import OPTION
OPTION.api.dump_always = True
OPTION.general.log_level = 'DEBUG'
技术排查问题同时需要您提供数据流服务的版本号,多数问题是已知bug,并且已在最新版本中修复,解决这类问题只需要您进行版本升级即可。
您的环境部署的所有服务的版本号,可以通过您的运维人员获取。
也可以通过以下办法,自行快速获得当前服务的版本号。
打开数据流元素;
去掉url中第一个问号后面的所有内容(包括问号),这通常是一些查询参数,例如元素编码、文件夹id等信息;
在url最后加上/git-version;
回车后,浏览器会直接显示版本信息,或者可能是下载一个文件,打开文件后,也可以显示该服务的版本信息。

元素保存或者发布时,会进行校验,校验不通过的内容会以表格样式展示在底部,点击每一行可以定位至具体配置处。
用户可以根据校验提示的内容进行修改,修改后再保存或发布。

如需查看完整的校验文档(仅供先胜内部成员查看),请联系您的商务人员。
| 节点 | 报错 | 原因 | 方案 | 替代方案 | 
|---|---|---|---|---|
| 所有 | This run has been marked as failed from outside the execution context | grpc服务监听的unix-socket临时文件被操作系统清理了 | bugfix,升级至3.0.0.1.13之后版本 | 重启服务 | 
| 内存溢出,检查是否本次操作的数据量,检查内存使用情况,当内存使用率突然飙升或过大,则会出现此情况 | 减少本次操作的数据量,以排查是否数据量级的问题。 | |||
| 连接器查询 | sqlalchemy.exc.OperationalError:(pymysql.err.OperationalError)(1142,”SHOW VIEW command denied to user ‘user_XXX’@’10,20.164.91’for table ‘table_XXX’ | table_XXX是个视图,用户user_XXX没有 show view的权限。 | 给用户加show view权限 | 用SQL模式查询,此模式不需要查询表结构,不需要执行show create table命令。 | 
| 数据表查询 | polars.exceptions.ShapeError: data does not match the number of columns | 返回的列有重名,数据库(例如MYSQL)没有处理同名字段(例如加后缀) | 需要修改SQL语句,使返回的列不重名,例如不返回重名字段、使用别名 | |
| 财务模型查询 | 截取部分报错内容:nested exception is java.sql.SQLException: Thread stack overrun: 246160 bytes used of a 262144 byte stack, and 16000 bytes needed. Use mysqld –thread_stack=# to specify a bigger stack. | 按配置的维度范围,拼出来的查询SQL超长,以本例的报错内容为例,需要262144 byte,但目前的配置只有246160 bytes | 方案一:缩小维度范围,尽量精确 | |
| 组件服务类型的节点 | deepfos.exceptions.APIResponseError: [code: 401] ErrMsg from server: {“code”:500,”message”:”UNAUTHORIZED”,”status”:false} | 先胜云其他组件的服务是需要鉴权的,如果是定时调用的,很可能因为cookie/token失效而导致鉴权失败、执行失败 | 若需要这些组件服务能被成功执行,可以在公共脚本中添加绕过鉴权的代码,详见【启动-定时】章节 | |
| 定时调用,报错类似:deepfos.api.base:do_request:452 - Call API: http://XX/api/enterprise/list failed because status code is not 2XX. Detail: {“msg”:”拒绝访问”,”path”:”/api/enterprise/list”,”code”:401,”error”:””,”timestamp”:XX}. | 如果是调用PY脚本,尝试手动执行PY脚本是否报错,若不报错,尝试手动执行数据流是否报错,如果也不报错,仅定时调用报错,应该是由于对应服务需要指定用户,但定时调用未指定用户导致 | 功能升级,升级XX之后版本: | 1、如果是调用PY脚本,可在python脚本中通过添加OPTION.api.header[‘user’] = ‘xxx_user_id’ 手动指定用户; | |
| 数据转换 | Parser Error: syntax error at or near “RENAME” | duckdb版本太低,不支持数据转换底层逻辑 | duckdb升级到1.2.2: | |
| duckdb.duckdb.ConversionExceptlon: Conversion Error: Could not convert string ‘XXX’ to TNT32 | 1、检查是否包含了【聚合】等有汇总逻辑的步骤; | 1、检查抛出的’XXX’这个值属于哪一列; | ||
| 财务模型 | TypeError: argument of type ‘int’ is not iterable | 维度列的数据类型必须是文本,检查是否有列的数据类型是int | 使用【数据转换-列类型转换】或其他方式,将此列的类型转为STRING | |
| ··· | ··· | ··· | ··· | 
服务异常通常为未定位到具体问题的模糊报错,不同使用情况下报的服务异常通常对应不同问题。
| 节点 | 场景 | 页面报错 | 接口报错 | 方案 | 替代方案 | 
|---|---|---|---|---|---|
| 数据表查询 | 配置数据源,选择数据表类型 | 服务器拒绝处理当前请求 | 对不起您暂未被授予`Internal Datasource’的操作权限,请联系管理员解决 | bugfix,升级至V3.0.0.0.1之后版本 | 为当前用户配置【空间管理员】权限 | 
| ··· | ··· | ··· | ··· | ··· | ··· | 
| 节点 | 异常 | 原因 | 方案 | 
|---|---|---|---|
| 数据表查询 | 时间类型字段的查询结果,与数据表中的实际数据,有时差。 | 丢时区信息 | bugfix,升级至3.0.0.1.15之后版本 | 
| ··· | ··· | ··· | 
Q:数据表查询节点能否实现多表查询?
A:可以,使用SQL模式,可以在SQL语句中自行拼接多表进行查询。其他数据集查询类型的节点,例如连接器查询、DeepModel查询同理。
Q:目前支持哪些类型的数据库?
A:对于【数据表查询】、【数据表操作】、【连接器查询】、【连接器操作】等直连数据库的节点,我们对于数据库的支持规划如下,因此,除了GreenPlun和DB2目前技术上暂未支持外,其余的数据库类型都已经支持,但SapHana、Oracle和SqlServer由于缺乏测试环境,暂未测试,可能会出现未知bug,需谨慎使用,一旦出现bug请联系产品经理处理。
SapHana(支持&暂无环境可测试)
Oracle(支持&暂无环境可测试)
SqlServer(支持&暂无环境可测试)
MySQL(支持&测试通过)
PostgreSQL(支持&测试通过)
Clickhouse(支持&测试通过)
KingBase(支持&测试通过)
DAMENG(支持&测试通过)
GreenPlun(暂不支持)
DB2(暂不支持)
回到顶部
咨询热线
