# 加工组件:SQL
通常使用数据加工处理数据并不需要手动编写SQL语句,但数据加工仍然支持通过添加SQL组件来使用SQL的方式加工数据,在实现一些复杂或数据库中特有语法逻辑时可以使用,比如调用数据库存储过程、删除数据或更新数据等。
按照使用场景,SQL组件可以作为输入节点和作为加工节点添加。
警告
SuccBI中不建议使用SQL进行数据处理,原因如下:
- 系统不能自动分析模型与SQL中引用表的依赖关系,需要手动进行设置,参考管理存储过程的血统
- SQL的语法在各数据库中均有差异,不利于数据库之间的迁移
# SQL作为输入节点
在数据加工界面的顶部工具栏中点击组件 > SQL添加,如下:
示例地址:SQL节点-输入节点 (opens new window)
添加的SQL组件将作为一个输入节点,可以在下方的SQL输入区域中输入一个或多个SQL(多个SQL用分号;
分隔,可以包含符合当前数据库语法的任何语句,如创建表、插入、更新、删除等),此时作为数据来源通常需要以查询语句(SELECT语句
)作为最后一条SQL语句,查询出来的结果集将向后传递,并在模型输出节点中可落地为数据库表。
提示
- SQL作为输入节点也可以只对已存在的数据库表进行更新、删除等操作,而不生成新的表,其后序节点是一个数据库表节点(引用的表是SQL中进行处理的表),模型输出中选择使用上游节点表,使用方式参考调用数据库存储过程 (opens new window)。
# SQL作为加工节点
在数据加工的表输出节点后作为后序节点添加,如下:
示例地址:SQL节点-表输出后序节点 (opens new window)
添加的SQL组件通常用来对表输出中落地的数据库表进行更新或删除,此时可以编写SQL进行更新或使用更新组件更新。
提示
- 除了表输出,SQL节点在其他组件的后序节点下拉列表中是灰色的,不可添加
- 加工中通过SQL或更新组件对数据库中已存在的数据库表进行处理后,又需要将该表作为加工的模型输出表,需要使用到提取数据的使用上游节点表的机制
# SQL中输入使用参数
SQL节点可以通过${参数名}
的方式引用模型中定义的参数,需要注意的是,SQL中的引用参数会忽略参数的类型,直接采用文本替换
的方式生成SQL,所以需要区分数据类型进行处理,如下:
- 如果字段是字符型,则需要左右添加单引号引用
SELECT RXDID AS 日销单ID,
MD AS 门店,
SPSJ AS 商品数量
YSSJ AS 交易时间
FROM ODS_FS_RXD
WHERE RXDID = '${日销单ID}'
- 如果字段是数值型,则无需单引号
SELECT RXDID AS 日销单ID,
MD AS 门店,
SPSJ AS 商品数量
YSSJ AS 交易时间
FROM ODS_FS_RXD
WHERE SPSJ > ${商品数量}
- 如果字段是日期型,则需要先使用数据库函数转为日期类型
SELECT RXDID AS 日销单ID,
MD AS 门店,
SPSJ AS 商品数量
YSSJ AS 交易时间
FROM ODS_FS_RXD
WHERE YSSJ > TO_DATE('${日期}','yyyymmdd')
0条评论
评论