一、实验概述

大数据计算服务(MaxCompute,原名 ODPS)是一种快速、完全托管的 GB/TB/PB 级数据仓库解决方案。MaxCompute 向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。
本实验结合实际数据和案例,深入浅出的演示了如何使用MaxCompute的内置函数。

二、实验目标

本实验通过客户端方式进行实验,掌握MaxCompute的内置函数的使用技巧,以及相关注意事项。

完成此实验后,可以掌握的内置函数有:

  1. 数值类函数;2. 字符串类函数;3. 日期类函数;4. 窗口函数;5. 聚合函数;6. 其他函数;

三、学习建议

  1. 掌握MaxCompute的内置函数的使用技巧以及相关命令的基础操作;2. 提前安装 ODPS客户端(下载客户端软件)。

第 1 章:实验简介

1.1 实验简介

一、实验概述

大数据计算服务(MaxCompute,原名 ODPS)是一种快速、完全托管的 GB/TB/PB 级数据仓库解决方案。MaxCompute 向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。

本实验结合实际数据和案例,深入浅出的演示了如何使用MaxCompute的内置函数。

二、实验目标:

本实验通过客户端方式进行实验,掌握MaxCompute的内置函数的使用技巧,以及相关注意事项。

完成此实验后,可以掌握的内置函数有:

  1. 数值类函数;2. 字符串类函数;3. 日期类函数;4. 窗口函数;5. 聚合函数;6. 其他函数;

三、学习建议:

  1. 掌握MaxCompute的内置函数的使用技巧以及相关命令的基础操作;2. 提前安装 ODPS客户端(下载客户端软件)。

第 2 章:实验准备

2.1 申请MaxCompute资源

在弹出的左侧栏中,点击 创建资源 按钮,开始创建实验资源。
资源创建过程需要1-3分钟。完成实验资源的创建后,用户可以通过 实验资源 查看实验中所需的资源信息,例如:阿里云账号等。

2.2 进入实验环境

1 、申请MaxCompute资源
登录云中沙箱,在实验目录中查询所需实验,进入实验,点击“实验资源”,查看所需具体资源

点击“创建资源”,即可进入实验环境。(由于实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建)
创建资源需要几分钟时间,请耐心等候……
企业别名:即主账号ID;

子用户名称和子用户密码:登录实验环境以及配置MaxCompute 数据源时需要;

AK ID和AK Secret:系统为本用户分配的登录验证密钥信息,在配置客户端及数据源时应用;

控制台url:登录实验环境的地址;
2 、进入实验环境
步骤一:登录管理控制台

资源开通后,点击左侧菜单栏中“控制台url”链接,进入用户登录页面。
输入资源提供的“子用户名称”和“子用户密码”登录。
登陆成功后,进入管理控制台页面:
步骤二:打开“DataWorks”

展开左侧菜单,点击“产品与服务”,在“大数据(数加)”产品列表中,点击“DataWorks”。
步骤三:创建项目

创建项目需要管理员权限,沙箱实验环境默认创建完项目:
步骤四:进入数据开发

选中项目,点击“进入数据开发”,则进入“数据开发”环境。
数据开发界面如下:

2.3 配置odpscmd客户端

步骤1:客户端介质下载 (本实验在附件中提供)

步骤2:解压odpscmd_public.zip 到本目录,如:解压至本地目录 F:\ODPS_DEMO

步骤3:查看本次实验课用到的介质,可以看到如下的文件夹:

bin/ conf/ lib/ plugins/

步骤4:在conf文件夹中有odps_config.ini文件。编辑此文件,填写相关信息:
project_name=<项目名称>

access_id=< AK ID>

access_key=

end_point=http://service.odps.aliyun.com/api (默认)

tunnel_endpoint=http://dt.odps.aliyun.com (默认)

log_view_host=http://logview.odps.aliyun.com (默认)

https_check=true (默认)

步骤5:修改好配置文件后运行bin目录下的odpscmd(在Linux系统下是./bin/odpscmd,Windows下运行./bin/odpscmd.bat),现在可以运行 MaxCompute 命令,如:

注意:项目可以随时根据情况切换,上图表示环境设置成功.

2.4 测试表dual准备

1、展开左侧菜单,点击“临时查询”,然后点击新建“ODPS SQL”。

2、在弹出对话框中,输入“节点名称”,选择“目标文件夹”,点击“提交”。

进入脚本编辑页面,进行脚本开发,创建实验测试表dual,点击运行

CREATE TABLE dual (id BIGINT) LIFECYCLE 10000;


测试表创建成功

往测试表里插入一条数据,输入sql, 选中后点击“运行”。

insertinto table dual select count(1) fromdual;

查看测试表数据内容,输入sql, 选中后点击“运行”。

select * from dual limit 10;

2.5 测试表t_dml准备

进入脚本编辑页面,进行脚本开发,创建实验测试表t_dml,点击运行。

CREATE TABLE t_dml(detail_id BIGINT,sale_date datetime,province STRING,city STRING,product_id BIGINT,cnt BIGINT,amt DOUBL);

进入odpscmd交互界面
加载数据 t_dml.csv:

tunnel upload f:\data\t_dml.csv t_dml;

查看数据表数据

select* from t_dml limit 10;

2.6 测试表t_product准备

进入脚本编辑页面,进行脚本开发,创建实验测试表t_product,点击运行。

CREATE TABLE t_product (product_id BIGINT,product_name STRING,category_id BIGINT,category_name STRING,price DOUBLE);

进入odpscmd交互界面
加载数据 t_product.csv:

tunnel upload f:\data\t_product.csv t_product;

查看数据表数据

select* from t_product limit 10;

2.7 测试表t_sign准备

进入脚本编辑页面,进行脚本开发,创建实验测试表t_sign,点击运行

CREATE TABLE t_sign (id BIGINT,name STRING,height DOUBLE,is_female BOOLEAN,birth_day datetime);

进入odpscmd交互界面
加载数据 t_sign.csv:

tunnel upload f:\data\t_sign.csv t_sign;


查看数据表数据

select* from t_sign limit 10;

第 2 章:实验详情

2.1 数值类函数

(1) 三角函数类

已知三角形两边长度为10,20,夹角为60度,求三角形面积

select 0.51020sin(60/1803.1415926) from dual;

输入sql脚本,点击【运行】,查看结果

(2) 数字整形类:

对数字进行加工处理,请分别显示数字 3.1415926 的向上取整值、向下取整值、四舍五入保留3位小数的值、截掉小数位的值以及用二进制来表示该值。

Select ceil(3.1415926),

floor(3.1415926),

round(3.1415926,3),

trunc(3.1415926),

conv(‘3.1415926’,10,2)

from dual;

输入脚本,点击【运行】,查看结果

(3) 随机函数类:

select rand() from dual;

select rand(detail_id),rand() from t_dml limit 10;

输入sql脚本,点击【运行】,查看结果

(4) 综合使用使用蒙特卡洛法求π值的近似值:产生一系列的成对的随机数,根据每队随机数到点(0.5,0.5)的距离可判断该点是否在单位圆内,计算落在圆内的点占所有点的比例,即可得到π值的近似值:// 产生约10万对随机点进行近似值计算:select (inCircle/totalCnt)/pow(0.5,2) as PI from (select count(*) as totalCnt,sum(case when sqrt(pow((x-0.5),2)+pow((y-0.5),2)) <0.5 then 1 else 0 end) inCirclefrom (select /*+mapjoin(t2)*/ rand() as x,rand() as yfrom (select * from t_dml limit 10000) t1left outer join (select * from t_dml limit 10) t2on t1.detail_id <> t2.detail_id) tt) t;// 产生约100万对随机点进行近似值计算:select (inCircle/totalCnt)/pow(0.5,2) as PIfrom (select count(*) as totalCnt,sum(case when sqrt(pow((x-0.5),2)+pow((y-0.5),2)) <0.5 then 1 else 0 end) inCirclefrom (select /*+mapjoin(t2)*/ rand() as x,rand() as yfrom (select * from t_dml limit 10000) t1left outer join (select * from t_dml limit 100) t2on t1.detail_id <> t2.detail_id) tt) t;

输入脚本,点击【运行】,查看结果:

输入脚本,点击【运行】,查看结果:

2.2 字符串类函数

(1) 长度类:

输入脚本,点击【运行】,查看结果

select province,length(province),lengthb(province) from t_dml limit 10;


(2) 查找类:

目前销售记录中,哪些省、市名字比较接近?

select province, city, char_matchcount(province, city) as sim

 from (select distinct province, cityfrom t_dml) t

order by sim desc

limit 10;

输入脚本,点击【运行】,查看结果

目前销售记录中,省份的第一个字在城市名中是否出现?有没有出现多次的?

select province, city,

instr(city,substr(province,1,3),1,1) as FirstPos,

case when instr(city,substr(province,1,3),1,2) = 0 then ‘No’

else ‘Yes’

end as SecondPos

 from (select distinct province, cityfrom t_dml) t

order by SecondPos desc, FirstPos desc

limit 10;

输入脚本,点击【运行】,查看结果

(3) 转换类:

要把数据从一个编码为 utf8 的库导入到一个字符集为 gb2132 的库中,其中有些繁体字,如“阿裏雲”等字样,请问会出现乱码的情况吗?

select is_encoding(‘阿裏雲’, ‘utf-8’, ‘gb2312’) from dual;

输入脚本,点击【运行】,查看结果

(4) 整形类:

select concat(province, ‘|’,city) from t_dml limit 10;

 select category_name, tolower(split_part(category_name,' ',2))

from t_product;

输入脚本,点击【运行】,查看结果

输入脚本,点击【运行】,查看结果

2.3 日期类函数

(1) 日期获取:

//根据日期,截取部分信息

select dt,

datepart(dt, ‘yyyy’) as year,

             datepart(dt, 'mm') as month,datepart(dt, 'dd') as day,datepart(dt, 'hh') as hour,datepart(dt, 'mi') as minute,

datepart(dt, ‘ss’) as second

from (select getdate() dt from dual) t;

输入脚本,点击【运行】,查看结果

// 日期截取

select datetrunc(‘2015-01-31 02:30:45’, ‘dd’) from dual;

输入脚本,点击【运行】,查看结果

// 获得具体日期

select getdate(),lastday(getdate()),weekday(getdate()),weekofyear(getdate())

 from dual;

输入脚本,点击【运行】,查看结果

(2) 日期转换:

//字符串转成日期, 日期转换成字符串

select to_date(‘20150131’,‘yyyymmdd’),

to_char(‘2015-01-31 00:00:00’, ‘日期:yyyymmdd’)

from dual;

输入脚本,点击【运行】,查看结果

// Unix时间和ODPS时间互转

select from_unixtime(1), unix_timestamp(‘2015-10-01 00:00:00’) from dual;

输入脚本,点击【运行】,查看结果

// 判断字符串是否满足预定义的日期格式

select sale_date, isdate(sale_date, ‘yyyymmdd’) from t_dml limit 10;

输入脚本,点击【运行】,查看结果

(3) 日期运算:

统计5月1日从产品5第一次成交后一小时三十分钟内(含),产品5销量(含第一次成交)占同期总销量的比例:

select /+mapjoin(t2)/

sum(case when product_id=5 then cnt else 0 end)/sum(cnt)

 from t_dml t1join (select min(sale_date) as begin_dt,dateadd(dateadd(min(sale_date),1,'hh'),30, 'mi') as end_dtfrom t_dmlwhere product_id=5and datetrunc(sale_date,'dd')='2015-05-01 00:00:00')t2on t1.sale_date >= t2.begin_dtand t1.sale_date <= t2.end_dt;

输入脚本,点击【运行】,查看结果

日期相减:

select max(sale_date), min(sale_date),

datediff(max(sale_date),min(sale_date),‘dd’)

from t_dml;

输入脚本,点击【运行】,查看结果

第 3 章:实验总结

3.1 实验总结

MaxCompute的这几类函数基本覆盖了我们日常工作的绝大多数数据处理需求,通过灵活熟练的使用这些函数,

可以提升开发效率,若仍有无法满足的需求,还可以考虑自定义函数。

第 4 章:课后任务

4.1 课后任务

1、计算t_dml表中最大的日期距离2017-08-01的天数

2、计算t_dml表中province字段,以“省”结尾的值的个数

3、计算t_product表各产品价格与产品对应分类下所有产品平均价格的差额,输出产品id和价格差额

【实验】阿里云大数据助理工程师认证(ACA)- ACA认证配套实验-03-MaxCompute内置函数相关推荐

  1. 阿里云大数据助理工程师ACA认证最新笔记(2021)

    阿里云大数据助理工程师ACA认证最新笔记(2020) 首先谈论一下考试相关 本人与最近学习并通过了阿里云云计算助理工程师ACA认证,购买了认证包,有6个月的时间,无数次的观看视频,每个沙箱实验都有两次 ...

  2. 有人考过阿里云大数据助理工程师认证(ACA)从而能分享心得攻略吗?

    阿里云认证分为ACA.ACP.ACE三个级别,目前相对来说,ACP级别的考试人数最多,也相对来说,含金量还可以,ACA就比较建议大学生考了,含金量不是很高,难度也不高.可以试试直接考ACP.ACP认证 ...

  3. 阿里云大数据助理工程师认证考试考什么内容?

    阿里云认证分为ACA.ACP.ACE三个级别,本文主要针对ACP认证.ACP认证目前按专业方向主要分四种:云计算(主要对应阿里云基础架构产品).大数据(主要对应阿里云大数据系列产品).云安全(主要对应 ...

  4. 【实验】阿里云大数据助理工程师认证(ACA)- 机器学习实现基本统计分析

    实验概述 本实验在阿里云PAI机器学习平台上,对一组农业数据进行基本的统计分析,包括观察数据的分布情况,对农民的收入和其他变量的相关性进行分析,对不同区域的农民收入进行分组分析和对比分析,以探讨不同地 ...

  5. 【实验】阿里云大数据助理工程师认证(ACA)- ACA认证配套实验-01-MaxCompute DML操作

    一.实验概述 大数据计算服务(MaxCompute,原名 ODPS)是一种快速.完全托管的 GB/TB/PB 级数据仓库解决方案.MaxCompute 向用户提供了完善的数据导入方案以及多种经典的分布 ...

  6. 阿里云大数据ACA认证考试总结

    刚参加完阿里云大数据助理工程师认证(ACA)考试,趁还有点记忆,总结一下. 在官网上没有找到ACA的考试大纲和样题,遂看了ACP的,结果有点误导.ACP考试大纲说maxcompute占55%,data ...

  7. 阿里云大数据型实例规格族d1配置性能详解

    阿里云大数据型实例规格族d1配置性能CPU.内存.适用场景.d1实例规格族,InstanceTypes分享大数据型实例规格族d1实例详解: 大数据型实例规格族d1配置特性 I/O优化实例 仅支持SSD ...

  8. 阿里云大数据组件的基本介绍

    阿里云大数据组件的基本介绍 注意:本文结合了本人对Hadoop生态和Spark的理解,阅读本文需要对传统的大数据组件有基本的认识和了解.本文不具备权威性,若要准确地了解阿里云大数据组件的特性请直接查看 ...

  9. 如何两周快速通过 阿里云大数据分析师acp认证(及免费获取ACA认证资格)

    目录 话不多说,学习资料(视频+模拟题300道): 阿里云大数据分析师 ACP 认证介绍: 阿里云大数据分析师专业认证的报名方式: 阿里云大数据分析师认证所需具备的前置知识: 阿里云大数据分析师认证相 ...

  10. 阿里云大数据工程师ACA认证考试大纲

    阿里云大数据工程师ACA认证考试大纲 认证介绍: 阿里云大数据工程师ACA认证(Alibaba Cloud Certified Associate-Big Data) 是面向学生.大数据技术入门人员. ...

最新文章

  1. 【mysql dump】 备份原理及脚本
  2. RSA加密和DH加密
  3. Oracle 获取字符的位置并截取字符串
  4. 设计模式的分类和六大设计原则
  5. 后台导出大量数据超时报 nginx404错误
  6. SpringMVC项目 使用IDEA快速构建
  7. 正则表达式的匹配规则
  8. (软件工程复习核心重点)第十二章软件项目管理-第四节:软件配置管理和能力成熟度模型
  9. 如何通过修改注册表来限定Win10 PIN的最小位数
  10. 计算机旅游网站毕业论文,旅游网站任务书
  11. 数据结构复习-day01-SqList顺序表
  12. 如何制作离线tts?
  13. UE4 Take Recorder的使用
  14. 头歌平台数据结构与算法 单链表实验 第1关:倒置链表
  15. 杭电多校第六场个人补题6 7 9 10 12
  16. 五一游天坛,体验超震撼的大像素全景
  17. 数据结构与算法——数据结构知识归纳
  18. 图像处理--边缘检测
  19. ducter运维平台_专访运维管理开源平台负责人刁文波:Ducter能帮你!
  20. 标梵讲解域名注册的流程和注意事项!

热门文章

  1. AtCoder 神题汇总
  2. Winedit7.0自定义一键编译
  3. 2021年科创板股权激励研究报告发布
  4. PS使用高反差保留增加图像锐度
  5. 公司来了一个low逼程序员,进程线程面试题总结
  6. 唐僧向李世民汇报627年度工作总结报告,堪称国际水平!
  7. 信签纸有虚线怎么写_信签纸写作文格式怎么用
  8. 股权投资模型-CAPM模型和PEG模型(内附示例数据)
  9. 关于梯度下降与Momentum通俗易懂的解释
  10. python批量爬取校花网图片