一个取数工人的基本素养

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)


一个取数工人的基本素养_第1张图片
a1dfc27eb47454d76c3e1f7b06a8da51.png

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


一个取数工人的基本素养_第2张图片
Visual_SQL_JOINS_orig.jpg

比sql更重要的

写sql要占到数据分析师的一般甚至更多的时间,但也是基础工作。所以,如何更快更好地取数也是数据分析师的一个重要能力。

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

我的tableau public :https://public.tableau.com/profile/yangliang7968#!/

你可能感兴趣的:(一个取数工人的基本素养)