# 加工组件:存储过程

通常使用数据加工处理数据不需要使用存储过程,但如果数据库中已经有存储过程了,数据加工支持通过SQL组件调用存储过程。

示例地址:调用存储过程 (opens new window)

点击查看如何创建存储过程

可在SQL查询(参考文档:SQL查询)中执行存储过程定义语句来创建存储过程,语法如下:

-- 以MySQL数据库语法为例
create procedure 过程名称(参数)
BEGIN
  过程体
END

在MySQL数据源中新建SQL查询窗口,输入存储过程定义语句并执行,如下:

创建存储过程

提示

  1. 使用drop procedure 过程名删除存储过程
  2. 使用delimiter来定义语句的结束符

# 在加工中调用存储过程

在数据加工中可添加一个SQL组件节点,在SQL组件中使用call命令调用存储过程。

添加SQL组件

# 调用方法

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)设置为模型输出。

# 设置步骤

  1. 在调用存储过程的SQL节点后添加物理表节点

    添加物理表

  2. 物理表节点中指定物理表为存储过程的输出表(FACT_DVD_VIP_CUST

    选择物理表

  3. 物理表节点后添加模型输出,模型输出的提取数据设置为使用上游节点的表

    使用上游节点的表

# 管理存储过程的血统

存储过程加工模型的逻辑位于产品环境外部(数据库服务器中),此时数据加工不能自动解析出输出表的血统关系,只能通过手工编辑字段的取数公式取数条件来管理模型的血统。

# 操作步骤

  1. 在模型输出的字段列表上编辑取数公式

    编辑取数公式

  2. 取数公式的表达式对话框中添加引用表
    引入存储过程加工中使用到的模型

    添加引用表

  3. 输入取数口径表达式

    取数口径

是否有帮助?
0条评论
评论