sql 大法好而且很重要
要做分析,首先要有数据。数据分析师要分析的数据一般来自于数据库(不管是业务库还是数仓中间表)slect * from table
,这个语句是取数的精髓,无论是多么复杂的取数需代码都是这一句演化而来的。
sql的几种主要语法
- join
- group by
- order by
- union
其中,join 是最常用的语法。
jion中又可以分为(以 table a 和 table b 为例) - left join 左外联结,以table a 为主表,去table b 里寻找匹配的记录
slect * from table a ta left join table b tb on a.id=b.id
- right join 右外联结,以table b 为主表,去table b 里寻找匹配的记录
slect * from table a ta right join table b tb on a.id=b.id
- full join 外联结,匹配table a 和 table b 的所有记录,只要有一个表包含即可
slect * from table a ta full join table b tb on a.id=b.id
- inner join 内联接,匹配table a 和table b 都有的记录,两个表必须同时包含
slect * from table a ta inner join table b tb on a.id=b.id
用常见的韦恩图来表示就很容易看明白了(图片来自@mzlogin)

这四种jion 配合返回字段是否为空,还可以扩展出其他的写法,也用韦恩图来表示一下(图片来自@C.L.Moffatt)

比sql更重要的
写sql要占到数据分析师的一般甚至更多的时间,但也是基础工作。所以,如何更快更好地取数也是数据分析师的一个重要能力。
- 限定时间:取数的速度是一点一点练上来的,之前做过的需求,给自己限定时间重新做一遍,看每次卡到的点在哪里。
- 固化口径:部分需求是重复的,不用每次都去构思。将经常出现的主要逻辑与指标固化下来,不断复用。
- 多一种可能:不要停留在取数的熟练区,不要觉得取数也是必须的工作 一样的完成价值。需求和需求是有价值之分的,优先做高价值需求;熟练了一种写法,是否换个写法是否可以实现的更快更好?熟练了某条业务线的需求,换个业务线的需求是否可以驾轻就熟?
- 拒做取数机:先说重点,数据分析师不了解业务就是扯淡。不了解业务,不主动去问why,不主动思考业务方的需求是否合理,不和业务方主动沟通,这样数据分析师就是死路一条的机器。
我的tableau public :https://public.tableau.com/profile/yangliang7968#!/
网友评论