# 步骤3：数据开发处理
在影视数据分析业务中，运营人员通常需要定期掌握热门电影排行及用户活跃度情况。然而，面对海量且持续更新的原始数据，手动统计不仅耗时费力，还难以保证时效性与准确性。本步骤通过处理电影信息和评分信息的原始数据，分析出评分最高的Top10电影和最活跃的Top10电影，并通过配置作业定期调度执行，将结果每日导出到表中，以高效支撑后续的信息分析。
#### 脚本开发
创建DWS SQL脚本top_rating_movie，用于存储评分最高的Top10电影。
创建DWS SQL脚本top_active_movie，用于存储最活跃的Top10电影。
- [创建DWS SQL脚本top_rating_movie]
  
  评分最高Top10电影的计算方法是：先计算出每部电影的总评分和参与评分的用户数，过滤掉参与评分的用户数小于3的记录，返回电影名称、平均评分和参与评分用户数。
  1. [登录DataArts Studio管理控制台](https://console.huaweicloud.com/dayu/)。
     
     详情请参考[访问DataArts Studio实例控制台](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0001.html)。
     
     
  
  2. 在DataArts Studio控制台首页，选择对应工作空间的"数据开发"模块，进入数据开发页面。
  
  3. 创建一个DWS SQL脚本，以通过DWS SQL语句来创建数据表。
     
     图1新建脚本   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001207358442.png "点击放大")
     
     
  
  4. 在新建脚本弹出的SQL编辑器中，填写关键参数。 
     表1关键参数 
     | 参数    | 说明                                                                                                                                    |
     |:---|:---|
     | 数据连接  | [步骤5](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0032.html#dataartsstudio_04_0032__li6594811184817)中创建的DWS数据连接。 |
     | 数据库 | [步骤7](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0032.html#dataartsstudio_04_0032__li646420431311)中创建的数据库。   |
        
     图2关键参数   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000002723310670.png "点击放大")
     
     输入如下SQL语句，单击"运行"，从movies_item和ratings_item表中计算出评分最高的Top10电影，将结果存放到top_rating_movie表。
     ```
     SET
         SEARCH_PATH TO dgc;
     insert
         overwrite into top_rating_movie
     select
         a.movieTitle,
         b.ratings / b.rating_user_number as avg_rating,
         b.rating_user_number
     from
         movies_item a,
         (
             select
                 movieId,
                 sum(rating) ratings,
                 count(1) as rating_user_number
             from
                 ratings_item
             group by
                 movieId
         ) b
     where
         rating_user_number > 3
         and a.movieId = b.movieId
     order by
         avg_rating desc
     limit
         10
     ```
     图3脚本（top_rating_movie）   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001481066890.png "点击放大")
     
     
     
  
  5. 脚本调试无误后，单击"保存并提交版本"提交该脚本，脚本名称为"top_rating_movie"。后续[开发并调度作业]引用该脚本。
  
  6. 脚本保存完成且运行成功后，可以参考[步骤3]新建DWS SQL脚本，执行如下SQL语句查看top_rating_movie表数据。您还可以参考[图4]，下载或转储表数据。
     
     ```
     SET SEARCH_PATH TO dgc;
     SELECT * FROM top_rating_movie
     ```
     图4查看top_rating_movie表数据   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000002556500877.png "点击放大")
     
     
   
- [创建DWS SQL脚本top_active_movie]
  
  最活跃Top10电影的计算方法是：平均评分大于3.5的电影中用户评分数最多的10部电影。
  1. [登录DataArts Studio管理控制台](https://console.huaweicloud.com/dayu/)。
     
     详情请参考[访问DataArts Studio实例控制台](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0001.html)。
     
     
  
  2. 在DataArts Studio控制台首页，选择对应工作空间的"数据开发"模块，进入数据开发页面。
  
  3. 创建一个DWS SQL脚本，以通过DWS SQL语句来创建数据表。
     
     图5新建脚本   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001207358442.png "点击放大")
     
     
  
  4. 在新建脚本弹出的SQL编辑器中，填写关键参数。 
     表2关键参数 
     | 参数    | 说明                                                                                                                                    |
     |:---|:---|
     | 数据连接  | [步骤5](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0032.html#dataartsstudio_04_0032__li6594811184817)中创建的DWS数据连接。 |
     | 数据库 | [步骤7](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0032.html#dataartsstudio_04_0032__li646420431311)中创建的数据库。   |
        
     图6关键参数   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000002752910361.png "点击放大")
     
     输入如下SQL语句，单击"运行"，从movies_item和ratings_item表中计算出最活跃的Top10电影，将结果存放到top_active_movie表。
     ```
     SET
         SEARCH_PATH TO dgc;
     insert
         overwrite into top_active_movie
     select
         *
     from
         (
             select
                 a.movieTitle,
                 b.ratingSum / b.rating_user_number as avg_rating,
                 b.rating_user_number
             from
                 movies_item a,
                 (
                     select
                         movieId,
                         sum(rating) ratingSum,
                         count(1) as rating_user_number
                     from
                         ratings_item
                     group by
                         movieId
                 ) b
             where
                 a.movieId = b.movieId
         ) t
     where
         t.avg_rating > 3.5
     order by
         rating_user_number desc
     limit
         10
     ```
     图7脚本（top_active_movie）   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001207544780.png "点击放大")
     
     
  
  5. 脚本调试无误后，单击"保存并提交版本"提交该脚本，脚本名称为"top_active_movie"。后续[开发并调度作业]引用该脚本。
  
  6. 脚本保存完成且运行成功后，可以参考[步骤3]新建DWS SQL脚本，执行如下SQL语句查看top_active_movie表数据。您还可以参考[图8]，下载或转储表数据。
     
     ```
     SET SEARCH_PATH TO dgc;
     SELECT * FROM top_active_movie
     ```
     图8查看top_active_movie表数据   
     ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000002556348601.png "点击放大")
     
     
   
 #### 开发并调度作业
假设OBS中"movie"和"rating"表是每日更新的，我们希望每天更新Top10电影，那么这里可以使用数据开发的作业编排和作业调度功能。
1. [登录DataArts Studio管理控制台](https://console.huaweicloud.com/dayu/)。
   
   详情请参考[访问DataArts Studio实例控制台](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0001.html)。
   
   
2. 在DataArts Studio控制台首页，选择对应工作空间的"数据开发"模块，进入数据开发页面。
3. 创建一个批处理作业，作业名称为"topmovie"。 
   图9新建作业   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001207667720.png "点击放大")
   图10配置作业   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001896570584.png "点击放大")
   
   
   
4. 在作业开发页面，拖动2个CDM Job节点、3个Dummy节点和2个DWS SQL节点到画布中，选中连线图标![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001225550107.png)并拖动，编排[图11]所示的作业。
   
   图11连接和配置节点属性   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001354587709.png "点击放大")
   表3关键节点 
   | 关键节点                        | 说明                                                                                                                                    |
   |:---|:---|
   | Begin（Dummy节点）               | 不执行任何操作，只作为起始点的标识。                                                                                                                     |
   | movies_obs2dws（CDM Job节点）   | 在节点属性中，选择[步骤2：数据集成](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0033.html)中的CDM集群，并关联CDM作业"movies_obs2dws"。      |
   | ratings_obs2dws（CDM Job节点）  | 在节点属性中，选择[步骤2：数据集成](https://support.huaweicloud.com/qs-dataartsstudio/dataartsstudio_04_0033.html)中的CDM集群，并关联CDM作业"ratings_obs2dws"。 |
   | Waiting（Dummy节点）            | 不执行任何操作，作为等待前侧节点执行结束的标识。                                                                                                              |
   | top_rating_movie（DWS SQL节点） | 在节点属性中，关联[创建DWS SQL脚本top_rating_movie]中开发完成的DWS SQL脚本"top_rating_movie"。                  |
   | top_active_movie（DWS SQL节点）  | 在节点属性中，关联[创建DWS SQL脚本top_active_movie]中开发完成的DWS SQL脚本"top_active_movie"。                 |
   | Finish（Dummy节点）             | 不执行任何操作，只作为结束点的标识。                                                                                                                      |
      
   
   
5. 作业编排完成后，单击![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001252708625.png)，测试运行作业。
6. 如果作业运行正常，单击"调度配置"，配置作业的调度策略。 
   图12调度配置   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001301948478.png "点击放大")
   表4调度配置参数 
   | 参数       | 说明                                                       |
   |:---|:---|
   | 调度方式  | 本示例中选择"周期调度"。                                              |
   | 调度属性   | 请根据业务需要配置作业的生效时间范围（如2022/02/09至2022/02/28），每天1点00分执行一次作业。 |
   | 依赖属性 | 可以配置为依赖其他作业运行，本例不涉及，无需配置。                                |
   | 跨周期依赖   | 可以选择配置为自依赖或者不依赖上一周期，此处配置为不依赖上一周期即可。                     |
      
   
   
7. 最后保存并提交版本（单击![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001252348667.png)），执行调度作业（单击![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001207548712.png)）。实现作业每天自动运行，Top10电影的结果自动保存到"top_active_movie"和"top_rating_movie"表。
8. 您如果需要及时了解作业的执行结果是成功还是失败，可以通过数据开发的运维调度界面进行查看，如[图13]所示。
   
   图13查看作业执行情况   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000001207386168.png "点击放大")
   
   
 
数据开发还支持配置通知管理，可以选择配置当作业运行异常/失败后，通过短信、邮件、控制台等多种方式提醒，此处不再展开描述。
至此，基于电影评分的数据集成与开发流程示例完成。此外，您还可以根据原始数据，分析不同类型电影的评分、浏览情况等，为营销决策、广告推荐、用户行为预测等提供高质量的信息。
