本文共 3462 字,大约阅读时间需要 11 分钟。
MaxCompue(原名ODPS)是阿里巴巴自主研发的一种快速、完全托管的TB/PB级数据仓库解决方案,获得了很多用户的喜爱。这篇帖子希望能给这些用户关于如何学习使用一些帮助。 帖子本身很少直接介绍MaxCompute的知识,但是会给出如果想学好需要做到什么,像是一张Checklist。当随着时间的积累,你在上面打满了勾的时候,相信你已经能熟练使用MaxCompute进行开发了。在写本学习计划时,因为Datahub和流计算正在重构,暂时不包含在内。
如果在学习过程中遇到任何解决不了的问题,可以在文后和我们留言互动。因为问题或许有共性,或许也能帮到其他人。但是涉及到诸如账号密码,Access Id/Key一类的敏感信息,请务必不要写在留言里,有需要可以提交工单咨询。
本学习计划主要包含:
学习计划不会大篇幅的介绍MaxCompute相关的知识,但是会告诉你如果要完成本篇的学习,需要了解什么。你可能需要翻阅指定的文档,也可能需要使用搜索引擎去搜专业名词的含义。课程会包含一些练习题,希望每个题目都没有问题后再继续下一课的学习。
现在的系统架构里,数据被大量地以表的形式存储在数据库里。使用SQL语言进行查询,是分析这些数据最方便的方法。我们可以用SQL非常简单地分析用户的区域分布,了解销量的同比和环比等等。
在本课学习计划的第一课,我们会复习标准的SQL语法。读书时对SQL编写比较自信的同学可以跳过本课,或者直接去看思考题。
这里选择大家比较熟悉的Emp/Dept表做为数据集。为了方便大家测试,给出了相关的SQL。注意有删表指令,操作前需核实。
DROP TABLE IF EXISTS `emp`;CREATE TABLE `emp` ( `EMPNO` int(4) NOT NULL, `ENAME` varchar(10) DEFAULT NULL, `JOB` varchar(9) DEFAULT NULL, `MGR` int(4) DEFAULT NULL, `HIREDATE` date DEFAULT NULL, `SAL` int(7) DEFAULT NULL, `COMM` int(7) DEFAULT NULL, `DEPTNO` int(2) DEFAULT NULL, PRIMARY KEY (`EMPNO`), KEY `FK_DEPTNO` (`DEPTNO`), CONSTRAINT `FK_DEPTNO` FOREIGN KEY (`DEPTNO`) REFERENCES `dept` (`DEPTNO`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into `emp`(`EMPNO`,`ENAME`,`JOB`,`MGR`,`HIREDATE`,`SAL`,`COMM`,`DEPTNO`) values('7369','SMITH','CLERK','7902','1980-12-17','800',null,'20'),('7499','ALLEN','SALESMAN','7698','1981-02-20','1600','300','30'),('7521','WARD','SALESMAN','7698','1981-02-22','1250','500','30'),('7566','JONES','MANAGER','7839','1981-04-02','2975',null,'20'),('7654','MARTIN','SALESMAN','7698','1981-09-28','1250','1400','30'),('7698','BLAKE','MANAGER','7839','1981-05-01','2850',null,'30'),('7782','CLARK','MANAGER','7839','1981-06-09','2450',null,'10'),('7788','SCOTT','ANALYST','7566','1987-04-19','3000',null,'20'),('7839','KING','PRESIDENT',null,'1981-11-17','5000',null,'10'),('7844','TURNER','SALESMAN','7698','1981-09-08','1500','0','30'),('7876','ADAMS','CLERK','7788','1987-05-23','1100',null,'20'),('7900','JAMES','CLERK','7698','1981-12-03','950',null,'30'),('7902','FORD','ANALYST','7566','1981-12-03','3000',null,'20'),('7934','MILLER','CLERK','7782','1982-01-23','1300',null,'10');DROP TABLE IF EXISTS `dept`;CREATE TABLE `dept` ( `DEPTNO` int(2) NOT NULL, `DNAME` varchar(14) DEFAULT NULL, `LOC` varchar(13) DEFAULT NULL, PRIMARY KEY (`DEPTNO`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into `dept`(`DEPTNO`,`DNAME`,`LOC`) values('10','ACCOUNTING','NEW YORK'),('20','RESEARCH','DALLAS'),('30','SALES','CHICAGO'),('40','OPERATIONS','BOSTON');
这些是从网上找的题目,参考答案网上也有。记得在搜答案之前要先自己写出语句并执行过看看是否符合预期。
1. 列出至少有一个员工的所有部门。
2. 列出薪金比“SMITH”多的所有员工。 3. 列出所有员工的姓名及其直接上级的姓名。 4. 列出受雇日期早于其直接上级的所有员工。 5. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。 6. 列出所有“CLERK”(办事员)的姓名及其部门名称。 7. 列出最低薪金大于1500的各种工作。 8. 列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号9. 列出薪金高于公司平均薪金的所有员工。 10.列出与“SCOTT”从事相同工作的所有员工。 11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。 12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。 13.列出在每个部门工作的员工数量、平均工资和平均服务期限。 14.列出所有员工的姓名、部门名称和工资。 15.列出所有部门的详细信息和部门人数。 16.列出各种工作的最低工资。 17.列出各个部门的MANAGER(经理)的最低薪金。 18.列出所有员工的年工资,按年薪从低到高排序。SQL的用法对后面的MaxCompute SQL的学习很有帮助,而且现在市面上学习资料非常多,这里不再赘言。不过这些题目无法代表全部的SQL技能,还需大家多思考多练习。
另外如果大家有从网上搜这些题目的话,可能会惊叹,为什么我的结果和别人的答案不一样。举个例子,就说题2。如果表里有多个叫“SMITH”的员工,那是比任意一个“SMITH”薪金高就返回呢,还是比全部的“SMITH”高?其实更多的是一个理解或者口径的问题,同样的一句话可能有不同的理解。所以这句话我必须要加粗:良好的沟通能力是数据分析师的核心技能之一。
转载地址:http://cxjta.baihongyu.com/