
# 步骤6：数据开发处理
DataArts Studio数据开发模块可管理多种大数据服务，提供一站式的大数据开发环境、全托管的大数据调度能力，极大降低用户使用大数据的门槛，帮助您快速构建大数据处理中心。
使用DataArts Studio数据开发，用户可进行数据管理、数据集成、脚本开发、作业开发、版本管理、作业调度、运维监控等操作，轻松完成整个数据的处理分析流程。
在DataArts Studio数据开发模块中，您将完成以下步骤：
1. [数据管理]
2. [脚本开发]
3. [作业开发]
   1. 历史数据到源数据表，使用数据集成将历史数据从OBS导入到SDI贴源层的原始数据表。
   
   2. 历史数据清洗，使用数据开发的MRS Hive SQL脚本将源数据表清洗之后导入DWI层的标准出行数据表。
   
   3. 将基础数据插入维度表中。
   
   4. 将DWI层的标准出行数据导入DWR层的事实表中。
   
   5. 数据汇总，通过Hive SQL将出租车行程订单事实表中的数据进行汇总统计并写入汇总表。
    
4. [运维调度]
 #### 数据管理
数据管理功能可以协助用户快速建立数据模型，为后续的脚本和作业开发提供数据实体。主要包含建立数据连接、新建数据库、新建数据表等操作。
在本例中，相关数据管理操作已经在[步骤2：数据准备](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0004.html)中完成，本步骤可跳过。
 #### 脚本开发
1. 在DataArts Studio控制台首页，选择对应工作空间的"数据开发"模块，进入数据开发页面。
2. 在左侧导航栏中，单击"脚本开发"，再右键单击"脚本"选择"新建目录"，在弹出框中输入目录名称例如"transport"，然后单击"确定"。
3. 在脚本目录树中，右键单击目录名称transport，选择菜单"新建Hive SQL脚本"。
4. 在新建的HIVE_untitled脚本中，选择数据连接mrs_hive_link，选择数据库demo_dwr_db，然后输入脚本内容。
   
   图1编辑脚本   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001251972699.png "点击放大")
   
   该脚本用于将付款方式、费率代码、供应商的基本信息写入到相应的维度表中。脚本内容如下：
   ```
   truncate table dim_payment_type;
   truncate table dim_rate_code;
   truncate table dim_vendor;
   INSERT INTO dim_payment_type VALUES ("1","Credit card");
   INSERT INTO dim_payment_type VALUES ("2","Cash");
   INSERT INTO dim_payment_type VALUES ("3","No charge");
   INSERT INTO dim_payment_type VALUES ("4","Dispute");
   INSERT INTO dim_payment_type VALUES ("5","Unknown");
   INSERT INTO dim_payment_type VALUES ("6","Voided trip");
   INSERT INTO dim_rate_code VALUES ("1","Standard rate");
   INSERT INTO dim_rate_code VALUES ("2","JFK");
   INSERT INTO dim_rate_code VALUES ("3","Newark");
   INSERT INTO dim_rate_code VALUES ("4","Nassau or Westchester");
   INSERT INTO dim_rate_code VALUES ("5","Negotiated fare");
   INSERT INTO dim_rate_code VALUES ("6","Group ride");
   INSERT INTO dim_vendor VALUES ("1","A Company");
   INSERT INTO dim_vendor VALUES ("2","B Company");
   ```
   
   
5. 单击"运行"按钮，测试脚本是否正确。 
   图2运行脚本   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001207252782.png "点击放大")
   
   
   
6. 测试通过后，单击"保存"按钮，在弹出框中输入脚本名称如：demo_taxi_dim_data，选择保存的脚本路径并单击"提交"按钮提交版本。
   
   图3保存脚本   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001251652803.png "点击放大")
   
   图4提交脚本版本   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001251972757.png "点击放大")
   
   
7. 重复[4]\~[6]的步骤，完成如下脚本的创建。
   
   1. 脚本名称：demo_etl_sdi_dwi，该脚本用于将SDI贴源层的原始数据写入到DWI层的标准出行数据表中。脚本内容如下：
      ```
      INSERT INTO
        demo_dwi_db.dwi_taxi_trip_data
      SELECT
        `vendorid`,
        cast(
          regexp_replace(
            `tpep_pickup_datetime`,
            '(\\d{2})/(\\d{2})/(\\d{4}) (\\d{2}):(\\d{2}):(\\d{2}) (.*)',
            '$3-$1-$2 $4:$5:$6'
          ) as TIMESTAMP
        ),
        cast(
          regexp_replace(
            `tpep_dropoff_datetime`,
            '(\\d{2})/(\\d{2})/(\\d{4}) (\\d{2}):(\\d{2}):(\\d{2}) (.*)',
            '$3-$1-$2 $4:$5:$6'
          ) as TIMESTAMP
        ),
        `passenger_count`,
        `trip_distance`,
        `ratecodeid`,
        `store_fwd_flag`,
        `pulocationid`,
        `dolocationid`,
        `payment_type`,
        `fare_amount`,
        `extra`,
        `mta_tax`,
        `tip_amount`,
        `tolls_amount`,
        `improvement_surcharge`,
        `total_amount`
      FROM
        demo_sdi_db.sdi_taxi_trip_data
      WHERE
        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;
      ```
      
   
   2. 脚本名称：demo_etl_dwi_dwr_fact，该脚本用于将DWI层的标准出行数据写入到DWR层的事实表中。脚本内容如下：
      ```
      INSERT INTO
        demo_dwr_db.fact_stroke_order
      SELECT
        rate_code_id,
        vendor_id,
        payment_type,
        tpep_dropoff_datetime,
        tpep_pickup_datetime,
        pu_location_id,
        do_location_id,
        fare_amount,
        extra,
        mta_tax,
        tip_amount,
        tolls_amount,
        improvement_surcharge,
        total_amount
      FROM
        demo_dwi_db.dwi_taxi_trip_data;
      ```
      
   
   
   
   
 
 #### 作业开发
1. 在DataArts Studio数据开发控制台的左侧导航栏中，单击"作业开发"，然后右键单击"作业"选择菜单"新建目录"，在目录树下根据需要创建作业目录，例如"transport"。
2. 右键单击作业目录，在弹出菜单中单击"新建作业"。
   图5作业   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001251972843.png)
   
   
3. 在弹出框中输入"作业名称"如demo_taxi_trip_data，"作业类型"选择"批处理"，其他参数保留默认值，单击"确定"完成批作业创建。
   图6新建批处理作业   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001206772986.png "点击放大")
   
   
4. 如下图所示，编排批作业。
   图7编排作业   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001186549265.png "点击放大")
   
   
   每个节点配置如下：
   - **source_sdi节点** ：为CDM Job节点，通过CDM节点将OBS上的数据导入到MRS Hive的原始表中。其中CDM集群名称和作业名称分别选择在[步骤3：数据集成](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0005.html)中的集群和迁移作业（图中仅为示例，以实际集群名和迁移作业名为准）。
     图8source_sdi节点属性   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001264647141.png) 
   
   - **demo_etl_sdi_dwi节点** ：为MRS Hive SQL节点，用于清洗过滤SDI贴源层上原始表中的数据，将合法数据写入数据架构中DWI层标准出行数据表dwi_taxi_trip_data中。其中，"SQL脚本"请选择在[脚本开发]中创建的脚本demo_etl_sdi_dwi。
     图9demo_etl_sdi_dwi节点属性   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001264647857.png "点击放大")
     
     
   
   - **dwi数据监控节点** ：为Data Quality Monitor节点，用于监控DWI层的标准出行数据的质量。其中，"数据质量规则名称"请选择发布DWI层标准出行数据表时自动生成的质量规则"标准出行数据"。
     图10dwi数据监控节点   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001219448728.png "点击放大")
     
     
   
   - **demo_etl_dwi_dwr_fact节点** ：为MRS Hive SQL节点，用于将DWI上的原始数据写入DWR层的事实表fact_stroke_order中。其中，"SQL脚本"请选择在[脚本开发]中创建的脚本demo_etl_dwi_dwr_fact。
     图11demo_etl_dwi_dwr_fact节点属性   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001264408969.png)
     
     
   
   - **码表维度数据填充节点** ：为MRS Hive SQL节点，用于将付款方式、费率代码和供应商的集成数据写入DWR层相应的维度表中。其中，"SQL脚本"请选择在[脚本开发]中创建的脚本demo_taxi_dim_data。
     图12码表维度数据填充节点属性   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001219088856.png)
     
     
   
   - **等待节点** ：不做任何事情，等待前面的节点运行结束。
     图13等待节点   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001264530933.png) 
   
   - **按付款方式汇总统计节点** ：为MRS Hive SQL节点，按付款方式维度统计汇总截止到当前日期的收入。该节点是从发布汇总表"付款方式统计汇总"时自动生成的数据开发作业（作业名称以demo_dm_db_dws_payment_type_开头，命名规则为"数据库名称_汇总表编码"）中复制的，复制节点后需手动配置该节点的"数据连接"和"数据库"参数，"数据库"需设置为事实表所在的数据库。
     ![](https://support.huaweicloud.com/qs-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
     数据开发作业自动生成功能需在[管理配置中心](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0007.html#dataartsstudio_04_0007__section83068019428)中勾选"创建数据开发作业"实现。
     图14按付款方式汇总统计节点属性   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001220049584.png)
     
     
   
   - **按费率汇总统计节点** ：为MRS Hive SQL节点，按费率代码维度统计汇总截止到当前日期的收入。该节点是从发布汇总表"费率统计汇总"时自动生成的数据开发作业（作业名称以demo_dm_db_dws_rate_code_开头，命名规则为"数据库名称_汇总表编码"）中复制的，复制节点后需手动配置该节点的"数据连接"和"数据库"参数，"数据库"需设置为事实表所在的数据库。
     图15按费率汇总统计节点属性   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001264649929.png)
     
     
   
   - **按供应商汇总统计节点** ：为MRS Hive SQL节点，按供应商维度统计汇总截止到当前日期各时间维度的收入。该节点是从发布汇总表"供应商统计汇总"时自动生成的数据开发作业（作业名称以demo_dm_db_dws_vendor_开头，命名规则为"数据库名称_汇总表编码"）中复制的，复制节点后需手动配置该节点的"数据连接"和"数据库"参数，"数据库"需设置为事实表所在的数据库。
     图16按供应商汇总统计节点属性   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001264530093.png)
     
     
   
   - **Dummy_finish节点** ：不做任何事情，作为作业结束的标记。
     图17Dummy_finish节点   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001264810133.png) 
    
5. 作业编排好之后，您可以通过测试运行来测试作业编排是否正确。
6. 您可以根据需要，配置作业的调度方式。单击右侧"调度配置"页签，展开配置页面。当前支持单次调度、周期调度和事件驱动调度作业。
   图18配置作业的调度方式   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001141945946.png)
   
   
7. 调度配置完成后，您需要单击"保存"按钮保存作业并单击"提交"按钮提交作业版本。然后单击"执行调度"来启动作业的调度。
   图19保存并提交作业与执行调度   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001400862057.png "点击放大")
   
   
 
 #### 运维调度
您可以通过运维调度功能，查看作业以及作业实例的运行状态。
1. 在数据开发主界面的左侧导航栏，选择"运维调度 \> 作业监控"。
2. 单击"批作业监控"页签，进入批作业监控界面。
3. 批作业监控提供了对批处理作业的状态进行监控的能力。您可以查看批作业的调度状态、调度频率、调度开始时间等信息，勾选作业名称前的复选框，并进行"执行调度"/"停止调度"/"通知配置"，相应操作。
   图20批量处理作业   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001238768398.png "点击放大")
   
   
4. 单击左侧导航栏，选择"运维调度 \> 实例监控"，进入实例监控界面。
   在运维调度的"实例监控"页面，可以查看作业实例的运行详情以及运行日志等。
   图21实例监控   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001142042618.png "点击放大")
   
   
5. 作业运行成功后，您可以在DataArts Studio数据目录中查看汇总表的数据预览，具体操作请参见[步骤8：数据资产查看](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0010.html)。您也可以在数据开发的"脚本开发"页面新建一个Hive SQL脚本，执行以下命令查询结果，执行成功后返回类似如下的结果：
   ```
   SELECT * FROM demo_dm_db.dws_payment_type;
   ```
   图22查询结果   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001188082385.png "点击放大")
   
   
 
