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

精选30+云产品,助力企业轻松上云!>>> hot3.png

一、实验背景介绍

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

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

  1. 数值类函数;

  2. 字符串类函数;

  3. 日期类函数; 

二、实验环境架构

  实验环境架构:阿里云大数据计算服务MaxCompute

第 1 章:实验准备

1.1 申请MaxCompute资源

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

1.2 开通服务

(本实验用到odps客户端,创建资源之前确保本地安装了java8或者以上版本) Java下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 1)点击【实验资源】,查看本次实验资源信息(MaxCompute资源)。 2)在弹出的左侧栏中,点击 【创建资源】按钮,开始创建实验资源。 如下图:

注意:实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。 3)创建资源,如下图:(创建资源需要几分钟时间,请耐心等候……) 4)资源创建成功后,可通过【实验资源】查看实验中所需的实验资源信息。如下图:

注意:在本地保存下阿里云账号信息,包括资源中的项目名称、企业别名、子用户名称、子用户密码、AK ID、AK Secret等信息。 沙箱实验环境说明:

企业别名:即主账号ID;

子用户名称和子用户密码:登录实验环境的账号;

AK ID和AK Secret:系统为当前用户分配的登录验证密钥信息,配置odps客户端时需要;

控制台url:登录实验开发环境的地址; 5)点击页面左侧的【控制台url】,复制链接,在新的窗口打开,跳转到登录页。 在这里插入图片描述 6)在登录页,输入【实验资源】中提供的账号,格式为:子用户名称@企业别名,再点击【下一步】。 7)输入【实验资源】中提供的的“子用户密码”,点击【登录】 8)登陆后,进入【管理控制台】界面, 点击左侧菜单栏 【大数据(数加)】,再点击【DataWorks】,进入数据开发概览页。在这里插入图片描述

1.3 创建项目

沙箱环境已经默认创建完项目,点击【进入数据开发】即可。 在这里插入图片描述在这里插入图片描述 本小节以下步骤供使用个人账号实验参考。

开通MaxCompute后,点击【管理控制台】 在这里插入图片描述 选中MaxCompute服务,选择【按量付费】,然后点击【下一步】 在这里插入图片描述 填写项目相关信息:输入“项目名称”(全局唯一)、“显示名”以及“项目描述” 信息,然后点击【创建项目】。 在这里插入图片描述 项目创建成功后,点击【进入数据开发】:】 在这里插入图片描述 打开【数据开发】页面: 在这里插入图片描述

1.4 安装配置odpscmd客户端

步骤1:客户端下载 (本实验已经提供好客户端,自行下载附件)

步骤2:解压odpscmd_public.zip 到本地目录,密码:aca21104 如:解压至E:\ODPS_DEMO

步骤3:查看本次实验课用到的介质,可以看到如下的文件夹: 在这里插入图片描述 步骤4:在conf文件夹中有odps_config.ini文件。鼠标右键编辑此文件,配置相关信息: 在这里插入图片描述

说明:

project_name=<对应实验资源中的项目名称>

access_id=<对应实验资源中的AK ID>

access_key=<对应实验资源中的AK Secret>

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 命令,如: 在这里插入图片描述 注意:项目可以随时根据情况切换,上图表示环境设置成功.

1.5 测试表dual准备

在【临时查询】页面,点击【新建】,然后点击【QDPS SQL】 在这里插入图片描述 输入“节点名称”,选择“目标文件夹”,然后点击【提交】。 在这里插入图片描述 进入脚本编辑页面,进行脚本开发,创建实验测试表dual,点击【运行】。

SQL语句:

CREATE TABLE dual (

id BIGINT

)

LIFECYCLE 10000;

然后查看运行日志日志显示测试表创建成功。 在这里插入图片描述在这里插入图片描述 往测试表里插入一条数据,输入SQL语句,点击【运行】。

insert into table dual select count(1) from dual;

在这里插入图片描述 查看测试表数据内容,输入SQL语句,点击【运行】。:

select * from dual limit 10;

在这里插入图片描述

1.6 测试表t_dml准备

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

create table t_dml (

detail_id bigint,

sale_date datetime,

province string,

city string,

product_id bigint,

cnt bigint,

amt double

);

然后查看运行日志显示测试表创建成功。 在这里插入图片描述 打开odpscmd客户端交互界面 在这里插入图片描述 执行命令,加载数据 t_dml.csv,(注意修改数据文件存放路径):

tunnel upload f:\data\t_dml.csv t_dml; 在这里插入图片描述 查看数据表数据:输入sql语句,点击【运行】,查看结果。

select * from t_dml limit 10; 在这里插入图片描述

1.7 测试表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; 在这里插入图片描述 查看数据表数据,输入sql,点击【运行】。

select * from t_product limit 10;

在这里插入图片描述

1.8 测试表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;

在这里插入图片描述 查看数据表数据,输入sql, 点击【运行】

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


输入脚本,点击【运行】,查看结果: 在这里插入图片描述 输入脚本,点击【运行】,查看结果: 在这里插入图片描述

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, city

          from 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, city

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

输入脚本,点击【运行】,查看结果 在这里插入图片描述 日期相减:

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和价格差额

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
阿里大数据ACP题库是阿里巴巴公司推出的一套专业的数据分析和大数据技术题库。ACP全称是Alibaba Certified Professional,是阿里巴巴公司颁发的一种认证,用于验证专业人士在数据分析和大数据技术领域的知识和能力。 阿里大数据ACP题库覆盖了大数据处理、数据分析、数据仓库、数据挖掘等多个领域的知识。题库包括了理论题、实操题、案例分析等多种形式,通过解答这些题目可以帮助学习者深入理解相关的知识和技术,并提升实际操作能力。 ACP题库的内容丰富全面,注重实践应用。题目从基础入手,逐步深入,涵盖了大数据技术栈中的各个环节和工具,例如Hadoop、Spark、Hive、Flink等。学习者可以通过学习ACP题库,系统学习和掌握大数据处理和数据分析的核心知识,了解大数据技术的最新发展和应用场景。 阿里大数据ACP题库的优点在于由阿里巴巴公司进行维护和更新,准确反映了业界最新的技术趋势和应用场景。通过学习和掌握ACP题库中的知识,可以提升个人在数据分析和大数据技术领域的竞争力,为自己的职业发展铺平道路。同时,通过阿里大数据ACP认证,也可以证明自己在这一领域的专业水平,为就业提供有力支持。 总的来说,阿里大数据ACP题库是一个有益于数据分析和大数据技术学习的权威资源,通过学习ACP题库中的知识,可以帮助人们提升数据分析和大数据技术的能力,增加就业竞争力,促进自身的职业发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding路人王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值