文章目录

  • 熟悉Python
  • 懂R语言
  • 掌握SQL
    • 大数据基础
    • 数据库常用类型
    • 多表查询
    • 更多
      • 聚合函数
      • distinct
      • case when
      • 窗口函数
      • 动态更新
      • 一行变多行
      • 调优

内容整理自《拿下offer 数据分析师求职面试指南》—徐粼著 第四章编程技能考查
其他内容:
【数据分析师求职面试指南】必备基础知识整理
【数据分析师求职面试指南】必备编程技能整理之Hive SQL必备用法
【数据分析师求职面试指南】实战技能部分

熟悉Python

懂R语言

掌握SQL

一篇Hive SQL 在互联网公司实习中使用Hive SQL的一些体会和注意点

大数据基础

Hive时Hadoop的一个数据仓库工具,将结构化的数据文件映射为一个数据库表,并提供类SQL查询功能:Hive SQL
Hadoop主要解决两大问题:大数据存储和大数据分析。解决分别依赖HDFS和Mapreduce。
HDFS:可扩展的、容错的、高性能的分布式文件系统,异步复制,一次写入、多次读取,主要负责存储。
MapReduce使分布式计算框架,包含Map映射和Reduce归约过程,负责在HDFS上进行计算。

Hadoop存储计算海量数据但是需要前端实时展示数据变化情况时,无法保证实时性。MySQL是将数据存储在本地服务器的关系数据库,可满足实时展示,但可能因计算量大使任务杀死。

目前通用方法在Hadoop中通过Hive SQL 对原始数据集进行处理,尽量在Hive中完成大数据量的计算,之后将处理好的数据通过出仓的方式导入MySQL。

下面是以Hive SQL为例:

数据库常用类型

不涉及子查询的单表查询SQL语句:select,from,where,group by,having,order by

select执行顺序:from->where->group by ->select->having->order by
group by存在时,select后非聚合字段都会被视为分组字段,要保证一一对应!group by在sellect之前,所以不能直接使用别名。
只有存在group by才使用having,主要针对聚合后字段及逆行筛选,可以使用字段别名。
desc降序,asc升序

多表查询

join:以字段(列)为单位连接 【使用更广泛】。
1. inner join(内连接):只保留两个表同时存在的记录
2. left join(左连接):保留左表所有记录,无匹配用NULL
3. right join:保留右表所有记录
4. full join:左右表记录都保留

union:以记录(行)为单位连接,需要保证连接的两表字段数量相同,且按顺序一一对应。
mysql中有union.union all;Hive 只有union all(不去重)

Hive大多是分区表,加快查询速度,节省计算资源。没有索引,每次查询要全量扫描,增加分区可以减少每次扫描的数量。
分区表:增量表和全量表。

更多

聚合函数

出现select后,对记录按照分组字段进行汇总

聚合函数 含义
sum(col) 计算分组后组内所有记录的和
avg(col) …均值
count(col) 记录的数量
stddev(col) 标准差
variance(col) 方差
max()min() 最大最小值
percentile(col,p) p分位数,p:0~1

distinct

去重,两个场景:
一使select后使用,对整体记录去重(所有字段值相同)select distinct id,name...
二是聚合函数时,实现分组后去重,再进行聚合计算。count(distinct subject):统计参加过考试的学科数

case when

  1. 使用在分组语句和选择语句中,group by后(不可使用字段别名),提供新的分组字段。
select case when city in ('青岛','济南')then '山东'else '其他'end as provincecount(1) as total
from table
where pt>='2019-01-01'
group by case when city in ('青岛','济南')then '山东'else '其他'end
  1. select后,基于现有字段生成新字段
  2. 聚合函数中:count(distinct case when score>=60 then subject end)as total_suc_subject:统计考试通过的学科数

聚合函数+distinct+case when 基本完成SQL分组计算!

窗口函数

推荐阿里云文档

类似聚合函数也会对记录分组后进行聚合计算,但不会为每组只返回一个值,而是多个。准确说,为分组中每条记录都返回特定值。
只能出现select后,并且不会再使用group by
基本结构函数名() over (partition by col1,col2 order by col3 desc/asc,col4 asc/desc)
partition by表示对所有记录按照col1,col2分组,有相同的记录按照col3,col4降序或升序排列。

常用(一定要掌握,可以减少表与表的连接)的:

动态更新

用户留存率:n天前使用App的用户今天依然使用的占比。指标在原始数据产生n天后获得,需要对n天前分区数据进行更新,涉及动态分区概念。

Hive不支持insert、update、delete,无法直接修改记录,通过对分区全量更新实现数据修改。

首先建分区表 ;

一行变多行

group by 多行变一行

调优

比如当需要对大表小表进行join操作时,可以使用MAPJOIN将小表加载到内存中,通常小表大小营销与25MB。

若上述操作后,计算速度依旧不快,考虑数据倾斜问题。
执行Hive SQL语句过程中经历Map,Reduce两个步骤,

【数据分析师求职面试指南】必备编程技能整理之Hive SQL必备用法相关推荐

  1. 【数据分析师求职面试指南】实战技能部分

    文章目录 必备技能 数据人员如何创造价值 完整的指标体系构建 数据监控集报表设计 设计一份优质的数据分析报告 基于互联网大数据的应用 A B 测试 用户画像 完整的数据挖掘项目流程 1. ​分析问题, ...

  2. 拿下Offer:数据分析师求职面试指南

    一.面试前的准备 二.直面数据分析面试 三.基础知识考查 四.编程技能考查 4.1 熟悉Python 4.1.1 概念 Anaconda -> Spyder & Jupyter Note ...

  3. [阅读记录]《数据分析师求职面试指南》-2

    又是写在前面的一些碎碎念,大家都去读这本书!!(●'◡'●) 目录 第三章 基础知识考察 统计及数据分析知识 假设检验 贝叶斯统计概览 模型及数据挖掘知识 第四章 编程技能考察 熟悉Python pa ...

  4. 【推荐】好友新书《拿下Offer-数据分析师求职面试指南》(文末赠送5本!)...

    我的好友徐麟的新书<拿下Offer-数据分析师求职面试指南>跟大家见面了! 徐老师在数据分析领域工作多年,有着丰富的从业经验,也多次担任面试官,这本书从面试的角度为大家讲解了如何成为数据分 ...

  5. 常见的数据分析师的面试问题 完整文件放在GitHub链接上了!!!擅用crtl + F

    文章目录 前言 1.常见的数据分析师的面试问题 1.1 基础知识考查 **1.1.1概率论与数理统计:** (1)用简洁的话语简述**随机变量**的含义. (2) 随机变量和随机试验间有什么关系 (3 ...

  6. 毕业季offer怎么拿?收下这份非典型求职面试指南

    摘要:求职面试莫慌,先自我评估一下 ,华为云专家手把手为你指导. 本文分享自华为云社区<毕业季offer怎么拿?收下这份非典型求职面试指南>,原文作者:技术火炬手 . 又是一年毕业季,对于 ...

  7. 【职场篇】游戏开发社招求职面试指南③——面试总结

    终于到最后一篇了,这一篇主要写的是我面试过程的总结.可能也是很多人比较关心的一部分.再次声明我的经历比较特殊(985本科机械专业转行),我的经验不一定适合所有人,主要面向三年以下的客户端开发岗. 关于 ...

  8. 数据分析师要掌握什么知识和技能?

    ​目前很多小伙伴想转行称为数据分析师,但是又无从下手,下面小编就给大家简单介绍一些数据分析师需要掌握的知识和技能,希望能对大家有指引作用. 专业知识 了解一个职位或是行业,必然要先有一些基础理论和概念 ...

  9. 成都python数据分析师职业技能_想成为数据分析师,需要重点学习什么技能?

    随着科技的创新和发展,数据分析师也越来越吃香,各行各业都需要这种技能分析数据又能实现业务增长的人才,前很多小伙伴也正在转行中.但是,想成为数据分析师需要学习的知识有很多,大家必须建立一个清晰的知识体系 ...

最新文章

  1. 设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类
  2. 「LibreOJ NOI Round #2」不等关系 (dp+NTT分治)
  3. Spring MVC中的验证组
  4. 一招上手!这样设计扛住亿级流量活动系统
  5. Express-static
  6. Zeusee 开源移动端车型识别系统HyperVID
  7. 个推Node.js 微服务实践:基于容器的一站式命令行工具链
  8. android udt协议,接口和软件包  |  Android 开源项目  |  Android Open Source Project
  9. hive中统计某列数组的元素个数
  10. PHP安装kafka扩展
  11. shoemaster安装教程(含详细图文步骤)
  12. 关于flash播放器不为人知的四大点
  13. STM32开发项目:步进电机驱动库
  14. android 程序控制开关飞行模式,android开关飞行模式的方法
  15. Word插入分页符后设置下一页首行段落间距正常显示
  16. 【2000字原创】大厂都在用的几款软件测试平台!
  17. ps cs6如何破解
  18. linux网络协议栈(四)链路层 (5)vlan处理
  19. 如何将图片做成二维码并加入文字?二维码文字内容的排版怎么做?
  20. android 获取通讯录[BUG速记]

热门文章

  1. 移动云年终盛宴:云电脑、云主机、云空间等爆款产品等你来抢
  2. 【第一次机房收费系统优化】-登录窗体
  3. 要想做好日语翻译,你需要这样做?
  4. HttpClient模拟登录、HtmlUnit模拟登录,jsoup爬取登录后的内容(不带验证码)
  5. H3C交换机堆叠简单案例
  6. 英语和c语言哪个难,AP课程各科大比拼 来看看哪个简单哪个难
  7. .NET练习计算平方根
  8. 这几天怎么头痛的厉害!
  9. 毕业设计 2023-2024年最新智能科学工程专业毕设选题题目推荐汇总
  10. java 路由算法_几种简单的负载均衡算法及其Java代码实现