网站流量日志分析--统计分析--sql 补充扩展--如何编写 hive sql|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志分析--统计分析--sql 补充扩展--如何编写 hive sql

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第四阶段)网站流量日志分析--统计分析--sql 补充扩展--如何编写 hive sql】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/696/detail/12228


网站流量日志分析--统计分析--sql 补充扩展--如何编写 hive sql


1、学习如何编 hive sql 语句以及看到别人写的 sql 语句如何把握重点和关键点针对大数据分析查询的本质或者分析的本质落到 sql 层面就是 select因此以select 查询语句为例如何查询编写 sql

2、在查询中有 group byhavingwherelimit 等字段在什么时间出现查询语句的关键字 select当找到 select 之后 from 关键字很重要直接影响接下来操作的是什么因为 from 后跟的是一个表如果这个表存在这个表不存在各种不同的结果

Select

count(*) as nums每个性别的人数

Fromt_user_t用户表为了方便起别名

--需求:统计来自于北京男女各有多少人(性別空的排除)并且按照人数的倒数迸行排序。

3、表是全国的用户表有北京上海浙江河南,安徽要求只来自于北京的在操作之前进行过滤过滤只要求北京的

Select

count(*) as nums

Fromt_user_t

where t.city = "beijing'分组前过滤只要北京

4、这是个不规律的表当中性别字段有男有女但是在进行人口统计时性别是丢失的字段性别可能存在空需要把性别为空的排除掉And is not null从性别上考虑没有问题从性能上考虑当把性别过滤放在where中意味把全国所有的性别为空都排除掉了只需要排除北京的性别为空所以就不能写在 where 中where 和 having 的区别一个是分组前全局过滤一个是分组后过滤就是过滤的范围不一样

Select

count(*) as nums

Fromt_user_t

where t.city = "beijing'

group by t.sex

having t.sex is not null

5、按照人数的倒数进行排序人数就是统计的 nums可以编写 sql 了

Select

count(*) as nums

Fromt_user_t

where t.city = "beijing'

group by t.sex

having t.sex is not null

order by nums desc;

6、如果返回的数据有限制返回 n 条

Select

count(*) as nums

Fromt_user_t

where t.city = "beijing'

group by t.sex

having t.sex is not null

order by nums desc;

limit n;

这是编写查询语句的 sql或者是看别人 sql 的标准套路

7、小结

如何編写査看 select 句。

Select

count(*) as nums

Fromt_user_t

where t.city = "beijing'

group by t.sex

having t.sex is not null

order by nums desc;

limit n;

重点: select 确定之后,立马寻找 from 关键字,因为 from 后面跟的就是操作的表。返回字段count 字段没有这个表就是白写先确定表再根据业务确定表达式

--表可能是真实存在的表,如果是真实的表,直接操作使用。

--表也可能不存在,比如 t_user 表是根据两个表 join 而来的用户信息有一个a表一个 b 表a 和 b 表进行关联才能构成 t_user 通过查询把这个表变出来基于这个虚拟的表再进行操作比如 t_user 不存在假表没有 t_user,可以通过 a 和 b 查询得到它

from (

select 写关键字

a.*,b.* 返回 a 字段 b 字段

from a join b on a.id = b.id

where . . .如果需要就过滤

)t

t 表不是真实存在的表而是 a 和 b 查询变出来的表t 表就是一个虚拟的表

通过查询语句把 t 表变出来再基于 t 表进行外面的操作from 重要的原因就在于此

select

a.*,b.*

from a join b on a.id = b.id

where . . .

如果发现是小括号基本上可以确定表是一个虚拟的表查询出来的表如果只是一个表名那么表肯定真实的存在不管是写 sql 还是看 sql立马要寻找 from 关键字当把表的内容弄清楚之后接下来表怎么操作就是业务的问题了

--只有表确定之后在结合业务确定查询返回的字段或者表达式。

--嵌套子查询,先执行里面的查询语句,后执行外部的查询语句。

有可能 a 表和 b 表还不存在a 表来自于 c 和 db 表来自于 e 和 f在嵌套语句里面继续嵌套但是嵌套过多无意义理解嵌套的思想编写 sql 关键字的寻找以及具体的语法规则弄清楚很重要

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
【MySQL】根据binlog日志获取回滚sql的一个开发思路
【MySQL】根据binlog日志获取回滚sql的一个开发思路
|
1月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
395 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
1月前
|
SQL 数据库
为什么 SQL 日志文件很大,我应该如何处理?
为什么 SQL 日志文件很大,我应该如何处理?
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
45 2
|
2月前
|
SQL 存储 缓存
高基数 GroupBy 在 SLS SQL 中的查询加速
本文详细介绍了SLS中的高基数GroupBy查询加速技术。
114 18
|
1月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
197 0
|
3月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
1月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
1月前
|
SQL 数据库
为什么SQL日志文件很大,该如何处理?
为什么SQL日志文件很大,该如何处理?
|
3月前
|
SQL Java 关系型数据库
SpringBoot 系列之 MyBatis输出SQL日志
这篇文章介绍了如何在SpringBoot项目中通过MyBatis配置输出SQL日志,具体方法是在`application.yml`或`application.properties`中设置MyBatis的日志实现为`org.apache.ibatis.logging.stdout.StdOutImpl`来直接在控制台打印SQL日志。
SpringBoot 系列之 MyBatis输出SQL日志