一、构建指标体系的套路 @数据建设
Step1. 做加法 —— 核心目标层层层…层层层拆解
一次总销量的巨大滑坡可能与一件最末端的微不足道的小事有关,正如一只蝴蝶在巴西轻拍翅膀,可以导致一个月后德克萨斯州的一场龙卷风。分析一个我们赖以生存的核心指标,面面俱到、刨根问底绝不是多虑。
相比于头脑风暴环节天马行空的发散型思维,为了避免遗漏细枝末节,在开始构建指标体系时,我们更倾向于信赖数学公式。最简单的加减乘除四则运算就可以帮助我们实现目标,比如销量就可以找到至少3条不同的数学公式来表示推导(具体略),销量拆解出了一堆二级小目标们……重复拆解工作,直到指标细到无法再分割,找到足以影响核心目前的局部因素。
此时我们得到了一个汇集大量指标的拥挤的脑图。
Step2. 做减法 —— 关注指标与维度
此时如果仔细观察拥挤的脑图,可以发现它并不十分让人满意,出现在你眼前的是很多冗余的信息,譬如大多数指标都带着优惠前、优惠后、品牌用户、非品牌用户的前缀,此时引入维度也许能缓解这种拥挤,如果说指标多数情况下指被观察事物的数值考量,那么维度可以理解为观察事物的角度。如时间、类别都是典型的维度,这些维度帮助我们从不同视角观察事物的变化、分布。
然而,是否将指标合二为一以维度进行替代不能一概而论,譬如对于品牌用户、非品牌用户,我们时长需要将两者的消费数据进行对比,于是将前者或后者抹去以维度替代就不是那么合理了。
说回做减法,除去合适使用维度减少指标,从业务角度也需要对哪些指标有意义进行判断,比如我们一厢情愿的将用户数拆分为品牌用户数和非品牌用户数,而实际的状况是我们并不能统计到非品牌用户的任何信息,那么至少在本期,我们可以去除一些无意义的指标了。
Step3. 调结构 —— 面向对象输出
时刻记得你的输出结果面向的是人类,不同对象关注的点有着天壤之别,譬如相比于某个小客户的为每次活动补贴了100大洋,CEO可能更想知道这个月公司预计的收入是多少。
二、懒人测试脚本方法 @数据提取
- 悄悄插入一条测试数据,观察增量部分导致的数据结果变化是否符合预期
- 简单粗暴的复制表结构,建立一模一样的测试表结构用于测试,与杂乱庞大数据说再见
- 在脚本中,将可能有问题的部分输出查看结果
三、谜一样的Python模块 @数据提取
Python中,每个.py文件被称之为模块,每个具有__init__.py文件的目录被称为包。只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包,其中site-packages 是包存储的最佳位置选择。
|
|
这里顺带提一嘴常见的导入模块的姿势:
- import module
- from module import method
- from module import *
书上说:命名冲突可能发生在很隐蔽的角落,因此除非真的需要from这个形式的模块导入语句,否则应该坚持使用普通的import,这种做法在少数情况下是挺方便的,但是这样也会打乱你的命名空间。
例如,你可能定义了一个与导入模块中名称相同的变量或函数,这时如果你试图使用os
模块中的同名变量或函数,实际使用的将是你自己定义的内容。因此,你最后可能会碰到一个相当让人困惑的逻辑错误。
四、其他印象深刻的糟心事
- 装包超时超时超时…(1kb/s…)
装MaxCompute提供给Python的ODPS,pip default timeout = 1000 都不管用,索性换个源,安装阿里云pip镜像,速度快到飞起。
创建.pip文件夹,创建pip.conf,配置[global]:
trusted-host = mirrors.ustc.edu.cn
index-url = https://mirrors.ustc.edu.cn/pypi/web/simple