文档首页 > > 快速入门> 步骤5:数据开发

步骤5:数据开发

分享
更新时间:2020/06/17 GMT+08:00

DAYU数据开发模块可管理多种大数据服务,提供一站式的大数据开发环境、全托管的大数据调度能力,极大降低用户使用大数据的门槛,帮助用户快速构建大数据处理中心。

使用DAYU数据开发,用户可进行数据管理、数据集成、脚本开发、作业开发、作业调度、运维监控等操作,轻松完成整个数据的处理分析流程。

在DAYU数据开发模块中,我们将完成以下步骤:

  1. 脚本开发
  2. 开发批处理作业导入历史数据
    1. 历史数据到源数据表,使用批量数据迁移将历史数据从OBS导入到源数据表。
    2. 历史数据清洗,使用数据开发的ETL Job将源数据表清洗之后导入明细层出租车出行数据表。
    3. 将基础数据插入关系表中。
    4. 数据汇总,通过DLI SQL将出租车行程数据关系表中的数据进行汇总并写入汇总表。

脚本开发

  1. 在DAYU控制台左上角,单击模块下拉列表并选择“数据开发”,进入数据开发控制台。
  2. 在左侧导航栏中,单击“脚本开发”,再右键单击“脚本”选择新建目录,在弹出框中输入目录名称例如“transport”,然后单击“确定”

    如果已经创建过目录了,可以跳过这一步。

    图1 脚本页面

  3. 在脚本目录树中,右键单击指定的目录名称,选择菜单“新建DLI SQL脚本”

    图2 新建SQL脚本

  4. 在新建的DLI_untitled脚本中,选择数据连接、数据库、队列后,输入脚本内容。

    图3 编辑脚本

    该脚本用于将付款方式的基本信息写入到付款方式关系表中。脚本内容如下:

    1
    2
    3
    4
    5
    6
    INSERT INTO payment_type VALUES ("1","Credit card");
    INSERT INTO payment_type VALUES ("2","Cash");
    INSERT INTO payment_type VALUES ("3","No charge");
    INSERT INTO payment_type VALUES ("4","Dispute");
    INSERT INTO payment_type VALUES ("5","Unknown");
    INSERT INTO payment_type VALUES ("6","Voided trip");
    

  5. 单击“运行”按钮,测试脚本是否正确。

    图4 运行脚本

  6. 测试通过后,单击“保存”按钮,在弹出框中输入脚本名称如:Payment_type_prepare,选择保存的脚本路径后,单击“确定”完成脚本的保存。

    图5 另存脚本

  7. 重复4~6的步骤,完成如下脚本的创建。

    1. 脚本名称:RateCode_prepare,该脚本用于将费率基本信息写入费率关系表中。脚本内容如下:
      1
      2
      3
      4
      5
      6
      INSERT INTO rate VALUES ("1","Standard rate");
      INSERT INTO rate VALUES ("2","JFK");
      INSERT INTO rate VALUES ("3","Newark");
      INSERT INTO rate VALUES ("4","Nassau or Westchester");
      INSERT INTO rate VALUES ("5","Negotiated fare");
      INSERT INTO rate VALUES ("6","Group ride");
      
    2. 脚本名称:Vendor_prepare,该脚本用于将出租车供应商基本信息写入到供应商关系表中。脚本内容如下:
      1
      2
      INSERT INTO vendor VALUES ("1","A Company");
      INSERT INTO vendor VALUES ("2","B Company");
      
    3. 脚本名称:dws_company_income,该脚本用于统计一年的总收入并将结果写入汇总表中。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      CREATE TABLE IF NOT EXISTS dws_company_income(
      `Date` TIMESTAMP COMMENT '',
      `totalincome` FLOAT COMMENT '',
      `VendorID` STRING COMMENT ''
      );
      
      INSERT INTO dws_company_income 
      select Date, totalincome, vendor_id from
      (
      select date_format(tpep_dropoff_datetime, 'yyyy') AS Date, 
      SUM(total_amount) as totalincome, 
      vendor_id 
      from dwd_taxi_trip_data 
      GROUP BY date_format(tpep_dropoff_datetime, 'yyyy'), vendor_id 
      ORDER BY date_format(tpep_dropoff_datetime, 'yyyy')
      ) t WHERE t.Date = '${date}';
      
      SELECT * FROM  dws_company_income;
      

      该脚本中包含了${date}参数,在测试运行该脚本时,需要给这个参数临时设置一个测试值,否则运行会报错:

      图6 参数测试值

开发批处理作业导入历史数据

  1. 在DAYU数据开发控制台的左侧导航栏中,单击“作业开发”,然后右键单击“作业”选择菜单“新建目录”,在目录树下根据需要创建作业目录,例如“transport”。
  2. 右键单击作业目录,在弹出菜单中单击新建作业
    图7 作业
  3. 在弹出弹框中输入“作业名称”如dayu_demo_batch,“作业类型”选择“批处理”,其他参数保留默认值,单击“确定”完成批作业创建。
    图8 新建批处理作业
  4. 如下图所示,编排批作业。
    图9 编排作业

    每个节点配置如下:

    • taxidata_obs2dli节点:为CDM节点,通过CDM节点将OBS上的历史数据导入到DLI的行程数据原始表中。其中CDM集群名称和作业名称分别选择在步骤2:数据集成中的集群和作业。
      图10 taxidata_obs2dli节点属性
    • ETL_raw_to_dwd节点:为ETL节点,用于清洗过滤DLI上原始表中的数据,将合法数据写入规范设计中建好的出租车行程数据关系表dwd_taxi_trip_data中。
      图11 ETL_raw_to_dwd节点属性

      在ETL_raw_to_dwd节点的“ETL配置”区域,单击,进入ETL配置页面,请根据页面提示配置参数,其中“导入模式”此处配置为“导入前清空表”,在业务中请根据实际情况进行设置,以免造成数据丢失。

      图12 ETL_raw_to_dwd节点 - ETL配置

      “过滤条件”配置为:

      trip_distance > 0 and total_amount >0 and payment_type in (1,2,3,4,5,6) and VendorID in (1,2) and ratecodeid  in (1,2,3,4,5,6) and tpep_pickup_datetime<tpep_dropoff_datetime and tip_amount >= 0 and fare_amount >= 0 and extra >= 0 and mta_tax >= 0 and tolls_amount >= 0 and improvement_surcharge >= 0  and total_amount >= 0 and (fare_amount+extra+mta_tax+tip_amount+tolls_amount+improvement_surcharge) = total_amount

      完成源端配置和目的端配置后,单击“下一步”,配置字段映射,将源字段指向含义相同的目的字段。请将鼠标移至某一个字段的箭头起点,当光标显示为“+”的形状时,按住鼠标,将箭头指向相同含义的目的字段,然后松开鼠标。

      图13 ETL_raw_to_dwd节点 - 字段映射
    • ETL_raw_to_err节点:为ETL节点,过滤DLI上原始表中的错误数据,存入脏数据表中。
      图14 ETL_raw_to_err节点属性

      在ETL_raw_to_err节点的“ETL配置”区域,单击,进入ETL配置页面,如图15所示,请根据页面提示配置参数,其中“导入模式”此处配置为“导入前清空表”,在业务中请根据实际情况进行设置,以免造成数据丢失。

      图15 ETL_raw_to_err节点 - ETL配置

      “过滤条件”配置为:

      trip_distance <= 0 or total_amount <= 0 or payment_type not in (1,2,3,4,5,6) or VendorID not in (1,2) or ratecodeid  not in (1,2,3,4,5,6) or tpep_pickup_datetime>=tpep_dropoff_datetime or tip_amount < 0 or fare_amount < 0 or extra < 0 or mta_tax < 0 or tolls_amount < 0 or improvement_surcharge < 0  or total_amount < 0 or (fare_amount+extra+mta_tax+tip_amount+tolls_amount+improvement_surcharge) != total_amount

      完成源端配置和目的端配置后,单击“下一步”,配置字段映射,将源字段指向含义相同的目的字段。

      图16 ETL_raw_to_err节点 - 字段映射
    • dws_company_income节点:为DLI SQL节点,按供应商维度统计汇总一年的收入。

      该节点为DLI SQL节点,其中,“SQL脚本”请选择在脚本开发中创建的脚本dws_company_income,“队列名称”此处选择已创建的队列dayu_demo,如果选择默认队列default,执行性能相对较慢。

      图17 dws_company_income节点属性
    • Dummy_finish节点:不做任何事情,作为作业结束的标记。
      图18 Dummy_finish节点
  5. 作业编排好之后,通过测试运行来测试作业编排是否正确。测试OK之后可以根据需要配置调度方式,单击“执行调度”来启动作业的运行。
    图19 测试运行

    在数据开发的“作业监控”页面,查看作业监控信息:

    图20 作业监控

    您可以在数据开发的“脚本开发”页面新建一个DLI SQL脚本,执行以下命令查询结果,执行成功后返回类似如下的结果:

    图21 查询结果
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问