基于DataWorks+MaxCompute的公共电影票房数据预处理实践

本文涉及的产品
大数据开发治理平台DataWorks,Serverless资源组抵扣包300CU*H
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本次实验对春节档每日票房的数据进行预处理,主要是数据清洗(例如空值过滤,条件筛选),数据转换(例如含有相同属性的两条数据合并为一条数据)。通过本次实验让大家掌握阿里云大数据产品DataWorks及MaxCompute的基本使用。

实验内容:

对MaxCompute数仓公共数据进行预处理,主要对maxcompute_public_data.dwd_product_movie_basic_info(电影基本信息,包含影片名、导演、编剧、主演、影片类型等基础信息)表和maxcompute_public_data.ods_product_movie_box(电影票房基本信息,包含影片名、当日票房、累计票房等信息)进行操作,为后期数据分析做准备工作。

实现思路:
(1)登录DataWorks选择公共数据集
(2)对票房数据进行数据清洗
(3)对票房数据进行数据转换
(4)保存查询后的结果数据

实验步骤:

1.搜索框搜索Dataworks,进入DataWork后,我们需要选择Region区域为【华东2(上海)】(说明:地域请根据实际情况选择,如果不在对应地域的话无法查看到项目列表)

image.png

image.png

2.如图点击【SQL查询】菜单。

image.png

进入到如下页面:

image.png

如图点击image.png图标添加公共数据集

在列表中找到公共数据集,点击【添加】

在左侧会出现【公共数据】代表添加公共数据集成功。

image.png

image.png

下面使用两条SQL语句来体验查询公共数据集里的数据,分别查询2020年手机号归属地基本信息以及查看北京市各运营商的手机号段数量。

如图点击【+】调出SQL编辑器。

image.png

在编辑器里输入如下SQL语句:

SELECT * 
FROM maxcompute_public_data.dwd_product_phoneno_basic_info_2020
LIMIT 200
;

image.png

在执行SQL前需要先授权,否则无法执行。

如图点击image.png图标进行授权。

image.png

image.png

在【成本预估】弹窗点击【运行】按钮

image.png

在下方的【结果】选项卡里出现对应的查询结果

image.png

复制下列语句进行搜索:

SELECT isp AS  "运营商"
, COUNT(phoneno) AS "手机号段数量"
FROM maxcompute_public_data.dwd_product_phoneno_basic_info_2020
WHERE city = "北京"
GROUP BY isp
ORDER BY "手机号段数量" DESC
LIMIT 200
;

image.png

3.公共电影票房数据集解读。

在maxcomput公共数据里出现含有movie的数据表,dwd_product_movie_basic_info和ods_product_movie_box为本次实验所需要查询的数据表。

切换至数据开发下。

image.png

点击【临时查询】,新建ODPS SQL为movie。

image.png

image.png

image.png

数据表maxcompute_public_data.dwd_product_movie_basic_info。执行如下语句,可查看dwd_product_movie_basic_info表结构。

SHOW CREATE TABLE maxcompute_public_data.dwd_product_movie_basic_info;

电影基本信息,包含影片名、导演、编剧、主演、影片类型等基础信息。

image.png

数据表maxcompute_public_data.ods_product_movie_box。

SHOW CREATE TABLE maxcompute_public_data.ods_product_movie_box;

电影票房基本信息,包含影片名、当日票房、累计票房等信息。

image.png

4.数据清洗。

执行如下语句,点击的运行图标。

SELECT movie_name -- 电影名称
    ,director -- 导演
    ,scriptwriter -- 编剧
    ,area -- 制片地区/国家
    ,actors -- 主演
    ,type -- 类型
    ,movie_length -- 电影长度
    ,movie_date -- 上映日期
    ,movie_language -- 语言
    ,imdb_url -- imdb号
    ,ds
FROM maxcompute_public_data.dwd_product_movie_basic_info
WHERE ds = MAX_PT('maxcompute_public_data.dwd_product_movie_basic_info')
LIMIT  200;

image.png

运行结果如下。

image.png

对maxcompute_public_data.dwd_product_movie_basic_info表进行数据清洗处理,去除没有制片地区/国家的数据。

选中maxcompute_public_data.dwd_product_movie_basic_info表,修改SQL语句,增加筛选条件去除没有制片地区/国家的数据。(area != ‘’ 代表area字段下面的值不允许是空值)

SELECT movie_name -- 电影名称
  ,director -- 导演
  ,scriptwriter -- 编剧
  ,area -- 制片地区/国家
  ,actors -- 主演
  ,type -- 类型
  ,movie_length -- 电影长度
  ,movie_date -- 上映日期
  ,movie_language -- 语言
  ,imdb_url -- imdb号
  ,ds
FROM maxcompute_public_data.dwd_product_movie_basic_info
WHERE ds = MAX_PT('maxcompute_public_data.dwd_product_movie_basic_info')
AND area != ''
LIMIT 200;

查询动作片的票房数据。

从票房数据里筛选出前200条动作片的数据。

修改SQL语句如下:(area!=’’代表area字段不为空的数据,并列条件 AND type = ‘动作’代表查询类型为动作的数据,同样返回前200条数据)

SELECT movie_name -- 电影名称
  ,director -- 导演
  ,scriptwriter -- 编剧
  ,area -- 制片地区/国家
  ,actors -- 主演
  ,type -- 类型
  ,movie_length -- 电影长度
  ,movie_date  -- 上映日期
  ,movie_language -- 语言
  ,imdb_url -- imdb号
  ,ds
FROM maxcompute_public_data.dwd_product_movie_basic_info
WHERE ds = MAX_PT('maxcompute_public_data.dwd_product_movie_basic_info')
AND area != ''
AND type = '动作'
LIMIT 200;

image.png

5.数据转换。

公共数据集中描述电影票房的表一共有2个,dwd_product_movie_basic_info里的movie_name和ods_product_movie_box里的moviename都保存的是电影名称信息,我们可以对两张表的数据进行数据转换,将相同电影名称的两条数据合并转换为一条数据。

修改SQL语句,代码如下:

WITH
  a as(SELECT ds,moviename,sumboxoffice,DENSE_RANK() OVER (PARTITION BY ds ORDER BY CAST(sumboxoffice AS DOUBLE) DESC) AS srank,boxoffice,irank FROM maxcompute_public_data.ods_product_movie_box WHERE ds>='20170128' AND ds<='20170203' )
  ,b as (SELECT movie_name,director,type ,area, actors,movie_language ,ROW_NUMBER() OVER (PARTITION BY movie_name ORDER BY TYPE DESC) AS nums FROM maxcompute_public_data.dwd_product_movie_basic_info WHERE ds>='20170128' AND ds<='20170203' )
  ,c as (SELECT b.movie_name,b.director,b.type ,b.area, b.actors,b.movie_language FROM b WHERE b.nums=1)
  SELECT  a.ds AS 放映日期
  ,a.moviename AS 影片名
  ,a.irank AS 当日票房排名
  ,a.boxoffice AS 当日票房万
  ,a.srank AS 总票房排名
  ,a.sumboxoffice AS 总票房万
  ,c.director AS 导演
  ,c.type AS 电影类型
  ,c.area AS 制片地区
  ,c.actors AS 主演
  ,c.movie_language AS 影片时长
FROM a
LEFT JOIN c
ON a.moviename = c.movie_name;

上述语句主要用了SQL的WITH AS 和JOIN语法。

  • WITH AS是SQL子查询的一种语法,支持创建不同的临时表。
  • JOIN语法的作用是合并表,有LEFT JOIN(左连接),RIGHT JOIN(右连接), INNER JOIN(内链接)
  • ON一般配合JOIN使用,代替WHERE的功能,定义查询条件。

如代码所示,使用WITH AS 创建了a,b,c三个临时表,同时对三个表进行做链接,合并的条件是两个表的电影名称一致。

选中SQL语句,点击【运行】图标按钮。

image.png

实验总结:

本次实验主要对MaxCompute公共数据集电影票房数据进行数据预处理,实现通过SQL对数据进行数据清洗(条件筛选和空值处理)及数据转换(将具有相同属性的两条数据合并为一条数据),然后保存,方便后期对数据进行分析处理。

数据清洗主要依赖SQL进行驱动,实验中使用了基本的SELECT语法、WITH AS语法、JOIN语法,对SQL技能也会有所提升。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标 &nbsp;通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群 &nbsp;企业数据仓库开发人员 &nbsp;大数据平台开发人员 &nbsp;数据分析师 &nbsp;大数据运维人员 &nbsp;对于大数据平台、数据中台产品感兴趣的开发者
相关文章
|
2月前
|
SQL 分布式计算 运维
如何对付一个耗时6h+的ODPS任务:慢节点优化实践
本文描述了大数据处理任务(特别是涉及大量JOIN操作的任务)中遇到的性能瓶颈问题及其优化过程。
|
1月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
61 4
|
3月前
|
DataWorks Kubernetes 大数据
飞天大数据平台产品问题之DataWorks提供的商业化服务如何解决
飞天大数据平台产品问题之DataWorks提供的商业化服务如何解决
|
24天前
|
边缘计算 人工智能 搜索推荐
大数据与零售业:精准营销的实践
【10月更文挑战第31天】在信息化社会,大数据技术正成为推动零售业革新的重要驱动力。本文探讨了大数据在零售业中的应用,包括客户细分、个性化推荐、动态定价、营销自动化、预测性分析、忠诚度管理和社交网络洞察等方面,通过实际案例展示了大数据如何帮助商家洞悉消费者行为,优化决策,实现精准营销。同时,文章也讨论了大数据面临的挑战和未来展望。
|
1月前
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
80 0
|
1月前
|
SQL 大数据
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
59 0
|
1月前
|
SQL 消息中间件 分布式计算
大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现
大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现
47 0
|
3月前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
3月前
|
人工智能 分布式计算 架构师
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
|
3月前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之ODPS数据怎么Merge到MySQL数据库
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。

热门文章

最新文章

  • 1
    DataWorks操作报错合集之DataWorks任务异常 报错: GET_GROUP_SLOT_EXCEPTION 该怎么处理
    109
  • 2
    DataWorks操作报错合集之DataWorksUDF 报错:evaluate for user defined function xxx cannot be loaded from any resources,该怎么处理
    107
  • 3
    DataWorks操作报错合集之在DataWorks中,任务流在调度时间到达时停止运行,是什么原因导致的
    106
  • 4
    DataWorks操作报错合集之DataWorks ODPS数据同步后,timesramp遇到时区问题,解决方法是什么
    92
  • 5
    DataWorks操作报错合集之DataWorks配置参数在开发环境进行调度,参数解析不出来,收到了 "Table does not exist" 的错误,该怎么处理
    92
  • 6
    DataWorks操作报错合集之DataWorks中udf开发完后,本地和在MaxCompute的工作区可以执行函数查询,但是在datawork里报错FAILED: ODPS-0130071:[2,5],是什么原因
    103
  • 7
    DataWorks操作报错合集之DataWorks提交失败: 提交节点的源码内容到TSP(代码库)失败:"skynet_packageid is null,该怎么解决
    115
  • 8
    DataWorks操作报错合集之DataWorks在同步mysql时报错Code:[Framework-02],mysql里面有个json类型字段,是什么原因导致的
    151
  • 9
    DataWorks操作报错合集之DataWorks集成实例绑定到同一个vpc下面,也添加了RDS的IP白名单报错:数据源配置有误,请检查,该怎么处理
    88
  • 10
    DataWorks操作报错合集之在 DataWorks 中运行了一个 Hologres 表的任务并完成了执行,但是在 Hologres 表中没有看到数据,该怎么解决
    124
  • 下一篇
    无影云桌面