# 加工组件:SQL

通常使用数据加工处理数据并不需要手动编写SQL语句,但数据加工仍然支持通过添加SQL组件来使用SQL的方式加工数据,在实现一些复杂或数据库中特有语法逻辑时可以使用,比如调用数据库存储过程、删除数据或更新数据等。

按照使用场景,SQL组件可以作为输入节点作为加工节点添加。

警告

SuccBI中不建议使用SQL进行数据处理,原因如下:

  1. 系统不能自动分析模型与SQL中引用表的依赖关系,需要手动进行设置,参考管理存储过程的血统
  2. SQL的语法在各数据库中均有差异,不利于数据库之间的迁移

# SQL作为输入节点

在数据加工界面的顶部工具栏中点击组件 > SQL添加,如下:

SQL组件

示例地址:SQL节点-输入节点 (opens new window)

添加的SQL组件将作为一个输入节点,可以在下方的SQL输入区域中输入一个或多个SQL(多个SQL用分号;分隔,可以包含符合当前数据库语法的任何语句,如创建表、插入、更新、删除等),此时作为数据来源通常需要以查询语句(SELECT语句)作为最后一条SQL语句,查询出来的结果集将向后传递,并在模型输出节点中可落地为数据库表。

提示

  1. SQL作为输入节点也可以只对已存在的数据库表进行更新、删除等操作,而不生成新的表,其后序节点是一个数据库表节点(引用的表是SQL中进行处理的表),模型输出中选择使用上游节点表,使用方式参考调用数据库存储过程 (opens new window)

# SQL作为加工节点

在数据加工的表输出节点后作为后序节点添加,如下:

SQL节点

示例地址:SQL节点-表输出后序节点 (opens new window)

添加的SQL组件通常用来对表输出中落地的数据库表进行更新或删除,此时可以编写SQL进行更新或使用更新组件更新。

提示

  1. 除了表输出,SQL节点在其他组件的后序节点下拉列表中是灰色的,不可添加
  2. 加工中通过SQL或更新组件对数据库中已存在的数据库表进行处理后,又需要将该表作为加工的模型输出表,需要使用到提取数据的使用上游节点表的机制

# SQL中输入使用参数

SQL节点可以通过${参数名}的方式引用模型中定义的参数,需要注意的是,SQL中的引用参数会忽略参数的类型,直接采用文本替换的方式生成SQL,所以需要区分数据类型进行处理,如下:

  1. 如果字段是字符型,则需要左右添加单引号引用
SELECT RXDID AS 日销单ID,
		 MD AS 门店,
         SPSJ AS 商品数量
		 YSSJ AS 交易时间
FROM ODS_FS_RXD
WHERE RXDID = '${日销单ID}'
  1. 如果字段是数值型,则无需单引号
SELECT RXDID AS 日销单ID,
		 MD AS 门店,
         SPSJ AS 商品数量
		 YSSJ AS 交易时间
FROM ODS_FS_RXD
WHERE SPSJ > ${商品数量}
  1. 如果字段是日期型,则需要先使用数据库函数转为日期类型
SELECT RXDID AS 日销单ID,
		 MD AS 门店,
         SPSJ AS 商品数量
		 YSSJ AS 交易时间
FROM ODS_FS_RXD
WHERE YSSJ > TO_DATE('${日期}','yyyymmdd')
是否有帮助?
0条评论
评论