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

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

相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
相关文章
|
2月前
|
存储 数据采集 搜索推荐
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
本篇文章探讨了 Java 大数据在智慧文旅景区中的创新应用,重点分析了如何通过数据采集、情感分析与可视化等技术,挖掘游客情感需求,进而优化景区服务。文章结合实际案例,展示了 Java 在数据处理与智能推荐等方面的强大能力,为文旅行业的智慧化升级提供了可行路径。
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
|
2月前
|
数据采集 SQL 搜索推荐
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
OneData是阿里巴巴内部实现数据整合与管理的方法体系与工具,旨在解决指标混乱、数据孤岛等问题。通过规范定义、模型设计与工具平台三层架构,实现数据标准化与高效开发,提升数据质量与应用效率。
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
|
3月前
|
数据采集 存储 大数据
大数据之路:阿里巴巴大数据实践——日志采集与数据同步
本资料全面介绍大数据处理技术架构,涵盖数据采集、同步、计算与服务全流程。内容包括Web/App端日志采集方案、数据同步工具DataX与TimeTunnel、离线与实时数仓架构、OneData方法论及元数据管理等核心内容,适用于构建企业级数据平台体系。
|
3月前
|
分布式计算 监控 大数据
大数据之路:阿里巴巴大数据实践——离线数据开发
该平台提供一站式大数据开发与治理服务,涵盖数据存储计算、任务调度、质量监控及安全管控。基于MaxCompute实现海量数据处理,结合D2与DataWorks进行任务开发与运维,通过SQLSCAN与DQC保障代码质量与数据准确性。任务调度系统支持定时、周期、手动运行等多种模式,确保高效稳定的数据生产流程。
大数据之路:阿里巴巴大数据实践——离线数据开发
|
3月前
|
数据采集 分布式计算 DataWorks
ODPS在某公共数据项目上的实践
本项目基于公共数据定义及ODPS与DataWorks技术,构建一体化智能化数据平台,涵盖数据目录、归集、治理、共享与开放六大目标。通过十大子系统实现全流程管理,强化数据安全与流通,提升业务效率与决策能力,助力数字化改革。
108 4
|
3月前
|
分布式计算 DataWorks 数据处理
在数据浪潮中前行:记录一次我与ODPS的实践、思考与展望
本文详细介绍了在 AI 时代背景下,如何利用阿里云 ODPS 平台(尤其是 MaxCompute)进行分布式多模态数据处理的实践过程。内容涵盖技术架构解析、完整操作流程、实际部署步骤以及未来发展方向,同时结合 CSDN 博文深入探讨了多模态数据处理的技术挑战与创新路径,为企业提供高效、低成本的大规模数据处理方案。
231 3
|
2月前
|
存储 SQL 分布式计算
大数据之路:阿里巴巴大数据实践——元数据与计算管理
本内容系统讲解了大数据体系中的元数据管理与计算优化。元数据部分涵盖技术、业务与管理元数据的分类及平台工具,并介绍血缘捕获、智能推荐与冷热分级等技术创新。元数据应用于数据标签、门户管理与建模分析。计算管理方面,深入探讨资源调度失衡、数据倾斜、小文件及长尾任务等问题,提出HBO与CBO优化策略及任务治理方案,全面提升资源利用率与任务执行效率。
|
3月前
|
机器学习/深度学习 存储 分布式计算
ODPS驱动电商仓储革命:动态需求预测系统的落地实践
本方案基于ODPS构建“预测-仿真-决策”闭环系统,解决传统仓储中滞销积压与爆款缺货问题。通过动态特征工程、时空融合模型与库存仿真引擎,实现库存周转天数下降42%,缺货率下降65%,年损减少5000万以上,显著提升运营效率与GMV。
271 1
|
3月前
|
数据采集 人工智能 大数据
10倍处理效率提升!阿里云大数据AI平台发布智能驾驶数据预处理解决方案
阿里云大数据AI平台推出智能驾驶数据预处理解决方案,助力车企构建高效稳定的数据处理流程。相比自建方案,数据包处理效率提升10倍以上,推理任务提速超1倍,产能翻番,显著提高自动驾驶模型产出效率。该方案已服务80%以上中国车企,支持多模态数据处理与百万级任务调度,全面赋能智驾技术落地。
279 0
|
16天前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)

热门文章

最新文章