普元数据开发平台 普元数据开发平台
产品介绍
安装部署
快速入门
操作指南
SDK开发指南
FAQ
  • 分页循环抽取数据示例
  • 一、原理简介:
  • 二、主流程
  • 三、子转换及子编排配置
  • 1. 转换作业-获取页数
  • 2. 编排作业-获取参数循环抽数
  • 四、主编排作业配置
  • 五、调试运行

# 分页循环抽取数据示例

# 一、原理简介:

所谓分页循环,其实就是将表里的数据按照rownum分页,比如每页5000条,然后循环逐页抽取,分批入库。

源表数据量:200W+

每页数据量:100000

页数:31

源表:orderinfo

目标表:orderinfo_target

# 二、主流程

分页循环主流程为编排作业:

主job结构:

【1】转换:获取页数 ——用来获取页数表结构

【2】编排:获取参数循环抽数 —— 获取分页数,设置参数,获取参数进行循环抽数。

若需要在作业调度模块调度执行,则需要将该编排作业在作业流中引用并提交。本示例仅介绍编排及转换的具体实现。

image-20240613162353715

# 三、子转换及子编排配置

# 1. 转换作业-获取页数

image-20240613163013802

  1. 获取源表页数

    image-20240613163237080

    这里用表输入组件,sql句子的含义是计算源表行数除以100000,再用ceil函数向上取整。

    注意比如 行数/100000 = 101.4,这个时候我们要的结果页数应该是102。

    SELECT ceil(count(1)/100000) as pages FROM  dws_source_2653.orderinfo
    
  2. 字段选择

    image-20240613163327555

    从上一步获取的字段,类型为Number。修改为整型Integer。

  3. 表输入

    image-20240613163433048

    红框标注位置占位符?代表取前一个步骤的常量结果,在下方红框区域要选择前一个步骤。

    #oracle可使用rownum获取序号
    select rownum as P_PAGE from table1 where rownum<=?
    #mysql使用ROW_NUMBER()OVER()
    SELECT p_page from (SELECT ROW_NUMBER()OVER() as p_page from dws_source_2653.orderinfo) t where p_page <=?
    
  4. 字段选择

    image-20240613163610373

    获取上一步生成的字段,类型也修改为Integer。

  5. 复制记录到结果

    image-20240613163656912

# 2. 编排作业-获取参数循环抽数

这个编排作业由2个转换组成,一个是设置变量,一个是获取变量加抽数。

image-20240613163833957

设置变量

获取变量加抽数

  1. 转换-设置变量

    image-20240613163953634

    • 从结果获取记录

      image-20240613164059997

    • 设置变量

      image-20240613164123136

  2. 转换-获取变量加抽数

    image-20240613164202595

    • 表输入

      image-20240613164334879

      SELECT B.rn,B.* FROM ( select * from
      (SELECT A.*, ROW_NUMBER()OVER() RN
      FROM (SELECT * FROM dws_source_2653.orderinfo) A ) n
      WHERE n.RN <= (${P_PAGE}*100000)  ) B
      WHERE B.rn >= ((${P_PAGE}-1)*100000+1)
      
    • 表输出

      image-20240613164352344

      表输出需要设置字段映射关系,表输入节点使用变量时,表输出获取字段会报错,可以先把表输入的sql改成SELECT * FROM dws_source_2653.orderinfo。获取字段及配置完映射后,再改成正确的SQL语句。

    # 四、主编排作业配置

    image-20240613164823954

    image-20240613164832797

    image-20240613164941899

    引用的编排作业-获取参数循环抽数,需要勾选【执行每个输入行】

# 五、调试运行

image-20240613165112725

← FTP上传示例 FTP上传下载删除 →