白话数据产品(二)——SQL入门

作为数据产品,一项基础工作即是为需求方取数据,一般来说简单的取数数据产品是要兼顾的,复杂的取数才会升级到研发来取,毕竟研发们都很忙嘛,小事我们自己也可以搞定的。

一、SQL思路3分钟入门

SQL可以实现的功能很多,建表、删表、插入数据、查询数据...这里主要介绍查询数据的SQL一般写法,SQL语言的主要逻辑也是在查询语句这一块。

传统MySQL类数据库或大数据中,用到的Hive数据库是按行索引的,可以理解为一条一条的记录,而且大数据用到的HSQL其实跟传统SQL语句基本是一致的。

我们常见的对数据的处理主要是这么几种:根据条件筛选数据,将记录字段横向合并,将记录纵向合并,而这对应的就是SQL语句中的查询/子查询、各种JOIN、UNION ALL。那种看似很长很复杂的SQL代码,其实也就是这三种操作的结合体。

如下图所示:可以理解为数据库查询就是将多份数据查出来,互相关联合并,生成一张新的表单,然后可以在新的表单的基础上进行查询或者再跟其他数据关联合并。

  • 子查询:通过条件从一张或多张表中选取出数据,你可以理解多张表的查询,其实就是像图中所示加了一些join和union all的连接操作。如果只是从一张表中查询,那么就只用关心这张表的记录结构,是否有重复记录等。
  • JOIN:相当于是对两份数据进行取并集、交集或其他集合方式的操作,是对两张表的字段进行了横向拼接,需要指定拼接的连接关系是用的哪个字段。比如:同一个用户,在一张表里记录了他的年龄,在另一张表里记录了他的性别,那么通过join操作就可以把这两个字段放到同一张新的表中,然后可以在这张新的表的基础上再进行其他操作。
  • UNION ALL:相当于是把记录纵向叠加,比如:因为数据量比较大,业务库进行了拆表操作,将1-6月份数据放在表A,将7-12月份数据放在表B。因为是同样的记录,字段都是一致的,通过union all就可以做成一张新的表,同时包含A和B的数据在里面。

这里我都没有使用具体的SQL举例,因为展开来将可能会有很大的篇幅。想要进一步深入的同学,可以去查看相关的SQL教程,按照上面介绍的思路去学习,就不会感到迷茫了。

2. HSQL vs SQL

数据工作中,既要用SQL语句去业务库里查询对比数据,又要会使用HSQL在自己的平台(一般是Hue中的Hive)中查询。两种语言除了个别函数不通用,基本是一致的。

这里举一些例子说明:

  • Hive中不支持not in操作,一般使用not exists代替,或者left outer join。
  • Hive的切片机制(上一篇有解释)导致取数需要加上条件使用的是哪天的数据。
  • Hive的分层机制(同样上一篇有解释)导致在不同层级进行取数,逻辑是大不相同的。ODS层同一条id记录可能有大量不同时间更新的“重复数据”,要注意进行按一定顺序的去重处理。
  • Hive中某些层级的数据中对时间的存储可能为unix timestamp格式,表现为一长串数字而不是常见的时间格式,需要在使用中进行转化。
  • Hive中可以使用多种数据计算框架,比如:MapReduce、Spark等,在不同情况下选用可以获得更好的效率。

相关阅读

白话数据产品(一):数据仓库

 

作者:小九0416,一枚互金数据产品

本文由 @小九0416 原创发布于CSDN。未经许可,禁止转载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值