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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 【实验】阿里云大数据助理工程师认证(ACA)- ACA认证配套实验-03-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和价格差额

目录
相关文章
|
1月前
|
人工智能 分布式计算 DataWorks
连续四年!阿里云领跑中国公有云大数据平台
近日,国际数据公司(IDC)发布《中国大数据平台市场份额,2023:数智融合时代的真正到来》报告——2023年中国大数据平台公有云服务市场规模达72.2亿元人民币,其中阿里巴巴市场份额保持领先,占比达40.2%,连续四年排名第一。
116 12
|
1月前
|
人工智能 Cloud Native 数据管理
重磅升级,阿里云发布首个“Data+AI”驱动的一站式多模数据平台
阿里云发布首个AI多模数据管理平台DMS,助力业务决策提效10倍
192 17
|
1月前
|
SQL 人工智能 大数据
阿里云牵头起草!首个大数据批流融合国家标准发布
近日,国家市场监督管理总局、国家标准化管理委员会正式发布大数据领域首个批流融合国家标准GB/T 44216-2024《信息技术 大数据 批流融合计算技术要求》,该标准由阿里云牵头起草,并将于2025年2月1日起正式实施。
67 7
|
29天前
|
JSON 数据可视化 数据挖掘
Polars函数合集大全:大数据分析的新利器
Polars函数合集大全:大数据分析的新利器
51 1
|
1月前
|
SQL 人工智能 大数据
首个大数据批流融合国家标准正式发布,阿里云为牵头起草单位!
近日,国家市场监督管理总局、国家标准化管理委员会正式发布大数据领域首个批流融合国家标准 GB/T 44216-2024《信息技术 大数据 批流融合计算技术要求》,该标准由阿里云牵头起草,并将于2025年2月1日起正式实施。
|
13天前
|
SQL 消息中间件 分布式计算
大数据-115 - Flink DataStream Transformation 多个函数方法 FlatMap Window Aggregations Reduce
大数据-115 - Flink DataStream Transformation 多个函数方法 FlatMap Window Aggregations Reduce
20 0
|
1月前
|
存储 SQL 分布式计算
Java连接阿里云MaxCompute例
要使用Java连接阿里云MaxCompute数据库,首先需在项目中添加MaxCompute JDBC驱动依赖,推荐通过Maven管理。避免在代码中直接写入AccessKey,应使用环境变量或配置文件安全存储。示例代码展示了如何注册驱动、建立连接及执行SQL查询。建议使用RAM用户提升安全性,并根据需要配置时区和公网访问权限。具体步骤和注意事项请参考阿里云官方文档。
|
12天前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
13天前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
38 3
|
12天前
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
30 1