今天我们来和大家聊一聊一个新话题,一个对于企业业务发展十分关键的东西——指标。
指标建设是衡量企业业务效果的主要依据,本文结合自身实践经验和大家分享指标的设计与加工过程,讲述其基础概念和设计加工方法,以及设计加工过程中的注意点,希望对感兴趣的同学有所帮助。
指标是客观描述某个事物某个特征的可量化的数字度量,如用户最近30天购买次数,某商品最近30天销售额等。
指标常从多个维度来描述,如某地区的新增用户数、线上线下的新增用户数,维度让指标更加具象与丰满。
大数据时代数字化转型背景下,企业所需要的往往不单单是数据,而是数据背后映射的业务洞察,相比较数据我们更加关心的是其体现的业务价值以及覆盖的业务场景。
庞大的数据只有和业务相结合转化为信息,经过处理呈现才能真正体现他们的价值。
指标作为数据计算的结果,是直接反映衡量业务效果的依据,应用在企业的方方面面,如数据报表、分析平台及日常取数等。
● 数据报表
它是直接的指标结果查看的载体,作为业务部门的人,可能每月或者每周甚至每天都要输出业务报表,不管是传统的纸质文档,线上的excel还是后来的报表工具,最终目的都是一样,我们希望通过报表实现数据驱动业务精益增长的目的。
● 分析平台
作为数据计算结果多样化展示的平台,不管是可视化大屏,还是其他一些BI系统,都是通过数据计算结果的呈现,更好地辅助业务了解行业现状。
● 日常取数
有数据在哪里,便要去哪里拿,取数的过程,往往是基于不同的业务场景,满足不同的业务需求,对数据进行加工计算获取,当然在这过程中,数据计算结果往往需要保证较高的准确性和一致性。
数据指标作为数据计算的结果,是企业数据价值的直观体现。在业务扩张、指标计算需求的暴增背景下,随之而来的指标管理问题也越来越多:
指标管理不统一:管理机制不统一、分散管理、重复建设、成本高、费时费力
指标口径不一致:同名不同义、同义不同名、计算逻辑复杂多变、开发技术门槛高,过程不可视
指标流程不规范:没有统一的流程控制,开发和使用人员分离,沟通成本高、周期长,结果可信度不高
要解决以上问题,帮助企业建立指标体系,我们需要从以下三个方面入手:
● 指标平台
建立统一的指标管理平台,集中管理数据指标,沉淀指标资产。
● 指标体系
有一套标准规范的指标搭建方法论,搭建企业级数据指标体系。
● 流程管理
搭载统一的流程控制机制,全面把控数据指标的生命周期。
如果是平台、流程是基础,那指标内容的搭建便是关键。指标体系的搭建作为整个指标管理的核心,为指标管理提供最坚实的基础支撑。
总结以下五个步骤,从0到1搭建指标体系:

搭建指标体系的第一步就是明确搭建目标,大部分企业由于目标不清晰造成指标管理混乱,通过指标体系的搭建,我们要实现“一个指标、一个口径、一次加工、多次使用”,做到统一指标口径,减少重复工作,结果统一输出。
● 统一关键指标
创建公司级统一的关键指标,帮助企业通过统一的指标框架来助力业务扩张。
● 减少重复工作
为每一个成员提供统一的平台来协同,了解企业整体数据业务情况,减少数据团队重复性工作和时间花费。
● 结果统一输出
针对指标结果,提供一套能将指标和上层应用结合起来的输出方式,发挥数据指标最大的价值。
明确目标之后,我们开始着手去构建指标体系,在设计指标之前,我们首先要进行需求分析。
同一个企业,不同的业务线、不同的部门,甚至是同一部门的不同人员,提出来的指标计算需求都会有所不同。所以在需求分析的阶段,我们要做到基于不同行业的业务情况,分析数据指标需求,合理划分主题,更好地为后续指标设计提供业务支撑。
1)需求调研
● 主导人
数据分析师,数仓架构师;
● 调研方式
列好提纲,面对面访谈;
● 调研内容
· 指标应用场景调研:指标应用在哪些业务场景中,应用方式有哪些(BI使用、业务人员自行取数、数据门户展现等)
· 指标来源调研:指标加工的源数据来源于哪些系统,数据是否都采集上来,分为哪些业务域、业务过程
· 指标现有情况调研:现在有哪些指标,缺少多少,能满足百分之多少的业务场景;指标建设现在遇到的问题是什么;之前的指标加工是否规范,是否需要调整
· 指标需求调研:了解客户需要完成的指标加工范围
● 产出
访谈汇总结果与需求收集表。
2)需求分析
● 目标
梳理需要加工的指标,指标业务口径,指标更新频率;
● 主导人
数据分析师;
● 产出
指标需求表。
数据分析师基于业务部门、科技部门的业务场景和需求,挖掘和提炼具体的指标、业务定义、优先级、实现难易程度、大概的实现方式。
并根据指标数量、难易程度、数据依赖关系,划分初步的阶段性计划,一期完成哪些指标、给哪些业务场景用,二期完成哪些指标,给哪些业务场景用。
1)指标拆解
● 主导人
数据分析师;
根据上述的业务需求分析,按照从上往下的方式对指标进行分级拆解,看需要的指标需要由哪些指标加工出来,各个指标的关系,明确各指标之间的关系,可层层溯源,一般分为3层:
· 一级指标:公司战略层面的指标,全公司认可的衡量公司业务目标的核心指标,如某大业务线产品收入、累计用户数、新增用户数、付费用户数等,面向管理层
· 二级指标:业务策略层面的指标,如产品收入拆解到各个产品线,累计用户数拆解到各个渠道,面向不同业务线
· 三级指标:业务执行层面的指标,对二级指标进行路径拆解,如产品收入需要拆解到付费用户数、客单价上面;付费用户数又可以拆解为新增付费用户数、复购用户数,根据这些指标可以不断优化运营或销售策略,面向业务部门

2)指标建模
● 主导人
数仓架构师;
根据对业务需求的理解、数据情况的探查,划分对应的业务域、业务过程、维度、度量、统计周期等,搭建指标建设的框架。
● 数据来源
数据指标遵循ODS-DWD-DWS-ADS的数仓设计架构,主要基于DWS轻度汇总表来加工;
数据架构师根据指标需求,看企业数仓设计的完善性,是否需要增加底层的明细表或汇总表,将基础表梳理加工好之后,开始指标的加工。
● 指标定义
我们先了解下指标的的组成:
指标= 统计周期+维度+过滤条件+度量
· 维度:描述性数据,指标统计的环境,如地区、个人账户、产品名称、产品类型、销售渠道
· 度量:数字性数据,销售金额、贷款金额、销售数量、如账户余额、国债余额、基金余额
· 统计周期:计算指标的时间范围,如近30天、当年、当月、近7天、上月、上周、去年
· 过滤条件:计算指标的条件限制,如正常状态、有效状态、全国范围内,西湖区的、工作日的

统计周期、维度、度量是组成的必要条件,过滤条件根据业务场景而定。
● 维度与度量
在指标加工前,需要先定义数据模型,数据模型中定义“维度”与“度量”,因为这两个是组成模型的基础必要条件。
数据模型按照数仓的业务主题来创建,如存款业务、贷款业务,可遵循星型模型或雪花模型,建立事实表与维表的关联关系,其可以是多张表的关联关系,也可以是单张表。表确定好之后,选择“维度”与“度量”,作为后续指标加工的基础。
我们以一个银行“存款业务模型”的模型来看,其是围绕账户存款余额明细数据建立的存款业务主题数据模型。


数据模型建好之后,选取维度与度量,作为后续指标加工的基础。
维度
选取数据模型中,作为环境描述的字段作为统计的维度。

度量
选取数据模型中,后续要加计算的数值型字段作为度量。

● 统计周期
统计周期也是指标必不可少的条件,描述一个指标应该指定其时间周期,比如累计交易次数、最近30天交易次数、最近90天交易次数等。一般系统会内置常用的统计周期,也会支持用户自定义统计周期,统计周期需要特别注意的便是日期格式了,比如yyyymmdd,还是yyyy-mm-dd。

根据以上内容,已准备好数据模型,和指标的三要素:维度、度量、统计周期。
指标类型
袋鼠云指标管理产品按照指标加工类型,分为原子指标、派生指标、复合指标、SQL指标。
· 原子指标:某一业务行为事件的度量,统计数据来源,如交易笔数、交易金额、交易用户数、账户余额
· 派生指标:基于原子指标进行维度、统计周期的派生。派生指标=统计周期+派生维度+过滤条件+原子指标,如近7天账户消费金额,去年账户余额总和、昨天产品销售金额等
· 复合指标:多个指标的加减乘除运算,如平均交易额、资产负债率等
· SQL指标:通过自定义SQL生成的指标,适应复杂的指标配置逻辑,满足开发人员不同的指标开发场景

4)指标内容
● 主导人
数据分析师、数仓架构师;
基于指标需求、指标建模、指标分类确定指标的具体内容,作为指标开发的指导。
· 指标名称:指标中文名称
· 指标编码:指标英文名称,也是存表的字段
· 指标目录:指标所属类目的分类
· 指标分类:属于原子、派生、复合、SQL指标的哪种
· 业务口径:指标的业务口径,如最近30天付费用户数指最近30天发生过一笔及以上购买交易的用户数量之和
· 技术口径:由哪个指标、哪些维度加工而来
· 指标责任人:该指标的负责人,可作为该指标的维护人与告警接收人
· 更新频率:日更新、周更新、月更新等
· 描述信息:对指标的额外描述信息
5)指标评审
● 主导人
数据分析师、数仓架构师;
指标模型设计完成、指标内容设计完成后,数据分析师与数仓架构师召开指标评审会议,面向数据开发、业务人员进行评审。
· 说明每个指标的定义、业务口径、技术口径、更新周期等
· 说明各个数据指标的类型,以及派生指标由数仓的哪些数据模型加工,其派生维度是什么,统计周期是什么;复合指标的派生维度,由哪些指标加工而成
评审后进行补充完善,之后进入指标开发阶段。

1)指标加工
我们来看下各类指标如何加工:
● 原子指标
原子指标来源于数据模型,是从上述“数据模型”中直接读到的度量,是数据模型表中的一个字段,如上述的“存款业务模型”中,可以把“存款利率”、“存款汇率”、“账户余额”、“固定余额”、“分成比例”等度量作原子指标。
选好度量后,同时需要选取描述该度量的维度,这些维度用于描述度量。如将“账户编号”、“机构编号”、“客户经理编号”、“客户编号”、“账户状态”等作为维度,则可以表示各个账户的存款账户余额、各个客户的存款账户余额、各个分行/支行的存款账户余额,各个客户经理管理账户的存款账户余额等。

所以原子指标是数据模型中维度和度量的组合映射,非一个有真实含义的指标,因为它表示的“客户”的“账户余额”,还没有加上统计周期与计算逻辑,比如客户当日账户余额、客户最近一年平均账户余额等。但原子指标是后续派生、复合指标加工的基础,不可缺少。
● 派生指标
派生指标是基于原子指标进行维度与统计周期的派生,并设置计算逻辑。
如“当日存款账户余额”,可基于原子指标“账户余额”来进行派生,维度选取“账户编号”、“机构编号”、“客户经理编号”、“客户编号”,计算逻辑选取“求和”,统计周期选取“当日”,表示各个账户的当日存款账户余额、各个客户的当日存款账户余额、各个分行/支行的当日存款账户余额,各个客户经理管理账户的当日存款账户余额等。

派生指标中内置的计算逻辑有:求和、均值、计数、去重计数、最大值、最小值等,也可以自定义函数。
内置的统计周期有:当日、当月、当年、去年、最近7天、最近30天、历史截止当前,也支持自定义。
● 复合指标
复合指标是基于原子指标或派生指标进行的加减乘除运算。如“当日基金账户利润”复合指标,可基于复合指标“当日基金账户利润率”、派生指标“当日基金账户余额”加工而来。
//
在“当日基金账户利润率”>1时,当日基金账户利润=当日基金账户利润率 * 当日基金账户余额
在“当日基金账户利润率”=1时,当日基金账户利润=(当日基金账户利润率+ 0.05)* 当日基金账户余额

复合指标的维度,需为加工公式中用到指标的公共维度,可以计算这些维度的该复合指标。如“当日基金账户利润率”指标的维度有“机构编号”,“当日基金账户余额”指标的维度有“账户编号”、“客户编号”、“机构编号”、“客户经理编号”,则基于这2个指标加工的复合指标“当日基金账户利率”只能有其公共维度“机构编号”,可查看各个机构的当日基金账户利率。
高级设置:公式中用的来源指标可设置指标数据的过滤条件,加工后的复合指标可取聚合函数,根据实际情况使用即可。
以上便是复合指标的加工。
● SQL指标
当存在以上通过内置函数、内置运算符加工不出来的逻辑较为复杂的指标时,可采用自定义SQL指标实现。只要遵循正确的语法结构,便可以灵活加工。

指标加工完后,后续可在指标血缘关系中查看指标间的上下游关系。

2)指标落库
指标逻辑配置成功后,每个指标可配置其更新周期,调度策略配置完成后,进行指标发布。发布后便按照设定周期周期性加工。同时,也支持手动立即更新。

指标更新后,会将每个指标和其维度存储在Hive表中,每个指标和其维度存储一张单独的表。
3)指标运维
指标上线后,运维同学便需要进行指标的日常运维,观察指标运行情况,及时处理报错情况,保证指标的正常加工和线上业务可用。
指标常应用在数据门户、BI数据分析、可视化大屏展示,业务人员数据分析中。那产生的指标怎么与上层应用对接呢
1)指标API
通过API服务将指标平台加工好的指标,提供给上层的展示、分析系统。
在创建API时定义需要查询出去的指标,多个指标的公共维度作为该API的入参。通过API接口,查询对接的指标结果。

外部系统调用API的url,用API-TOKEN认证便可以进行数据的查询。

2)自助取数
在自助取数平台中,可直接查询指标平台定义好的维度、指标,业务人员灵活拖拉拽,实现在线取数。并且取数逻辑可沉淀成固定的报表模板,报表可周期性自动生成数据,业务人员届时拿结果数据即可。
想了解更多袋鼠云指标产品「指标管理分析平台」相关信息,欢迎【点击阅读原文】了解。
袋鼠云开源框架钉钉技术交流qun(30537511),欢迎对大数据开源项目有兴趣的同学加入交流最新技术信息,开源项目库地址:https://github.com/DTStack/Taier
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:
我正在尝试创建密码规则来设计可恢复的密码更改。我通过passwords_controller.rb做了一个父类(superclass),但我需要在应用规则之前检查用户角色,但我所拥有的只是reset_password_token。 最佳答案 假设您的模型是用户:User.with_reset_password_token(your_token_here)Source 关于ruby-on-rails-设计通过reset_password_token获取用户,我们在StackOverflow
我已经使用Apartment设置了一个Rails5应用程序(1.2.0)和Devise(4.2.0)。由于某些DDNS问题,应用只能在app.myapp.com下访问(请注意子域app)。myapp.com重定向到app.myapp.com。我的用例是每个注册该应用的用户(租户)都应该通过他们的子域(例如tenant.myapp.com)访问他们的特定数据。用户不应限定在其子域内。基本上应该可以从任何子域登录。重定向到租户的正确子域由ApplicationController处理。根据Devise标准,登录页面位于app.myapp.com/users/sign_in。这就是问题开始的
我在关注RyanbatesRailsCast的devise和omniauth(第235集-devise-and-omniauth-revised)。当我尝试使用Twitter登录时,标题中不断出现错误。defself.new_with_session(params,session)ifsession["devise.user_attributes"]new(session["devise.user_attributes"],without_protection:true)do|user|user.attributes=paramsuser.valid?end完整跟踪:C:/Ruby20
在我的mac上安装几个东西时遇到这个问题,我认为这个问题来自将我的豹子升级到雪豹。我认为这个问题也与macports有关。/usr/local/lib/libz.1.dylib,filewasbuiltfori386whichisnotthearchitecturebeinglinked(x86_64)有什么想法吗?更新更具体地说,这发生在安装nokogirigem时日志看起来像:xslt_stylesheet.c:127:warning:passingargument1of‘Nokogiri_wrap_xml_document’withdifferentwidthduetoproto