阿里云大数据ACP专业认证实验之05-MaxCompute内置函数(上)(二)

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 阿里云大数据ACP专业认证实验之05-MaxCompute内置函数(上)(二)

第 2 章:实验详情


2.1 数值类数类


(1) 三角函数类

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

select 0.51020sin(60/1803.1415926) from dual;

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

20200706081140458.png

(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;

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


20200706081200461.png

(3) 随机函数类:

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

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


20200706081222725.png

(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) inCircle
from (select /*+mapjoin(t2)*/ rand() as x,rand() as y
from (select * from t_dml limit 10000) t1
left outer join (select * from t_dml limit 10) t2
 on t1.detail_id <> t2.detail_id) tt
) t;
// 产生约100万对随机点进行近似值计算:
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) inCircle
from (select /*+mapjoin(t2)*/ rand() as x,rand() as y
from (select * from t_dml limit 10000) t1
left outer join (select * from t_dml limit 100) t2
on t1.detail_id <> t2.detail_id) tt
) t;


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

202007060812529.png

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


20200706081312575.png

2.2 字符串类函数


(1) 长度类:

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

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

20200706081341572.png


(2) 查找类:


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


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


 from (select distinct province, city
          from t_dml) t


order by sim desc

limit 10;


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

2020070608140294.png

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


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, city
          from t_dml) t
order by SecondPos desc, FirstPos desc
limit 10;


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


20200706081424289.png


(3) 转换类:


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


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


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

2020070608144692.png


(4) 整形类:

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


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


from t_product;


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

20200706081505275.png

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

20200706081525306.png

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;


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

2020070608155682.png

// 日期截取

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

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


20200706081617427.png

// 获得具体日期

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


from dual;

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


2020070608163732.png


(2) 日期转换:


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

select to_date('20150131','yyyymmdd'),
to_char('2015-01-31 00:00:00', '日期:yyyymmdd')
from dual;

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

20200706081657423.png

// Unix时间和ODPS时间互转

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

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


20200706081716326.png


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

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

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

20200706081734939.png


(3) 日期运算:


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


select /+mapjoin(t2)/


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


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

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


20200706081756381.png

日期相减:

select max(sale_date), min(sale_date),

datediff(max(sale_date),min(sale_date),'dd')

from t_dml;

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


20200706081816611.png


第 3 章:实验总结


3.1 实验总结


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

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


第 4 章:课后任务


4.1 课后任务


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

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

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


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
2月前
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据存储计算服务:MaxCompute
阿里云MaxCompute是快速、全托管的TB/PB级数据仓库解决方案,提供海量数据存储与计算服务。支持多种计算模型,适用于大规模离线数据分析,具备高安全性、低成本、易用性强等特点,助力企业高效处理大数据。
141 0
|
2月前
|
数据采集 人工智能 大数据
10倍处理效率提升!阿里云大数据AI平台发布智能驾驶数据预处理解决方案
阿里云大数据AI平台推出智能驾驶数据预处理解决方案,助力车企构建高效稳定的数据处理流程。相比自建方案,数据包处理效率提升10倍以上,推理任务提速超1倍,产能翻番,显著提高自动驾驶模型产出效率。该方案已服务80%以上中国车企,支持多模态数据处理与百万级任务调度,全面赋能智驾技术落地。
213 0
|
20天前
|
人工智能 分布式计算 DataWorks
阿里云大数据AI产品月刊-2025年8月
阿里云大数据& AI 产品技术月刊【2025年 8 月】,涵盖 8 月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
114 1
|
24天前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
|
存储 机器学习/深度学习 人工智能
阿里云ODPS:在AI浪潮之巅,铸就下一代智能数据根基
在智能爆炸时代,ODPS正从传统数据平台进化为“AI操作系统”。面对千亿参数模型与实时决策挑战,ODPS通过流批一体架构、多模态处理、智能资源调度等技术创新,大幅提升效率与智能化水平。从自动驾驶到医疗联合建模,从数字孪生到低代码AI开发,ODPS正重塑企业数据生产力,助力全球客户在算力洪流中抢占先机。
116 0
|
1月前
|
机器学习/深度学习 运维 监控
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
63 0
|
2月前
|
数据采集 分布式计算 DataWorks
ODPS在某公共数据项目上的实践
本项目基于公共数据定义及ODPS与DataWorks技术,构建一体化智能化数据平台,涵盖数据目录、归集、治理、共享与开放六大目标。通过十大子系统实现全流程管理,强化数据安全与流通,提升业务效率与决策能力,助力数字化改革。
84 4
|
2月前
|
分布式计算 DataWorks 数据处理
在数据浪潮中前行:记录一次我与ODPS的实践、思考与展望
本文详细介绍了在 AI 时代背景下,如何利用阿里云 ODPS 平台(尤其是 MaxCompute)进行分布式多模态数据处理的实践过程。内容涵盖技术架构解析、完整操作流程、实际部署步骤以及未来发展方向,同时结合 CSDN 博文深入探讨了多模态数据处理的技术挑战与创新路径,为企业提供高效、低成本的大规模数据处理方案。
185 3
|
2月前
|
SQL 人工智能 分布式计算
ODPS:数据浪潮中的成长与突围
本文讲述了作者在大数据浪潮中,通过引入阿里云ODPS体系(包括MaxCompute、DataWorks、Hologres)解决数据处理瓶颈、实现业务突破与个人成长的故事。从被海量数据困扰到构建“离线+实时”数据架构,ODPS不仅提升了数据处理效率,更推动了技术能力与业务影响力的双重跃迁。

热门文章

最新文章