目录
contents
03
疫情后上海,人口真的流失了么
04
数据血缘落地实施
01
9种最常用数据分析方法,解决90%
分析难题
02
标签的分类、设计及实现方法
驱动力
9种最常用数据分析方法,
解决90%分析难题
关联分析,也叫作“购物篮分析”,是一种通过研究用户消费数据,将不同商品之间进行关联,并挖掘二者之间联系的分析方法。
关联分析目的是找到事务间的关联性,用以指导决策行为。如“67%的顾客在购买啤酒的同时也会购买尿布”,因此通过合理的啤酒和尿布的货架摆放或捆绑销售可提高超市的服务质量和效益。关联分析在电商分析和零售分析中应用相当广泛。
文章来源:一个数据人的自留地
原文链接:https://mp.weixin.qq.com/s/lG8ph-lG719SoYt-ESa_3A
一、关联分析
关联分析需要考虑的常见指标:
· 支持度:指A商品和B商品同时被购买的概率,或者说某个商品组合的购买次数占总商品购买次数的比例。
· 置信度:指购买A之后又购买B的条件概率,简单说就是因为购买了A所以购买了B的概率。
· 提升度:先购买A对购买B的提升作用,用来判断商品组合方式是否具有实际价值。
二、对比分析
对比法就是用两组或两组以上的数据进行比较。对比法是一种挖掘数据规律的思维,能够和任何技巧结合,一次合格的分析一定要用到N次对比。
驱动力
对比主要分为以下几种:
· 横向对比:同一层级不同对象比较,如江苏不同市茅台销售情况。
· 纵向对比:同一对象不同层级比较,如江苏南京2021年各月份茅台销售情况。
· 目标对比:常见于目标管理,如完成率等。
· 时间对比:如同比、环比、月销售情况等,很多地方都会用到时间对比。
聚类分析属于探索性的数据分析方法。从定义上讲,聚类就是针对大量数据或者样品,根据数据本身的特性研究分类方法,并遵循这个分类方法对数据进行合理的分类,最终将相似数据分为一组,也就是“同类相同、异类相异”。
在用户研究中,很多问题可以借助聚类分析来解决,比如,网站的信息分类问题、网页的点击行为关联性问题以及用户分类问题等等。其中,用户分类是最常见的情况。
常见的聚类方法有不少,比如K均值(K-Means),谱聚类(Spectral Clustering),层次聚类(Hierarchical Clustering)。
以最为常见的K-means为例,可以看到,数据可以被分到黄蓝绿三个不同的簇(cluster)中,每个簇有其特有的性质。
留存分析是一种用来分析用户参与情况/活跃程度的分析模型,考查看进行初始行为后的用户中, 经过一段时间后仍然存在客户行为(如登录、消费)。留存不仅是个可以反映客户粘性的指标,更多地反映产品对用户的吸引力。
按照不同周期,留存率分为三类:
第一种是日留存,日留存又可以细分为以下几种:
· 次日留存率:(当天新增的用户中,第2天还登录的用户数)/第一天新增总用户数;
· 第3日留存率:(第一天新增用户中,第3天还有登录的用户数)/第一天新增总用户数;
· 第7日留存率:(第一天新增用户中,第7天还有登录的用户数)/第一天新增总用户数;
· 第14日留存率:(第一天新增用户中,第14天还有登录的用户数)/第一天新增总用户数;
· 第30日留存率:(第一天新增用户中,第30天还有登录的用户数)/第一天新增总用户数。
第二种是周留存,以周度为单位的留存率,指的是每个周相对于第一个周的新增用户中,仍然还有登录的用户数。
第三种是月留存,以月度为单位的留存率,指的是每个月相对于第一个周的新增用户中,仍然还有登录的用户数。
留存率是针对新用户的,其结果是一个矩阵式半面报告(只有一半有数据),每个数据记录行是日期、列为对应的不同时间周期下的留存率。正常情况下,留存率会随着时间周期的推移而逐渐降低。
三、聚类分析
四、留存分析
驱动力
下面以月留存为例生成的月用户留存曲线:
帕累托法则,源于经典的二八法则——“世界上80%的财富掌握在20%的富人手里”。而在数据分析中,这句话可以理解为20%的数据产生了80%的效果,需要围绕找到的20%有效数据进行挖掘,使之产生更大的效果。
帕累托法则一般会用在产品分类上,此时就表现为ABC分类。常见的做法是将产品SKU作为维度,并将对应销售额作为基础度量指标,将这些销售额指标从大到小排列,并计算累计销售额占比。
百分比在 70%(含)以内,划分为 A 类。百分比在 70~90%(含)以内,划分为 B 类。百分比在 90~100%(含)以内,划分为 C 类。
五、帕累托分析
六、象限分析
比如一个商超进行产品分析的时候,就可以对每个商品的利润进行排序,找到前20%的产品,那这些产品就是能够带来较多价值的商品,可以再通过组合销售、降价销售等手段,进一步激发其带来的收益回报。
按照A、B、C分组对产品进行了分类,根据产品的效益分为了三个等级,这样就可以针对性投放不同程度的资源,来产出最优的效益。
象限法是通过对两种及以上维度的划分,运用坐标的方式,人工对数据进行划分,从而传递数据价值,将之转变为策略。象限法是一种策略驱动的思维,常应用在产品分析、市场分析、客户管理、商品管理等场景,像RFM模型、波士顿矩阵都是象限法思维。
下面这个RFM模型就是利用象限法,将用户分为8个不同的层级,从而对不同用户制定不同的营销策略。
驱动力
象限法的优势:
(1)找到问题的共性原因
通过象限分析法,将有相同特征的事件进行归因分析,总结其中的共性原因。例如上面广告的案例中,第一象限的事件可以提炼出有效的推广渠道与推广策略,第三和第四象限可以排除一些无效的推广渠道;
(2)建立分组优化策略
针对投放的象限分析法可以针对不同象限建立优化策略,例如RFM客户管理模型中按照象限将客户分为重点发展客户、重点保持客户、一般发展客户、一般保持客户等不同类型。给重点发展客户倾斜更多的资源,比如VIP服务、个性化服务、附加销售等。给潜力客户销售价值更高的产品,或一些优惠措施来吸引他们回归。
A/Btest,是将Web或App界面或流程的两个或多个版本,在同一时间维度,分别让类似访客群组来访问,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。
A/Btest的流程如下:
1、现状分析并建立假设:分析业务数据,确定当前最关键的改进点,作出优化改进的假设,提出优化建议;比如说我们发现用户的转化率不高,我们假设是因为推广的着陆页面带来的转化率太低,下面就要想办法来进行改进了。
2、设定目标,制定方案:设置主要目标,用来衡量各优化版本的优劣;设置辅助目标,用来评估优化版本对其他方面的影响。
3、设计与开发:制作2个或多个优化版本的设计原型并完成技术实现。
4、分配流量:确定每个线上测试版本的分流比例,初始阶段,优化方案的流量设置可以较小,根据情况逐渐增加流量。
5、采集并分析数据:收集实验数据,进行有效性和效果判断:统计显著性达到95%或以上并且维持一段时间,实验可以结束;如果在95%以下,则可能需要延长测试时间;如果很长时间统计显著性不能达到95%甚至90%,则需要决定是否中止试验。
6、最后:根据试验结果确定发布新版本、调整分流比例继续测试或者在试验效果未达成的情况下继续优化迭代方案重新开发上线试验。
七、ABtest
八、漏斗分析
漏斗思维本质上是一种流程思路,在确定好关键节点之后,计算节点之间的转化率。这个思路同样适用于很多地方,像电商的用户购买路径分析、app的注册转化率等等。
上图是经典的营销漏斗,形象展示了从获取用户到最终转化成购买这整个流程中的一个个子环节。
整个漏斗模型就是先将整个购买流程拆分成一个个步骤,然后用转化率来衡量每一个步骤的表现,最后通过异常的数据指标找出有问题的环节,从而解决问题,优化该步骤,最终达到提升整体购买转化率的目的。
著名的海盗模型AARRR模型就是以漏斗模型作为基础的,从获客、激活、留存、变现、自传播五个关键节点,分析不同节点之间的转化率,找到能够提升的环节,采取措施。
驱动力
用户路径分析追踪用户从某个开始事件直到结束事件的行为路径,即对用户流向进行监测,可以用来衡量网站优化的效果或营销推广的效果,以及了解用户行为偏好,其最终目的是达成业务目标,引导用户更高效地完成产品的最优路径,最终促使用户付费。
如何进行用户行为路径分析?
1、计算用户使用网站或APP时的每个第一步,然后依次计算每一步的流向和转化,通过数据,真实地再现用户从打开APP到离开的整个过程。
2、查看用户在使用产品时的路径分布情况。例如:在访问了某个电商产品首页的用户后,有多大比例的用户进行了搜索,有多大比例的用户访问了分类页,有多大比例的用户直接访问的商品详情页。
3、进行路径优化分析。例如:哪条路径是用户最多访问的;走到哪一步时,用户最容易流失。
4、通过路径识别用户行为特征。例如:分析用户是用完即走的目标导向型,还是无目的浏览型。
5、对用户进行细分。通常按照APP的使用目的来对用户进行分类。如汽车APP的用户可以细分为关注型、意向型、购买型用户,并对每类用户进行不同访问任务的路径分析,比如意向型的用户,他进行不同车型的比较都有哪些路径,存在什么问题。还有一种方法是利用算法,基于用户所有访问路径进行聚类分析,依据访问路径的相似性对用户进行分类,再对每类用户进行分析。
6、最后:根据试验结果确定发布新版本、调整分流比例继续测试或者在试验效果未达成的情况下继续优化迭代方案重新开发上线试验。
九、路径分析
八、漏斗分析
漏斗思维本质上是一种流程思路,在确定好关键节点之后,计算节点之间的转化率。这个思路同样适用于很多地方,像电商的用户购买路径分析、app的注册转化率等等。
上图是经典的营销漏斗,形象展示了从获取用户到最终转化成购买这整个流程中的一个个子环节。
整个漏斗模型就是先将整个购买流程拆分成一个个步骤,然后用转化率来衡量每一个步骤的表现,最后通过异常的数据指标找出有问题的环节,从而解决问题,优化该步骤,最终达到提升整体购买转化率的目的。
著名的海盗模型AARRR模型就是以漏斗模型作为基础的,从获客、激活、留存、变现、自传播五个关键节点,分析不同节点之间的转化率,找到能够提升的环节,采取措施。
驱动力
01 什么是数据标签?
文章来源:数据学堂
原文链接:https://mp.weixin.qq.com/s/qLlTdhqo6yWK2-aNfh-vGg
在开展对数据的各种分析应用之前,如果在数据仓库的基础上再开展一些数据标签的工作,提前做一些准备工作,那么后续对数据应用的设计开发将更加深入、更加便利,也更容易快速交付。
整个数据中台的系统规划如下图所示。从这里可以看到,数据标签介于数据仓库与数据集市之间,在数据仓库之上,是为数据集市做的准备工作。
标签的分类、设计及实现方法
* 数据标签在数据中台中的位置
如果以数据标签为基础再开展各种数据分析与应用,那么对数据的分析利用将更加深入与便捷,这就是数据标签的作用。
标签由标签和标签值组成,打在目标对象上,如下图所示。
* 打标签示例
标签由互联网领域逐步推广到其他领域,打标签的对象也由用户、产品等扩展到渠道、营销活动等。
· 在互联网领域,标签有助于实现精准营销、定向推送、提升用户差异化体验等;
· 在行业领域,标签更多助力于战略分级、智能搜索、优化运营、精准营销、优化服务、智慧经营等。
02 数据标签的分类
对数据打标签,可以由浅入深地分为以下三种类型。
1)属性标签,就是对业务实体各种属性的真实刻画。比如企业类型、所处行业、经营范围、所处地域等信息,用户性别、年龄段、职业状况、身高体重等信息,发票类别、代开发票、作废发票、异常发票等信息。
这些标签可以从某些字段直接获得,也可以通过某些字段进行一个条件判断获得。
2)统计标签,就是对业务实体从某个维度的度量进行的汇总,比如企业的月经营业绩、月增长额、季增长额、前n名的客户或供应商的交易额等。
通过这些统计可以真实地反映该企业的经营状况。
3)算法标签,就是通过某些算法推理得到的特性。算法标签相对比较复杂,但非常有用。它既可以设计得简单易行,如企业的行业地位、交易成功率、客户开拓能力、客户忠诚度、企业成长度等。
也可以运用一些数据挖掘算法进行推算,如通过用户近期的购买商品推算该用户的性别、职业、兴趣喜好、购物习惯,以及是否怀孕、是否有小孩等信息,以便日后的精准营销、商品推荐。
驱动力
事实标签是描述实体的客观事实,关注实体的属性特征,如一个部件是采购件还是非采购件,一名员工是男性还是女性等,标签来源于实体的属性,是客观和静态的。
规则标签是对数据加工处理后的标签,是属性与度量结合的统计结果,如货物是否是超重货物,产品是否是热销产品等,标签是通过属性结合一些判断规则生成的,是相对客观和静态的。
模型标签则是洞察业务价值导向的不同特征,是对于实体的评估和预测,如消费者的换机消费潜力是旺盛、普通还是低等,标签是通过属性结合算法生成的,是主观和动态的。
华为将标签分为事实标签、规则标签和模型标签,如下图所示。
* 三种类型的标签
数据标签通常按照以下步骤分析设计。
1、确定标签对象
数据标签的设计首先从确定标签对象开始。数据标签是规划在数据集市这边的,就意味着它的设计与数据分析业务息息相关。
真实的世界有那么多的事物,每个事物都有那么多的属性,因此漫无目的地打标签没有意义。给什么事物打什么样的标签,一定是与分析业务息息相关的。
数据标签的对象可以是人(个人/群体)、事物与关系,比如用户、企业、订单、发票,以及开票行为、供销关系,等等。
03 数据标签的设计
04 数据标签的实现
给什么对象打标签,关键在于我们对数据分析与应用的兴趣点,对哪些方面的事物感兴趣。譬如,要进行精准营销就要关注用户的购物喜好,要进行防虚开风控就要关注企业开票行为,等等。
2、打通对象关系
很多标签,特别是算法标签,都是通过比对某个对象方方面面的状况推算出来的。如何才能推算呢?就需要通过某些key值将该事物方方面面的属性关联起来。
譬如,将用户通过订单与其购买的商品关联起来,然后又将哪些是婴儿用品关联起来,那么通过这些关联就可以推算某用户是否有了小孩;将企业所处的行业与地域关联起来,同时汇总各行业、各地区的平均水平,就可以推算该企业在本行业、在该地区的经济地位,等等。
3、标签类目设计
确定了标签对象,打通了对象关系,那么就正式进入标签设计环节。
标签的设计首先按类目进行划分,把标签对象按照业务划分成多个不同的方面,接着再依次确认每个类目下都有哪些标签。
通过以上分析,确定了数据标签的对象以及标签的类目,接着就是数据标签的设计实现。
每个标签都有它的规则,通过一系列脚本定期生成。但数据标签设计实现的核心是标签融合表,即标签按照什么样的格式存储在数据库中。
标签融合表的设计通常有两种形式:纵向融合表与横向融合表,如下图所示。
* 标签融合表的设计
驱动力
纵向融合表,就是每个对象的每个标签都是一条记录,如一个用户的每种兴趣偏好都是一条记录,我们能识别出他的多少种兴趣偏好是不确定的。
纵向融合表的设计比较灵活,每个对象的标签可多可少,我们也可以自由地不断增加新的标签。然而,每个对象的每个标签都是一条记录,会导致数据量比较大。
横向融合表,就是将一个对象的多个标签按照字段放到一个表中。由于多个标签都放到了这一条记录中,因此横向融合表的每个对象一条记录,可以大大降低标签的数据量。
然而,一旦需要增加新的标签,就需要修改表结构,从而增加新字段。这样,不仅需要修改标签生成程序,还要修改标签查询程序,维护成本较高。因此,横向融合表往往应用于那些设计相对固定的属性标签或统计标签。
华为标签管理分为标签体系建设和打标签。
1、标签体系建设
(1)选定目标对象,根据业务需求确定标签所打的业务对象,业务对象范围参考公司发布的信息架构中的业务对象。
(2)根据标签的复杂程度进行标签层级设计。
(3)进行详细的标签和标签值设计,包括标签定义、适用范围、标签的生成逻辑等
· 事实标签应与业务对象中的属性和属性值保持一致,不允许新增和修改。
· 规则标签按照业务部门的规则进行相关设计。
· 模型标签根据算法模型生成。
2、打标签
(1)打标签数据存储结构
打标签是建立标签值与实例数据的关系,可以对一个业务对象、一个逻辑数据实体、一个物理表或一条记录打标签。
05 华为数据标签管理体系
为了方便从“用户”视角查找、关联、消费标签,可增加用户表,将标签归属到该“用户”下,这里的“用户”是泛指,可以是具体的人,也可以是一个组织、一个部门、一个项目等。
(2)打标签的实现方法
事实标签:根据标签值和属性允许值的关系由系统自动打标签。
规则标签:设计打标签逻辑由系统自动打标签。
模型标签:设计打标签算法模型由系统自动打标签。
驱动力
疫情后上海,人口真的流失了么
来源:真叫卢俊(ID:zhenjiaolujun0426)
原文链接:https://mp.weixin.qq.com/s/VF128e4Fb7sHWKklwIN0qQ
上海到底因为这次疫情,流失了多少人口?
有人说1天1万,有人说到现在已经走了500万了。
曾经这个话题一度成为了网上舆论关注的焦点,上海这座城市,也因此深陷漩涡中心。
疫情后,上海真的在经历一场前所未有的人口流失吗?
或许看完这篇文章,对于这个争议话题,你会有更客观的判断和答案。
01
第一个数据,是关于地铁客流量的。
我想没有什么数字比地铁客流量能更真实的反映出上海人口情况。
上海是一座超级通勤大都市,每天乘坐地铁通勤的人达到千万级别以上,这个数字排名全国第一,全世界仅次于首尔。
因此,如果上海人口真的外流严重,地铁总客流量一定会大幅下降的,其实整个疫情期间,我们团队对上海地铁客流量做过一次全记录。
大家可以先看下当时居家隔离的我们,统计的数据情况:
这是上海地铁今年2-3月份每天的客运量。
你会发现在之前正常生活的节奏中,基本上工作日的时候上海地铁每天保持1000万人次的流量,在双休日在600-800万左右;
但是疫情袭来之后我们可以发现,工作日的数字只有200万,双休日下滑到了100万,从1000万到200万,这是一个巨大的变化,整个城市的节奏也明显的慢了下来。
这个数值不能说不大。
那么解封后上海地铁总客流量恢复得如何了?
可以看到,其实在整个6-7月份,上海日均客流量是没有恢复到正常水平的。
六月工作日日均只有800万左右、周末双休日400万
七月稍微好一点,工作日900万,周末双休500万
但是八月之后上海地铁客流量就稳步上升,到了九月整个上海的地铁客流已经恢复到正常。
工作日1100-1200万,周末600万的水平
然后我们拉一下总体的数据只这样的:
驱动力
最后放一张我假期前上午9点25在虹桥火车站,乘坐地铁2号线前往静安寺的实景图片,从这样的人潮汹涌的场景中。
身为他们其中一份子,我相信这座城市已经满血复活,但是疫情封控肯定是会加剧城市短时间的迁入和迁出的。
那么,上海最近三个月的迁入迁出情况如何?
从迁出数据来看,上海六月开始迁出的规模指数有缓慢上升提高的趋势,但结合全年数据来看,上海迁出最大的时间节点并不是在疫情后,而是春节期间和中秋节达到峰值。
那如果同样是迁出数据,今年6月-8月,和去年相比有没有变化呢?
除了百度地图,我们还找到另一个数据,从这个图中可以看到,上海在今年1月份人口流出达到了极大值,净流出411万人,这个数字在2月并没有达到平衡。
伴随着上海封控,地铁运输的客流量停滞,最低的时候只有1000人
不过6月1日上海解封后,整个地铁客流量跟着复工复产的节奏,逐步恢复到了往日常态。
每日都会发布关于这个城市地铁日均客流量数据,我相信这是上海人口没有新闻中那样大幅度流失的最好证明。
02
关于这一点,在百度地图上,详细记录了上海每天的迁徙规模指数,有迁入和迁出两个维度。
驱动力
03
还有一个非常直观的数据维度:上海企业和个税收入规模有没有减少?
如果上海在疫情后直接走了几百万人,那么不管是企业还是个人所得税,肯定是会断崖式下跌的。
很明显,上海依然在疫情后表现出来非常强势的税收体量。
我们通过上海统计局官网可以查到:
不论是企业所得税规模,还是个人所得税规模,目前上海上半年都没有受到疫情影响,甚至2022年高于同期2021年的水平,在全国也依旧保持高位,一直第一的水平。
所以,我们可以推断出从正式封控的3月,到解封的第一个月6月,上海没有出现大幅的人口流出的情况。
当然,这里还缺了7、8月的数据,第三季度上海的企业所得税,和个人所得税规模,大概率会在今年10月公布,到时候我们也将为大家持续关注。
按照这个走势看来,我们依然对上海的经济活力保持相对乐观,持有信心。
04
众所周知,上海是一座流动人口巨大的城市。
根据第七次人口普查数据情况来看,目前上海常住人口共2487万,其中外省市来沪常住人口就有1047万。
上海每两个人,就有一个是流动人口。
另外能够反映这座城市流动人口变动情况的,还有租赁市场。
如果上海疫情后流动人口暴跌500万,恐怕这两个月受到影响最大的应该就是租赁市场了吧。
但是不仅解封后租金有一小波上涨,从最近一个月的挂牌租赁房源价格来看,大部分也在涨价,比如说涨的最狠的是几个区,松江、嘉定、普陀。
这意味着有60万人在春节后没有回到上海,这也是这座城市的特点。
反而是疫情后,上海月度人口流动数据值得我们进一步关注。
从五月开始,上海每月净流出人口规模达到了67万、55万、90万、33万
如此一加起来,总共流出245万。
不过如果用这个数字来佐证上海人口的流出也不免牵强。
毕竟从去年的4月开始,每个月也都有差不多30万的人口流出。
所以我们看到,疫情后流出上海的人口规模,其实没有增加到很夸张的程度。
驱动力
05
我想表达什么?
其实并不是想要反驳什么。
疫情解封后的确有人正在离开上海,比如当初画面里的那些人,他们可能短暂停留在上海就遇到了疫情;
从城市的维度来比较,放在全国来看,上海5月份在克而瑞监控的房源租金同环比TOP10涨幅城市里也排在了第二,仅次于天津。
让人意外的是,上半年饱受疫情影响,甚至被预言人口将大量流失的上海,租金不仅没降,反而还涨了不少,来自克而瑞的数据也佐证了这一点。
2022年1月以来,55城个人房源租金连续8个月同比下降,同比2021年8月下跌的城市更是达到了43个,租金同比下跌的城市比列高达78%
而8月上海租金108.8元/㎡/月,较7月环比上涨5.29%,较2021年8月同比上涨9.52%,是55个主要城市中同比涨幅排名第二的城市。
这个数据虽然不能够直接推断上海的人口没有大幅流失。
但是可以从另一个角度反向推论,上海人口大幅流失的观点是有漏洞的。
如果上海人口直接走了500万,我相信整个城市租赁市场迎来的将会是一波很大的震荡,同样,我们最近做了一个上海商场空置率的选题:
实地走访了上海几个被点名空置率奇高的商场,不仅没有看到传闻中那般人走茶凉的商场。
反而看到,在便是工作日的情况下,我们看到几个商场依然人气很足,甚至排起了长队。
所以,不论是个人房源,商场商铺,还是办公楼的租赁情况,我们依然没有办法看到可以证明上海人口大幅流失的情况。
驱动力
比如很多当初的港台明星选择暂时离开上海,因为他们的工作实在需要全国跑;
......
疫情确实动摇了不少人对定居在这座城市的想法,但那毕竟是少数。
很奇怪的是,上海解封后的第一个月,我们看到这样的新闻已经麻木到习以为常了
多少多少万人正在离开上海,标题很有吸引力,配图也有带着一定的情绪。
将疫情后的上海塑造成一座空城的形象,很大程度上上海也被这样给妖魔化了。
我们最后来看两组组数据:
上海财政收入虽然同比去年减少了900多亿,但是在全国依然保持全国第一
上半年上海整个城市还是创造了2万亿的GDP,排名仅次于北京位列第二。
所以,我们有理由对这座经济和产业底蕴强大的城市,依然怀抱着更多的信心。
驱动力
数据血缘落地实施
在复杂的社会分工协作体系中,我们需要明确个人定位,才能更好的发挥价值,数据也是一样,于是,数据血缘应运而生。
今天这篇文章会全方位的讲解数据血缘,并且给出具体的落地实施方案。
感谢公司团队:蔡博士、李璐、群华、石峰、盛文的顶层设计、需求描述、技术支持、前端实现等。
感谢857社区:幻星的亮点思路,赖志明和黎明星的审核,李俊与阿丞的思考与反馈。
一、数据血缘是什么
数据血缘是在数据的加工、流转过程产生的数据与数据之间的关系。
提供一种探查数据关系的手段,用于跟踪数据流经路径。
二、数据血缘的组成
1、数据节点
数据血缘中的节点,可以理解为数据流转中的一个个实体,用于承载数据功能业务。例如数据库、数据表、数据字段都是数据节点;从广义上来说,与数据业务相关的实体都可以作为节点纳入血缘图中,例如指标、报表、业务系统等。
按照血缘关系划分节点,主要有以下三类:流出节点->中间节点->流入节点
文章来源于857Hub ,作者大数据李奇峰
原文链接:https://mp.weixin.qq.com/s/7gY97Zn98ZdV02m20mLOnA
流出节点: 数据提供方,血缘关系的源端节点。
中间节点: 血缘关系中类型最多的节点,既承接流入数据,又对外流出数据。
流入节点: 血缘关系的终端节点,一般为应用层,例如可视化报表、仪表板或业务系统。
2、节点属性
当前节点的属性信息,例如表名,字段名,注释,说明等。
3、流转路径
驱动力
4、流转规则-属性
流转规则体现了数据流转过程中发生的变化,属性则记录了当前路径对数据的操作内容,用户可通过流转路径查看该路径规则与属性,规则可以是直接映射关系,也可以是复杂的规则,例如:
数据映射: 不对数据做任何变动,直接抽取。
数据清洗: 表现数据流转过程中的筛选标准。例如要求数据不能为空值、符合特定格式等。
数据转换: 数据流转过程中,流出实体的数据需要进行特殊处理才能接入到数据需求方。
数据调度: 体现当前数据的调度依赖关系。
数据应用: 为报表与应用提供数据。
三、我们为什么需要数据血缘
1、日益庞大的数据开发导致表间关系混乱,管理成本与使用成本激增
数据血缘产生最本质的需求。大数据开发作为数据汇集与数据服务提供方,庞大的数据与混乱的数据依赖导致管理成本与使用成本飙升。
数据流转路径通过表现数据流动方向、数据更新量级、数据更新频率三个维度的信息,标明了数据的流入流出信息:
数据流动方向: 通过箭头的方式表明数据流动方向
数据更新量级: 数据更新的量级越大,血缘线条越粗,说明数据的重要性越高。
数据更新频率: 数据更新的频率越高,血缘线条越短,变化越频繁,重要性越高。
2、数据价值评估,数据质量难以推进
表的优先级划分,计算资源的倾斜,表级数据质量监控,如何制定一个明确且科学的标准。
3、什么表该删,什么表不能删,下架无依据
业务库,数仓库,中间库,开发库,测试库等众多库表,是否存在数据冗余(一定存在)。以及存储资源如何释放?
4、动了一张表,错了一堆表
你改了一张表的字段,第二天醒来发现邮件里一堆任务异常告警。
5、ETL任务异常时的归因分析、影响分析、恢复
承接上个问题,如果存在任务异常或者ETL故障,我们如何定位异常原因,并且进行影响分析,以及下游受影响节点的快速恢复。
6、调度依赖混乱
数据依赖混乱必然会带来调度任务的依赖混乱,如何构建一个健壮的调度依赖。
7、数据安全审计难以开展
针对银行、保险、政府等对安全关注度较高的行业,数据安全-数据泄露-数据合规性需要重点关注。
由于数据存在ETL链路操作,下游表的数据来源于上游表,所以需要基于数据全链路来进行安全审计,否则可能会出现下游数据安全等级较低,导致上游部分核心数据泄露。
四、数据血缘可以做什么
1、流程定位,追踪溯源
3、流转路径
驱动力
通过可视化方式,将目标表的上下游依赖进行展示,一目了然。
2、确定影响范围
通过当前节点的下游节点数量以及类型可以确定其影响范围,可避免出现上游表的修改导致下游表的报错。
3、评估数据价值、推动数据质量
通过对所有表节点的下游节点进行汇总,排序,作为数据评估依据,可重点关注输出数量较多的数据节点,并添加数据质量监控。
5、归因分析,快速恢复
当某个任务出现问题时,通过查看血缘上游的节点,排查出造成问题的根因是什么。同时根据当前任务节点的下游节点进行任务的快速恢复。
6、梳理调度依赖
可以将血缘节点与调度节点绑定,通过血缘依赖进行ETL调度。
7、数据安全审计
数据本身具有权限与安全等级,下游数据的安全等级不应该低于上游的安全等级,否则会有权限泄露风险。
可以基于血缘,通过扫描高安全等级节点的下游,查看下游节点是否与上游节点权限保持一致,来排除权限泄露、数据泄露等安全合规风险。
五、数据血缘落地方案
目前业内常见的落地数据血缘系统以及应用,主要有以下三种方式:
1、采用开源系统:
Atlas、Metacat、Datahub等
驱动力
采用开源系统最大的优点是投入成本较低,但是缺点主要包括
1. 适配性较差,开源方案无法完全匹配公司现有痛点。
2. 二开成本高,需要根据开源版本进行定制化开发。
2、厂商收费平台:
亿信华辰,网易数帆等
4、提供数据下架依据
例如以下数据节点,无任何下游输出节点,且并无任何存档需求,则可以考虑将其下架删除。
驱动力
2、构建元数据管理系统
目前市面上所有的血缘系统都需要依赖于元数据管理系统而存在。
元数据作为血缘的基础,一是用于构建节点间的关联关系,二是用于填充节点的属性,三是血缘系统的应用需要基于元数据才能发挥出最大的价值。所以构建血缘系统的前提一定是有一个较全面的元数据。
3、技术选型:图数据库
目前业内通常采用图数据库进行血缘关系的存储。
对于血缘关系这种层级较深,嵌套次数较多的应用场景,关系型数据库必须进行表连接的操作,表连接次数随着查询的深度增大而增多,会极大影响查询的响应速度。
而在图数据库中,应用程序不必使用外键约束实现表间的相互引用,而是利用关系作为连接跳板进行查询,在查询关系时性能极佳,而且利用图的方式来表达血缘关系更为直接。
下图为图数据库与关系型数据库在查询人脉时的逻辑对比:
此类数据平台中会内置数据血缘管理系统,功能较为全面,使用方便。但是同样也有以下缺点:
1. 贵
2. 需要ALL IN平台,为保障数据血缘的使用,数据业务需要全部迁移到厂商平台中。
3、自建
通过图数据库、后端、前端自建数据血缘管理系统,此方案开发投入较大,但是有以下优点
1、因地制宜,可根据核心痛点定制化开发元数据及数据血缘系统。
2、技术积累,对于开发人员来说,从0-1开发数据血缘系统,可以更深刻的理解数据业务。
3、平台解耦,独立于数据平台之外,数据血缘的开发不会对正常业务造成影响。
接下来我们讲讲如何自建数据血缘系统
六、如何构建数据血缘系统
1、明确需求,确定边界
在进行血缘系统构建之前,需要进行需求调研,明确血缘系统的主要功能,从而确定血缘系统的最细节点粒度,实体边界范围。
例如节点粒度是否需要精确到字段级,或是表级。一般来说,表级粒度血缘可以解决75%左右的痛点需求, 字段级血缘复杂度较表级血缘高出许多,如果部门人数较少,可以考虑只精确到表级粒度血缘。
常见的实体节点包括:任务节点、库节点、表节点、字段节点、指标节点、报表节点、部门节点等。血缘系统可以扩展数据相关的实体节点,可以从不同的场景查看数据走向,例如表与指标,指标与报表的血缘关系。但是实体节点的范围需要明确,不可无限制的扩展下去。
明确需求,确定节点粒度与范围之后,才可根据痛点问题给出准确的解决方案,不至于血缘系统越建越臃肿,提高ROI(投入产出比)。
驱动力
(2)节点操作:
基于可视化的血缘节点与当前节点附带的元数据属性,我们可以设想一些自动化操作例如:
节点调度:直接基于血缘开启当前表节点的调度任务
属性修改:通过前端修改当前节点的元数据属性并保存
6、血缘统计分析
数据血缘构建完成后,我们可以做一些统计分析的操作,从不同层面查看数据的分布与使用情况,从而支撑业务更好更快更清晰。
以我们团队举例,在工作过程中,我们需要以下血缘统计用于支撑数据业务,例如:
数据节点下游节点数量排序,用于评估数据价值及其影响范围
4、血缘关系录入:自动解析and手动登记
自动解析:
获取到元数据之后,首先可以根据元数据表中的SQL抽取语句,通过SQL解析器可自动化获取到当前表的来源表【SQL解析器推荐jsqlparse】,并进行血缘关系录入。
手动登记:
如果当前表无SQL抽取语句,数据来源为手动导入、代码写入、SparkRDD方式等无法通过自动化方式确定来源表的时候,我们需要对来源表进行手动登记,然后进行血缘关系的录入。
5、血缘可视化
血缘系统构建完成后,为了能够更好的体现血缘价值,量化产出,需要进行血缘可视化的开发,分为两步:
(1)链路-属性展示:
根据具体节点,通过点击操作,逐级展示血缘节点间的链路走向与涉及到的节点属性信息。
驱动力
7、血缘驱动业务开展
数据血缘构建完成,统计分析结果也有了,业务痛点也明确了,接下来我们即可利用数据血缘驱动业务更好更快开展。
我们团队目前落地的血缘相关业务有以下几点:
(1)影响范围告警:
将血缘关系与调度任务打通,监测当前血缘节点的调度任务,如果当前节点调度出现异常,则对当前节点的所有下游节点进行告警。
(2)异常原因探查:
还是将血缘关系与调度任务打通,监测当前血缘节点的调度任务,如果当前节点调度出现异常,则会给出当前节点的直接上游节点,用于探查异常原因。
(3)异常链路一键恢复:
基于上一应用,异常原因定位并且修复完成之后,可以通过血缘系统,一键恢复当前数据节点的所有下游节点调度任务,真正实现一键操作。
(4)支撑数据下架:
目前团队已经根据探查孤岛节点即无上下游节点的节点,累计归档数据表628张,节省了13%的存储空间。
(5)数据质量监控:
查询当前节点的所有上游节点,用于业务追踪溯源
数据节点输出报表信息详情统计,用于报表的上架与更新
查询孤岛节点,即无上下游节点的节点,用于数据删除的依据
驱动力
准确率是数据血缘中最核心的指标,例如影响范围告警,血缘的缺失有可能会造成重要任务没有被通知,造成线上事故。
我们在实践中通过两种途径,尽早发现有问题的血缘节点:
人工校验: 通过构造测试用例来验证其他系统一样,血缘的准确性问题也可以通过构造用例来验证。实际操作时,我们会从线上运行的任务中采样出一部分,人工校验解析结果是否正确。
用户反馈: 全量血缘集合的准确性验证是个漫长的过程,但是具体到某个用户的某个业务场景,问题就简化多了。实际操作中,我们会与一些业务方深入的合作,一起校验血缘准确性,并修复问题。
2、覆盖率
定义: 当有数据资产录入血缘系统时,则代表数据血缘覆盖了当前数据资产。被血缘覆盖到的数据资产占所有数据资产的比例即为血缘覆盖率。
血缘覆盖率是比较粗粒度的指标。作为准确率的补充,用户通过覆盖率可以知道当前已经支持的数据资产类型和任务类型,以及每种覆盖的范围。
在内部,我们定义覆盖率指标的目的有两个,一是我方比较关注的数据资产集合,二是寻找当前业务流程中尚未覆盖的数据资产集合,以便于后续血缘优化。
当血缘覆盖率低时,血缘系统的应用范围一定是不全面的,通过关注血缘覆盖率,我们可以知晓血缘的落地进度,推进数据血缘的有序落地。
3、时效性
定义: 从数据资产新增和任务发生修改的时间节点,到最终新增或变更的血缘关系录入到血缘系统的端到端延时。
对于一些用户场景来说,血缘的时效性并没有特别重要,属于加分项,但是有一些场景是强依赖。不同任务类型的时效性会有差异。
例如:故障影响范围告警以及恢复,是对血缘实时性要求很高的场景之一。如果血缘系统只能定时更新T-1的状态,可能会导致严重业务事故。
提升时效性的瓶颈,需要业务系统可以近实时的将任务相关的修改,以通知形式发送出来,并由血缘系统进行更新。
对当前血缘中所有节点输出的下游节点数量进行排序,可以精确的判断某张表的影响范围大小,从而可以根据此对高排序表进行数据质量的监控。
(6)数据标准化监控:
如果当前公司制定了基于库、表、字段的命名规范,我们可以通过探查血缘中的所有数据节点,并命名规范进行匹配,得到不符合规范的库、表、字段进行整改。
当然了,此业务仅基于元数据也可实现,放在此处属于博主强行升华了。
(7)数据安全审计:
团队基于用户职级、部门、操作行为等权重对目前的库表进行了数据权限等级划分,权限等级越高,当前表的安全级别越高。
团队基于血缘进行数据全链路的安全等级监测,如果发现下游节点安全等级低于上游节点,则会进行告警并提示整改。确保因为安全等级混乱导致数据泄露。
八、血缘系统评价标准
在推动数据血缘落地过程中,经常会有用户询问:血缘质量如何?覆盖场景是否全面?能否解决他们的痛点?做出来好用吗?
于是我也在思考,市面上血缘系统方案那么多,我们自建系统的核心优势在哪里,血缘系统的优劣从哪些层次进行评价,于是我们团队量化出了以下三个技术指标:
1、准确率
定义: 假设一个任务实际的输入和产出与血缘中该任务的上游和下游相符,既不缺失也不多余,则认为这个任务的血缘是准确的,血缘准确的任务占全量任务的比例即为血缘准确率。
电话:15801365057
邮箱:kai.zhao@yeepay.com
地址:朝外大街甲6号