新手入门赛-(o2o)数加平台使用教程(上)|学习笔记

简介: 快速学习新手入门赛-(o2o)数加平台使用教程(上)

开发者学堂课程【天池大赛算法教程及获奖选手答辩新手入门赛-(o2o)数加平台使用教程(上)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/389/detail/4997


新手入门赛-(o2o)数加平台使用教程(上)


课程大纲:

一、数据开发平台的操作流程

、常用的命令

三、使用中的技巧介绍

 

一、数据开发平台的操作流程

1.账号相关

当你报名了线上比赛,左侧菜单就会多出一个数加菜单,点击数加菜单后会弹出一个界面。在页面的中间会有一天提示,您开通数加比赛的数据平台,登陆平台使用专有账号,建立数加平台的 RAM 账号,点击RAM账号,会跳转到获取 RAM 账号的界面。

点击数据开发平台,就会跳转到数据开发平台的登陆界面。

2.登陆界面

界面会显示企业别名,子用户名称,子用户密码。

注意:

1. RAM账号,每次比赛账号一样,并不会再次分配。

2. 不要使用主账号登陆。

输入 RAM 账号,即可登录。

3.初始界面

登陆以后就可以看到初始界面。

左上方三角的地方,这里是工作空间切换的位置。每个比赛都会分配一个工作空间,当参加多次比赛后,就会有多个工作空间。注意只有在对的工作空间,才能正确的读取数据。

鼠标放到右上角的小三角,就会弹出菜单。这里有帮助文档和提交工单的两个菜单。帮助文档里包括了所有工作的使用说明,样例和注意事项,是我们进阶的好地方。

如果登陆平台中出现了什么bug,比如说不能读取数据,就需要使用提交工单。需要注意提交工单使用主账号登陆。

左侧有五个菜单,分别是任务开发,脚本开发,资料管理,函数管理和表查询。

主要介绍两个:脚本开发和函数管理。

其中脚本开发是我们用SQL进行比赛的舞台。

函数管理是比赛中使用所有函数的集合,包括函数说明和调用案例。

4.SQL 创建界面介绍

在脚本开发的页面中右键,选择脚本开发,建立 loda,支持中文命名,类型默认 ODPS SOL。

选择目录的地方,准备比赛时,每个人最好建立一个属于自己的目录管理,否则随着时间推移,很多代码就很难管理。

执行一条 SQL

编辑脚本区域

每天 SQL 语句之间用分号隔开,上面的按钮可以执行选中的 SQL,如果没有任何选中的 SQL,那么就执行窗口里所有的 SQL 语句。旁边的停止按钮可以停止正在执行的命令。

在旁边的格式化强烈不推荐使用。因为这会让格式变得很不易读。大家根据自己的习惯来选择。

再往上是新建脚本,旁边的保存按钮很重要,一定要进行保存。否则,就会出现关闭浏览器,一切回归原点的情况。

窗口显示的地方会把结果显示出来,结果最多50个,200页。

 

二、 常用命令

读取复制数据

比赛的第一件事就是把官方数据下载到空间里,创建表是非常重要的。

样例如下:

把数据拉到你的本地,再也不用担心忘记命名空间是什么

CREATE TABLE bryan train offline stage2 AS

SELECT FFOM ODPS TC 257100 F673506E024. TRAIN OFFLINE STAGE2:

CREATE TAELE bryan train online stage2 AS

SELECT FROM ODFS_TC_257100_ F673506E024. TRAIN_ONLINE _STAGE2:

CREATE TAFLE bryan prediction stage2 AS

SELECT FROM ODPS_TC _257100F673506E024. PREDICTION STAGE2:

创建新表是很重要的事情,因为接下来你将不断的面对他

检查是否已有数据

执行我们下载到本地的 SQL 语句,就会得到数据结果,那就证明已经成功了。

注意一下,左下角有一个复制按钮,点击可以复制当前窗口的数据。只是第一页数据,不是所有的数据。

1.最基础语句

1. Select columnNamel,columnName2... or Select'

2. From TableName or From(Temp Table)

3. Where searchCanditionl eg. columnNamel stringl'. columnName2 like %string2%

4. Group By columnNamel, columnName2...

5. Having countConditionl, countCondition2

6. Order By columnNamel,columnName2...

更多语句参考官方说明文档

https://help.aliyun.com/documentdetail/27860. html?spm=5176.7740.6.608.0Z8auc

2.统计函数

统计函数是特征的生成利器

Count(columnNamel)

数量

Avg(columnNamel)

平均值

Max(columnNamel)

最大值

Min(columnNamel)

最小值

Median(columnNamel)

中位数

Stddev(columnNamel)

整体标准差

Stddevsamp(columnNamel1)样本标准差

官方参考文档

https://help. aliyun.com/document_detail/48975.htm?spm=5176.doc27860.6.618. TVPcEZ

3.一个利器

over partition by 窗口,让聚合函数更加好用

window_func() over(partition by coll, [col2...]

[order by coll [asc|desc], col2[asc|desc)]...] windowing_clause)

partition by部分用来指定开窗的列。分区列的值相同的行被视为在同一个窗口内。

现阶段,同一窗口内最多包含1亿行数据,否则运行时报错。

order by 用来指定数据在一个窗口内如何排序

windowing_clause 这个部分一般不常用

例子如下:

select user_id, count(user_id)over(partition by user_id) as count from test_src:

select user_id, count(user_id) over( partition by user_id order by user_idas count from test_src

注意两个语句的差别,指定 order by 时,返回当前窗口内从开始行到当前行的累计数值,

不 指定 order by,返回当前窗口内 user_id 的计数值,从中可以看出有 SQL order by 有无得差别。

官方只提供中位数的函数,没有提供四分卫的方法。但是我们学了窗口函数,就可以实现。

比如:我们想统计每个消费者消费金额的四分卫,select user_id, count(user_id) over( partition by user_id order 消费金额as count from test_src

正则与 like

Like 模糙的检索%和以及/

官方参考文档

https//help  aliyun.com/document_detail/27870.H?spm=5176.doc27871.6.625.3F2FQf

正则常用的匹配符^,&,.,*,?,+,[],(),及/

regexp_extract(string source, string pattern[, bigint occurrencel)

bigint regexp_ instr(string source, string pattern.

bigint start position[, bigint nth_occurrence[, bigint return_option]l)

regexp_replace(string source, string pattern, string replace_stringl, bigint occurrencel)

regexp_substr(string source, string patterng bigint start positiong, bigint nth_occurrencell)

regexp_count(string source, string patternl bigint start_position])

官方网址:

https://help.aliyun. com/document_detail/27871.h?spm=5176.doc27870.6.626.C3aldb

https//help. aliyun.com/document_ detail/47516.h?spm= 5176.doc47515 6574 6Mewvll

4.你最需要的字符串操作

统计 charmatchcountstring str1, string str22)

char matchcount(abd', 'aabc')=2

连接 concatstring, string

concat( 'ab' 'c')= 'abc concata', null, 'b')= NULL

截取 substr(string str, bigint start_positionL bigint length

substr("abc", 2. 1)="b"

split_part(string str, string separator bigint startl, bigint end])

split_part('a, b,c, d'", 1, 2)='a,b'

Case When

它有两种语法,但是我们一般只用第二种。

1、case value

when( condition11) then resultl

when( condition2) then result2

else resultn

end

when condition1) then resulti

when( condition22) then result22

hen( condition33) then result33

else resultn

end

select

case

when shop nane is null then 'default region

when shop nane like "hang' then 'z1_region

end as region

fron sale detail;

2、If

if(testCondition, valueTrue, valueFalseOrNu

Nully

select if(1=2,100,200) from dual

返回200

它是单条件判断。

join 和 Union all

字段扩充的时候需要用的 oin

left join 会从左表那里返回所有的记录,即使在右表中没有匹配的行。

right outer join 右连接,返回右表中的所有记录,即使在左表中没有记录与它匹配。

full outer join 全连接,返回左右表中的所有记录

在表中存在至少一个匹配时,inner join 返回行。关键字 inner 可省略。

要注意的是“最多支持16路 join 操作”

数据扩充的时候需要用 Union all

不支持顶级的两个查询结果合并,要改写为一个子查询的形式

select" from

select' from sale_detail where region =hangzhou

union all

select*from sale_detail where region ='shanghai')

t;

最多允许128路 union all

 

三、 使用技巧介绍

关于表

1、if exists 和 if not exist 在删除表和创建表的时候最好加上容错的语句,那么你的语句会变成如下

Drop table if exists tableName;

Create table if not exists tableName as

2.尽量在创建表的时候完成格式转换,利用 cast

因为你在查询结果的时候看不到字段的属性,为了防止生成的时候识别错误,尽量显示的告诉你创建的表是什么数据格式

3表名最好有明确的意义

特别是要进行 join 或者 union 的时候,一定要有意义,否则后期会很难进行

可以多线程执行的平台

因为结果窗口只允许显示10个结果窗口,所以最多只能进行10个线程的多线程执行,因为是定时执行,所以不能同时进行有依赖关系的语句。

日志窗口会给出你执行的记录,如果出现错误,会有红色文字提醒。

当你在进行多任务执行的时候可以通过窗口标签名字变红快速知道是否已经出现错误。

有一种错误是请求类错误:“fetch result encounter exception

这时候就需要用 limit 限制返回的数据条数。

一个利用窗口函数的重要技巧

row_number() over(partition by 1, order by 1) as rowid

完整样例代码如下:

CREATE TABLE NewTableName

AS

select id,rownum

from

(

select id

,row_number() over(partition by 1

order by 1) as rownum

from TableName

)t

总结:其实如果你学会了机器学习平台,就更加容易给一个表加入行号

时间函数

清楚的认知到数据是字符串还是日期格,标准的日期格式是专业样子的

y-m -dd- hhmmss就是类似于2005-02-28000:00

任何和上面格式有出入的,例如:

2005-2-2800:00:002005/01/02000000.2005-02-280:00

都不是正确的时间格式,这个时候你需要的是对字符串进行切分然后进行拼接变成正确的时间格式

相关文章
|
存储 缓存 人工智能
云架构师进阶攻略(完整版)-1
云架构师进阶攻略(完整版)
232 0
云架构师进阶攻略(完整版)-1
|
网络协议 架构师 Linux
云架构师进阶攻略(完整版)-3
云架构师进阶攻略(完整版)
142 0
|
存储 运维 Kubernetes
云架构师进阶攻略(完整版)-4
云架构师进阶攻略(完整版)
148 0
|
分布式计算 资源调度 搜索推荐
云架构师进阶攻略(完整版)-5
云架构师进阶攻略(完整版)
|
缓存 监控 Kubernetes
云架构师进阶攻略(完整版)-6
云架构师进阶攻略(完整版)
129 0
|
运维 架构师 网络协议
云架构师进阶攻略(完整版)-2
云架构师进阶攻略(完整版)
101 0
云架构师进阶攻略(完整版)-2
|
机器学习/深度学习 SQL 分布式计算
新手入门赛-(o2o)数加平台使用教程(下)|学习笔记
快速学习新手入门赛-(o2o)数加平台使用教程(下)
114 0
|
弹性计算 缓存 安全
冬季实战营第二期:Linux操作系统实战入门全流程
冬季实战营第二期:Linux操作系统实战入门全流程
113 0
冬季实战营第二期:Linux操作系统实战入门全流程
|
NoSQL Java 关系型数据库
|
人工智能 前端开发 物联网
平头哥智能语音最佳应用实践 | 开发者社区精选文章合集(二十八)
随着社会未来向智能化的逐渐发展,数字化的趋势也愈加确定无疑的。智能语音技术的发展,优化了产品的便捷体验,让越来越多的企业和终端用户看到了“智能生活”的增长空间。
平头哥智能语音最佳应用实践 | 开发者社区精选文章合集(二十八)