# 加工组件:存储过程
通常使用数据加工处理数据不需要使用存储过程,但如果数据库中已经有存储过程了,数据加工支持通过SQL组件调用存储过程。
示例地址:调用存储过程 (opens new window)
点击查看如何创建存储过程
可在SQL查询(参考文档:SQL查询)中执行存储过程定义语句来创建存储过程,语法如下:
-- 以MySQL数据库语法为例
create procedure 过程名称(参数)
BEGIN
过程体
END
在MySQL数据源中新建SQL查询窗口,输入存储过程定义语句并执行,如下:
提示
- 使用
drop procedure 过程名
删除存储过程 - 使用
delimiter
来定义语句的结束符
# 在加工中调用存储过程
在数据加工中可添加一个SQL组件节点,在SQL组件中使用call
命令调用存储过程。
# 调用方法
call 存储过程名(参数)
# 调用示例
示例存储过程p_quality_customers
定义如下:
-- 三个参数在过程体中设置了默认值
CREATE PROCEDURE `p_quality_customers`(
IN min_monthly_purchases int
, IN min_dollar_amount_purchased DECIMAL(10,2)
, IN tjyf VARCHAR(6)
)
不带参数调用
call p_quality_customers()
带参数调用
call p_quality_customers(3,30,'200508')
提示
一般数据库的存储过程参数类型分为IN(输入)、OUT(输出)、INOUT(输入输出),目前数据加工中调用时只支持IN参数。
# 将存储过程的输出表作为模型输出
在数据管理中,数据加工与物理表一般是一对一的关系,且每个数据加工必须以模型输出节点作为流程图结束的节点,在模型输出节点来指定目标物理表。
在调用存储过程处理数据的场景下,情况有所不同,目标物理表在存储过程中已经处理好了,只需要将存储过程的输出表(表名为FACT_DVD_VIP_CUST)设置为模型输出。
# 设置步骤
- 在调用存储过程的SQL节点后添加物理表节点
- 物理表节点中指定物理表为存储过程的输出表(
FACT_DVD_VIP_CUST
) - 物理表节点后添加模型输出,模型输出的提取数据设置为使用上游节点的表
# 管理存储过程的血统
存储过程加工模型的逻辑位于产品环境外部(数据库服务器中),此时数据加工不能自动解析出输出表的血统关系,只能通过手工编辑字段的取数公式
或取数条件
来管理模型的血统。
# 操作步骤
- 在模型输出的字段列表上编辑取数公式
- 取数公式的表达式对话框中添加引用表
引入存储过程加工中使用到的模型 - 输入取数口径表达式
0条评论
评论