用MaxCompute在数据里面挖呀挖呀挖,写花样的sql分析花样的数!云原生大数据计算服务 MaxCompute 是企业级Serverless智能数仓,向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。
本教程将指导开发者通过MaxCompute SQL分析,快速体验MaxCompute产品,完成开通、执行SQL语句查询数据。无需进行数据同步,可直接上手体验数据分析。
第一步:领取免费试用
新用户点击领取MaxCompute 免费试用资源,个人认证用户可领取包含500CU*H计算抵扣包,100GB存储抵扣包,企业认证用户可领取包含5000CU*H计算抵扣包,100GB存储抵扣包。
注:若您的按钮显示“无试用资格”,可能是以下原因导致:
1)您的账号需要完成个人实名认证或企业认证;
2)同一用户仅能对同一产品申请试用一次,建议检查下是否因为有同人注册账号已经参与过活动,导致对应账号无法试用;
3)历史未付费购买过该试用产品,如有过购买记录则无法再试用。
如您此前已购买开通过MaxCompute产品,无法领取免费试用,可开通MaxCompute按量付费闲时版来进行数据分析,同等作业类型的计算费用与按量付费标准版相比,至高可节省2/3,点此处开通及了解计费说明。
第二步:创建MaxCompute项目
进入MaxCompute控制台,左上角【可用区】选择华东2(上海),点击左侧导航栏【项目管理】,选择【新建项目】。
项目配置如下所示,注意项目名称有可能和其他人项目名称重复,如收到提示,请更换项目名称。
参数 |
说明 |
项目名称 |
自定义项目名称。本教程设置为jlcs。【扩展知识】:项目名称需全局唯一,如果界面提示您项目名称已存在,您可根据提示修改项目名称。 |
计算资源付费类型 |
本教程选择:按量付费。【注意】您通过免费试用选购的资源抵扣包仅可用于抵扣后付费资源消耗,本教程选择“按量付费”。 |
默认Quota |
用于实现计算资源分配。本教程选择:
|
单SQL消费限制 |
本教程不设置。本参数为单SQL消费的最高阈值。单位:扫描量(GB)*复杂度。非必填项,当选择按量付费计费类型时建议设置,可以避免非预期的单SQL消费过高。同时也建议配置实时消费监控告警,多方位监控限制消费超出预期,详情请参见消费监控告警 。 |
数据类型 |
MaxCompute数据类型包含1.0数据类型、2.0数据类型和Hive兼容类型。本教程选择:2.0数据类型。 |
是否加密 |
指定创建的MaxCompute项目是否需要开启数据加密功能。更多数据加密信息,请参见数据加密 。本教程选择:不加密。 |
第三步:连接公开数据集
MaxComputeSQL内置多个公开数据集,您可以通过MaxComputeSQL分析连接获取到公开数据集中的表,并查询这些表,以便快速试用MaxCompute。
此步骤现在不用在控制台操作,后续在写SQL会用到。
MaxCompute开放的公开数据集类别包括:
- Github公开事件数据
- 国家统计数据
- TPC性能测试数据
- 数字商业类数据
- 生活服务类数据
- 金融股票类数据
所有的数据均存储在MaxCompute产品的公开项目BIGDATA_PUBLIC_DATASET的不同Schema中。使用公开数据集操作详见文档。
第四步:SQL分析页面配置
- 在左侧导航栏单击工作区>SQL分析(Beta),进入SQL分析页面。
- 单击左侧放大镜上方图标,选择公共数据集DEMO中的样例文件或者自行在SQL代码编辑框输入SQL。
- 单击运行参数配置,配置如下参数:
- 项目:必选项,指定该SQL在哪个项目内执行,因此需要选择当前账号有create instance权限的项目。
- 计算配额:非必选,即实现作业级别指定Quota。如果要选择,则需要选择当前账号有对应usage权限的Quota;如果不选择,则SQL会在项目配置的默认计算Quota里执行。
- 单击运行,在结果页签查看运行结果并进行可视化分析。
第五步:开启SQL分析
以下提供了基于github公开数据集的Query样例及分析结果,欢迎各位开发者来进行数据分析,或者尝试基于MaxCompute内置的其他公开数据集自己写一些SQL,来实现自己想要的数据分析。
探索开源数据库
查看过去5年(2018~2022)最受欢迎的前十开源数据库项目
- Query样例:
SET odps.namespace.schema = TRUE; SELECT dws.repo_id AS repo_id, repos.name AS repo_name, SUM(dws.stars) AS stars FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws JOIN bigdata_public_dataset.github_events.db_repos repos ON dws.repo_id = repos.id WHERE MONTH >= '2018-01' AND MONTH <='2022-12' GROUP BY dws.repo_id, repos.name ORDER BY stars DESC LIMIT 10;
- 分析结果:过去5年开源数据库项目中elasticsearch最受欢迎,其次是redis和prometheus。
查看过去5年(2018~2022)受欢迎Top10开源数据库项目排行榜变化
- Query样例:
SET odps.namespace.schema = TRUE; SET odps.sql.validate.orderby.limit=FALSE; WITH tmp as (SELECT dws.repo_id AS repo_id, repos.name AS repo_name, SUM(dws.stars) AS stars, SUBSTR(MONTH,1,4) AS YEAR, row_number() over (partition BY SUBSTR(MONTH,1,4) ORDER BY SUM(dws.stars) DESC) AS ranknum FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws JOIN bigdata_public_dataset.github_events.db_repos repos ON dws.repo_id = repos.id WHERE MONTH>='2018-01' GROUP BY dws.repo_id, repos.name,SUBSTR(MONTH,1,4)) SELECT repo_id, repo_name, stars, ranknum, YEAR FROM tmp WHERE YEAR<=2022 AND ranknum<=10 ORDER BY YEAR ASC,ranknum ASC;
- 分析结果:在过去5年,各开源数据库在开发者心中Top10的地位此起彼伏,其中clickhouse是排名上升最快的项目,从2018年第十名迅速升至2021年的第一名,于2022年被稳步上升的redis超越。反观taosdata/TDengine在2019年排名第一,短短一年时间下降至第九名。
查看过去5年(2018~2022)最受欢迎的前十开源数据库项目获星按月成长趋势
- Query样例:
set odps.namespace.schema = true; set odps.sql.validate.orderby.limit=false; WITH top_10_repos AS ( SELECT dws.repo_id as repo_id, repos.name as repo_name, SUM(dws.stars) as stars FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws join bigdata_public_dataset.github_events.db_repos repos on dws.repo_id = repos.id where month >= '2018-01' AND MONTH <='2022-12' group by dws.repo_id, repos.name ORDER BY stars DESC LIMIT 10 ), tmp AS ( SELECT month, repo_id, stars, SUM(stars) OVER (partition by repo_id ORDER BY month ASC ) AS total_stars FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month where month >= '2015-01' and stars is not null and repo_id in (select repo_id from top_10_repos) group by repo_id,month,stars ORDER BY month ASC,repo_id) SELECT tmp.month as month, top_10_repos.repo_name as repo_name, tmp.total_stars as total_stars from tmp join top_10_repos ON top_10_repos.repo_id = tmp.repo_id group by month,repo_name,total_stars ORDER BY month ASC,repo_name ;
- 分析结果:Top10开源数据库项目中elasticsearch一直是最受欢迎的开源数据库,clickhouse自2021年增速较快。
哪些数据库在2023年上半年最受欢迎
- Query样例:
set odps.namespace.schema = true; SELECT repos.name AS repo_name, sum(dws.stars) AS stars FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws JOIN bigdata_public_dataset.github_events.db_repos repos ON repos.id = dws.repo_id WHERE month >= '2023-01' AND month <= '2023-06' GROUP BY repo_name ORDER BY stars DESC LIMIT 10;
- 分析结果:clickhouse数据库在2023年上半年最受欢迎,其次是prometheus和redis。
哪些数据库在2023年上半年保持活跃的维护与更新
- Query样例:
set odps.namespace.schema = true; SELECT repos.name AS repo_name, COUNT(dwd.id) AS num FROM bigdata_public_dataset.github_events.dwd_github_events_odps dwd JOIN bigdata_public_dataset.github_events.db_repos repos ON repos.id = dwd.repo_id WHERE type = 'PullRequestEvent' AND ds>='2023-01-01' and ds<='2023-06-30' AND action = 'opened' GROUP BY repos.name ORDER BY num DESC LIMIT 10;
- 分析结果:在2023上半年,StarRocks保持最活跃的维护与更新(定义开启PullRequest为项目活跃的表现)。
2023年上半年最活跃的开源数据库项目中主要的个人贡献者是谁
- Query样例:
SET odps.namespace.schema=true; WITH a AS ( SELECT repo_id ,repo_name ,actor_id ,actor_login ,COUNT(*) AS contribution ,ds FROM bigdata_public_dataset.github_events.dwd_github_events_odps WHERE ds >='2021-01-01' and ds<='2021-12-31' AND ( ( type = 'PullRequestEvent' AND action = 'opened' ) OR ( type = 'IssuesEvent' AND action = 'opened' ) OR ( type = 'IssueCommentEvent' AND action = 'created' ) OR ( type = 'PullRequestReviewEvent' AND action = 'created' ) OR ( type = 'PullRequestReviewCommentEvent' AND action = 'created' ) OR ( type = 'PushEvent' AND action IS NULL ) ) GROUP BY repo_id ,repo_name ,actor_id ,actor_login ,ds ) SELECT repo_name ,actor_login ,SUM(contribution) AS contribution FROM a WHERE repo_name = 'StarRocks/starrocks' AND actor_login NOT LIKE '%[bot]' AND actor_login NOT LIKE 'cockroach%' GROUP BY repo_name ,actor_login ORDER BY contribution DESC LIMIT 10 ;
- 分析结果:在2023年上半年,最活跃的开源数据库项目中主要的个人贡献者是kangkaisen。
探索编程语言
统计过去一年使用最多的十个编程语言
- Query样例:
SET odps.namespace.schema=true; SELECT language, count(*) total FROM bigdata_public_dataset.github_events.dwd_github_events_odps WHERE ds>=date_add(getdate(), -365) AND language IS NOT NULL GROUP BY language ORDER BY total DESC LIMIT 10;
- 分析结果:使用最多的编程语言是JavaScript,其次是TypeScript和Python等语言。
查看过去5年(2018~2022)最受欢迎的十个编程语言项目
- Query样例:
SET odps.namespace.schema = TRUE; SELECT dws.repo_id AS repo_id, repos.name AS repo_name, SUM(dws.stars) AS stars FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws JOIN bigdata_public_dataset.github_events.programming_language_repos repos ON dws.repo_id = repos.id WHERE MONTH >= '2015-01' GROUP BY dws.repo_id, repos.name ORDER BY stars DESC LIMIT 10;
- 分析结果:过去五年最受欢迎的编程语言是Go,收获了81,642颗星,其次是TypeScript和Node等语言。
查看过去5年(2018~2022)最受欢迎的十个编程语言项目获星按月成长趋势
- Query样例:
set odps.namespace.schema = true; set odps.sql.validate.orderby.limit=false; WITH top_10_repos AS ( SELECT dws.repo_id as repo_id, repos.name as repo_name, SUM(dws.stars) as stars FROM bigdata_public_dataset.github_events.dws_overview_by_repo_by_month dws join bigdata_public_dataset.github_events.programming_language_repos repos on dws.repo_id = repos.id where month >= '2018-01' and month <='2022-12' group by dws.repo_id, repos.name ORDER BY stars DESC LIMIT 10 ), tmp AS ( SELECT month, repo_id, stars, SUM(stars) OVER (partition by repo_id ORDER BY month ASC ) AS total_stars FROM bigdata_public_dataset.github_events.dws_overview_by_repo_by_month where month >= '2015-01' and stars is not null and repo_id in (select repo_id from top_10_repos) group by repo_id,month,stars ORDER BY month ASC,repo_id) SELECT tmp.month as month, top_10_repos.repo_name as repo_name, tmp.total_stars as total_stars from tmp join top_10_repos ON top_10_repos.repo_id = tmp.repo_id group by month,repo_name,total_stars ORDER BY month ASC,repo_name ;
- 分析结果:在过去5年,Go是受欢迎程度增长最快的编程语言。
第六步 资源释放
完成教程后,如果后续您不再使用MaxCompute的话,请及时将MaxCompute资源释放(删除项目),避免不必要的费用产生。
欢迎通过申请链接搜索(钉钉群号:11782920)加入MaxCompute开发者社区钉群与我们沟通交流。
如果您有兴趣,还可以体验更多数据分析可视化相关教程:【使用Hologres实时同步分析Github公开数据集】、【使用DataWorks公共数据集完成可视化增强分析】。