Smartbi提供了3种方式用于数据的输出,分别是 追加到关系表、覆盖关系表、插入/更新关系表,支持将数据导出到目标数据库库中。
1. 概述
关系目标表通过追加、覆盖、插入或更新的方式将结果数据保存到Smartbi的关系数据源中。
类型 | 说明 |
---|---|
在原数据的基础上增加新的数据。 | |
用新的数据对原数据进行覆盖。 | |
根据数据库表主键进行数据的插入或更新,若主键相同,则更新数据,否则插入数据。 |
2. 输入输出
输入 | 只有一个输入端口,用于将接收到的结果数据存储到指定库中。 |
---|---|
输出 | 没有输出端口。 |
3. 参数配置
追加到关系表 | 覆盖关系表 | 插入/更新关系表 |
---|---|---|
参数说明如下:
参数 | 说明 |
---|---|
数据源 | 选择数据源,这些数据源是在Smartbi中连接的关系数据源。 |
SCHEMA | 在选择的数据源中选择SCHEMA。 |
表 | 选择数据源和SCHEMA之后,可以选择目标表。 新建一张表,也可以在下拉框中选择已有的表,详情请参考 |
节点高级设置 | 用于配置JDBC写入数据时的connection、batchsize、写入最大并发数等属性详,请参考 节点高级设置 。 |
回退模式 | 回退模式用于在插入数据前先把满足条件的数据删除,可实现增量删除,详情请参考 回退模式。 |
4. 新建目标表
1.新建表时,支持添加字段别名到数据库。
- 支持的数据库有:MYSQL、INFOBRIGHT、DB2、ORACLE、POSTGRESQL、GREENPLUM、SYBASE、GBASE(8a版本)、DAMENG(7版本)、CLICKHOUSE、GAUSS100。
- CLICKHOUSE、GAUSS100支持添加字段别名到数据库,但在数据源表不显示已有的注释。
2.当用户选中的目标表的order by字段跟主键字段不一致时,用户可通过该节点重新建表指定主键,或者通过数据库中将该表的主键字段更改为order by字段一致。
3. 当数据源为 ClickHouse ,且当前选中的目标表无主键时,则需要用户手动指定更新依据字段。否则节点将会执行失败,提示信息如下:
4.如果数据源连的是ClickHouse集群环境,支持新建 分布式表、副本表、物理表。
分布式表和副本表的集群名,默认是读数据源连接字符串中的集群名称,用户可以手动修改:
分片集群的数据源连接字符串的属性名:clusterName
副本集群的数据源连接字符串的属性名:clusterReplicaName
5.如果数据源连的是星环数据库时,支持建orc非分区事务表。
分桶字段默认为第一个非decimal类型的字段,分桶数目默认为1,两者用户均可根据实际情况,自行修改调整。
- 产品从10.5.15版本及以上才支持星环建表功能。
- 星环数据库认证方式必须是用户名和密码方式。
- 如果是数据量特别大的表,建议客户建表时要根据实际业务场景手工调整分桶字段和分桶数,不要使用默认值。分桶表一旦建立,后续星环数据库不支持再对该表进行分桶处理。
6.新建表时支持指定表别名,目前支持的数据库有:MYSQL、INFOBRIGHT、XINGHUAN、MARIADB、SELECTDB、STARROCKS、TIDB、ALIYUN_MAX_COMPUTE、ORACLE、DB2、POSTGRESQL、GREENPLUM、DAMENG、SYBASE、GAUSS200、MONETDB、HANA、YMATRIX、KINGBASE、VASTBASEG100。注意:如不支持的数据库则不会显示表别名输入框。
5. 回退SQL语句
回退SQL语句用于在插入数据前先把满足条件的数据删除,可实现增量删除。
- 无(默认);
- 执行前删除数据:根据填写的删除sql语句条件,可实现在插入数据前先把满足条件的数据删除掉。
关系目标表(追加)、关系目标表(插入或更新)节点支持回退模式功能。
勾选回退SQL语句,在删除sql语句框中填写删除语句(条件SQL使用表头真名)。
如下图,根据条件会先删除订单日期为”2024-02-28“的数据,然后根据节点功能更新、追加数据:关系目标表(追加)节点会直接追加新增的数据;关系目标表(插入或更新)节点会先更新原有的数据,然后再插入新增的数据。
在回退模式填写SQL语句时,由于GuassDB 200数据库中默认字段为小写,所以字段为大写需要添加双引号才能生效。
应用场景:用户在进行ETL调度时,发现某天调度的数据有问题,需要进行重跑(把之前已经入库的数据删除再插入),可以使用此功能可以先把入库的数据删除,再将新数据追加到目标表中。
6. 节点高级设置
功能入口,如下图:
配置界面,如下图。配置说明见注释:
7. Kingbase数据库兼容模式
由于人大金仓Kingbase存在多种数据库兼容模式,目前产品仅支持oracle、pg模式。其中默认情况下,兼容模式是oracle(因为数据库默认也是这个模式)。如其他模式需要在数据库连接高级中自定义参数或者节点调优中配置相应项, 取值可以为:oracle、pg。节点配置项要优先于数据库连接自定义参数。例如:
a.节点配置项:KINGBASE_DB_SQLMODE=pg
b.自定义参数:smartbi-kingbase-db-sqlmode=pg
8. ClickHouse数据库优化
a.分布表时,追加节点的回退sql的执行采用直接删除local表中对应数据。
b.插入或更新节点时,基于原表上做先删除再插入达到插入或更新目的。该方案相比临时表方案,不会搬迁大量数据,在实际更新数据较少,目标表数据又较大时,优化较明显。
备注:需注意这两个配置项开启时,需要注意以下事宜。
- 要确保clickhouse能支持运行alter table delete语句;
- clickhouse版本要求至少21以上;
- 同个时间内不要并发跑多个目标表节点, alter table delete会导致clickhouse变得很卡很慢,要尽可能保证串行。
9. 更新目标表
1.目前支持更新目标表功能的数据源有:clickhouse、mysql、oracle、starrocks。
2.功能入口: