Galaxy 帮助中心

ETL常见问题

创建于 2022-11-01 / 最近更新于 2022-12-02 / 623
字体: [默认] [大] [更大]

1. 为什么ETL输出数据集模型结构为空?

可能存在的其他表象:
数据集概览页 “模型结构”和“关联创建”都是空的;
找不到数据集所属ETL,也不能更新数据集。

【可能原因】:ETL在创建成功并运行成功之后,所有者在修改ETL的时候,删除了输出数据集节点;然后又重新加了一个输出数据集节点并保存运行。即使新的输出数据集和原来的数据集同名(同名时只能保存在不同文件夹下),也不是同一个数据集。

 后续建议
  1. 尽量避免在ETL里删除输出节点。需要在输出节点前增加新的节点的话,点击最后一个节点前的连接线,删除连接线即可,不要删除输出节点。

image.png

  1. 万一已经删除了输出节点,给新增的输出节点设置保存在同一个文件夹并使用完全相同的名字的话,系统会提示: 同名数据集在此目录已存在, 请重新命名。此时最好不要强制保存ETL,取消保存退出。然后再重新进入编辑界面按照建议1操作。

 image.png

  1. 如果节点已经删除,并且已经做了很多修改不想放弃的话,那只能换个名字或者换个路径保存。然后原来的输出数据集就会和ETL断开联系,模型结构显示为空。此时,需要给依赖于旧数据集的卡片批量切换到新的数据集,然后删除旧数据集。

image.png


2. ETL中最后输出节点预览数据与已经输出节点数据集数据不一致?

【排查步骤】

1)首先进入该ETL页面,确定该ETL有没有修改过逻辑,有没有运行过;如果修改过,出现这种情况的话一定只是保存了没运行,这就需要找到修改者或者点击运行;

image.png

2)若没有修改过逻辑,正常运行的话,首先在ETL的输入数据集节点,看一下是否设置了数据筛选;因为在ETL输入节点处的筛选只对ETL处理过程中生效,预览节点的时候筛选数据,在输出数据集的时候是全量输出的;(一般设置了的对应输入数据集的标会亮着一个筛选符号)

image.png

3)查一下ETL中是否有去重节点,因为BI的去重是随机的,ETL每运行一次,就有可能结果不一致;

(如有相关字段需要保留,可以在前置节点处理好以后再使用去重节点)

image.png

3. ETL中SQL节点双引号使用问题

【原因】:SQL节点查询语句中字段使用了双引号,会被当成字符串处理,去掉双引号或改为反引号即可。

【解决方案】:spark语法和MySQL一致,反引号``用来 来避免自行定义的标识符(字段名,表名等)和数据库SQL中的关键字冲突(如FROM,CREATE等关键字)。一般的,表名与字段名都使用反引号,但也可以不加。

4. ETL什么情况下会出现输入数据集预览无数据?

【原因】:在ETL中会按照ETL所有者对输入数据集进行行列权限的判断,即使是管理员运行此ETL是按照ETL所有者来判断权限。多数情况下所有者对输入数据集都是有权限的,但是不排除输入数据集之后有行列权限的变动,或者ETL有过转移所有者的操作。

5. 在ETL里用了null值替换,为什么部分null值却没有替换成功?

【原因】:字段的值是空字符串,但是返回的是null,导致null值替换失败。

【解决方案】:修改下字段的计算逻辑,把空字符串换成null

6. 关于ETL筛选数据行触发条件的解释

1)当过滤规则都选择“等于”的时候:

a. 满足所有规则即筛选出两个或多个条件都满足的数据,比如选择省份=浙江省,日期=2017-10-05,筛选出满足两个条件的仅有一条的数据。

b. 满足任一规则:即筛选出两个或多个条件中满足其中一个的数据,比如选择省份=浙江省,日期=2017-10-05,筛选出浙江省或者日期为2017-10-05的数据。

2)当过滤规则都选择“不等于”的时候:

a. 满足所有规则:即筛选出两个或多个条件都满足不等于的数据,比如选择省份不等于浙江省,日期不等于2017-10-05,筛选出满足两个条件的数据,结果是省份里不存在浙江省,且日期里不存在2017-10-05。

单独选择省份=浙江省,无数据;

单独选择日期=2017-10-05,无数据;

b. 满足任一规则:即筛选出两个或多个条件中满足其中一个的数据,比如选择省份不等于浙江省,日期不等于2017-10-05,会筛选出不等于浙江省并且日期不等于2017-10-05的数据。单独选择省份=浙江省,有数据;

单独选择日期=2017-10-05,有数据;

选择省份=浙江省且日期=2017-10-05,无数据;

3)总结

a. 当过滤规则为等于时,逻辑比较好理解,满足所有规则就是两个或多个条件都满足,满足任一规则就是满足其中一个条件.

b. 当过滤规则为不等于时,如果想实现的效果是过滤掉满足条件的所有数据,比如此案例是想过滤掉浙江省2018年10月5日的数据,那么触发规则需要选择满足任一规则。

7. ETL和数据集是否有备份机制

没有单独的备份机制,BI整体数据有备份机制的,每天凌晨2点30会自动备份数据。
BI做数据备份的话,会包含ETL、数据集的内容。

8. SQL算子能不能使用自定义时间宏?

ETL里面是不支持使用全局参数、动态时间宏的,可以使用相关的动态日期函数如now()、current_date()。

9. ETL中,直接使用sum来求和报错原因?

【原因】:仅仅写个sum的话对于ETL来说其实是它不知道该怎么聚合。卡片中,拖入维度字段,再拖入相应的这个数值字段,他会根据维度字段来自动聚合。
【解决方案】:必须使用窗口函数如sum() over(partition by)。

10. etl处理结果的数据集能写回我们的数据库吗?

数据分析平台内是目前是做不到的,因为数据集是面向BI分析的,要获得这些数据,只能通过API对接的方式。数据开发平台是可以的,因为它是面向数据开发的,ETL处理完了可直接写回到指定数据库。

11. 为什么查看不了ETL详情?

【原因】:普通用户非ETL所有者无法查看ETL详情,只有ETL所有者或者有管理员权限的用户才能查看ETL详情。

12. 重启jobserver和服务器重启对BI任务状态的影响是什么?

服务管理中,重启ETL的jobserver可以kill掉所有正在运行的任务。

服务器上重启BI可以kill掉所有运行中的任务和排队的任务。

13. ETL支持的输入数据集有?

包括文件数据、数据库数据集(不含直连数据库、视图数据集、实时数据集)以及其他Smart ETL中的输出数据集。

14. ETL页面的操作符中,使用合并列操作符后,如何把合并好的字段再拆开?

在合并列的操作符中,可以选择是否删除原始字段,建议保留原始字段,这样既有原始字段也有合并之后的字段可以使用;如果没有保留原始字段,可以使用添加计算字段操作符,使用substr和instr将合并之后的字段进行截取拆分。

15. 在ETL里能否固定随机数?

输出数据集在ETL没有更新的情况下,可以保持随机数不变 ,如果要保留某次结果的话,可以把输出数据集导出来。

16. 想替换某个ETL的输入数据集,通过这个ETL点到这个数据集,进行替换数据,为什么把其他ETL的输入数据集也替换了?

【原因】:数据集概览这里的替换数据是替换这个数据集本身,并非只是替换某个ETL的输入数据集。

【解决方案】:如果只是替换某个ETL的输入数据集,需要点击编辑进去替换。


1 人点赞过