跳到主要内容

范例:AdventureWorks Sales - 3. 指标管理

· 阅读需 15 分钟
Tiven Wang

元数分析云依托语义模型拥有强大的指标管理功能,旨在帮助用户有效地管理和监控数据模型中的指标。元数分析云通过基于核心的 OLAP 引擎建立对企业数据的统一语义建模, 无需繁琐的数据转换和 ETL,并经过统一口径的指标定义功能对企业经营数据进行统一的管理和认证.最终通过元数分析云提供的指标应用程序和故事仪表板,将指标用于分析和评估公司业务和财务数据。

本篇将使用元数分析云的指标管理功能为 AdventureWorks Sales 数据模型定义一套完善的指标管理体系。

销售业务域
销售业务域

指标体系设计

接下来我们将为 AdventureWorks Sales 数据集创建指标体系以演示元数分析云指标管理的功能。上一篇 范例:AdventureWorks Sales - 1. 建模 创建了 AdventureWorks Sales 多维数据集,包含了维度:

  • 经销商 Reseller;
  • 客户 Customer;
  • 销售区域 Sales Territory;
  • 日期 Date;
  • 产品 Product;
  • 销售订单 Sales Order;

以及度量:

  • 销售数量 Sales Quantity;
  • 销售额 Sales Amount;
  • 成本 Total Product Cost;
  • 单价 Unit Price;
  • 利润 Profit;

以下是一套比较完整的指标体系的示例,涵盖了销售、经销商、客户和产品等方面:

销售指标:

  1. 销售额(Sales Amount):总销售金额
  2. 销售数量(Sales Quantity):总销售数量
  3. 总订单量(Sales Volume): 总订单数量
  4. 平均销售单价(Average Unit Price):销售金额除以销售数量的平均值
  5. 每笔订单平均销售额(Sales Amount PerOrder):总销售金额除以订单数量的平均值
  6. 互联网销售额(Internet Sales Amount): 互联网渠道的销售金额
  7. 经销商销售额(Reseller Sales Amount): 经销商渠道的销售金额

客户指标:

  1. 客户数量(Customer Count):总客户数量
  2. 累计客户数量(Customer Grand Count):截止到当前时间的累计客户总数量
  3. 客户购买频率(Customer Purchase Frequency):平均每位客户的订单数量
  4. 客户平均销售额(Sales Amount per Customer):平均每位客户的订单购买金额

产品指标:

  1. 产品销售数量(Product Quantity):各产品的销售数量
  2. 畅销产品数量(Best Selling Product Quantity):指定时间范围内销售数量最高的产品数量
  3. 产品销售额增长率(Product Sales Growth Rate):相邻时间段内产品销售额的增长率
  4. 产品销售额占比(Product Sales Percentage):每个产品销售额在总销售额中的占比

区域指标:

  1. 区域销售额(Region Sales Amount):按区域划分的销售额
  2. 区域销售数量(Region Sales Quantity):按区域划分的销售数量
  3. 区域销售额增长率(Region Sales Growth Rate):相邻时间段内区域销售额的增长率
  4. 区域销售额占比(Region Sales Percentage):每个区域销售额在总销售额中的占比

经销商指标:

  1. 经销商销售额(Reseller Sales Amount):经销商的总销售金额
  2. 经销商销售数量(Reseller Sales Quantity):经销商的总销售数量
  3. 经销商平均销售额(Sales Amount per Reseller):经销商的平均销售金额
  4. 经销商订单数量(Reseller Order Count):经销商的订单数量
  5. 经销商销售额占比(Reseller Sales Percentage):经销商的销售额在总销售额中的占比
  6. 经销商活跃客户数量(Reseller Active Customer Count):经销商在指定时间范围内有交易记录的客户数量

这些指标将帮助你了解经销商在销售方面的表现、市场份额、客户活动等关键指标。你可以根据具体的需求和分析目标进行调整和扩展,以满足你的业务需求。

业务域

业务域 是指业务领域或业务功能的划分和组织。它代表了企业的不同业务部门、业务流程或业务功能,例如销售、采购、生产、人力资源等。每个业务域通常包含一组相关的指标和模型,用于衡量和监控该业务领域的业绩和绩效。业务域是一种有效的方式来组织和划分指标体系,通常将逻辑上相关的指标集合划分到同一个业务域。

根据上面的指标体系设计,如下图所示我们将销售业务域分为以下几个子业务域:

销售业务域
销售业务域
提示

关于业务域的更多信息,请参考 业务域

管理指标

接下来我们将在元数分析云系统中演示如何为以上指标体系创建相关的指标。

项目

在元数分析云中指标的创建和维护等管理工作是以 🧰项目 为单位进行的。在创建指标之前,你需要先创建一个项目(或使用默认项目),然后在项目中创建指标。

如下图所示,点击网站导航菜单中的“项目”-〉“指标”菜单,转到指标管理页面,项目使用默认项目。在指标管理工具栏中可以注册指标,批量导入指标,道出指标。

项目指标管理
项目指标管理

时间维度

在指标管理中指标通常需要定义时间维度,以帮助用户更方便地分析和比较指标的变化趋势。例如,你可以定义指标的时间维度为“年”、“季度”、“月”、“周”、“日”等,以便用户可以按照不同的时间维度来分析指标的变化趋势。

转到之前创建好的 AdventureWorks Sales 语义模型,打开 日期 维度界面,编辑维度属性:

  • 设置维度类型为 Time
  • 设置语义类型为 Calendar
语义模型时间维度
语义模型时间维度

还要为时间维度下所有的层次结构的层级设置时间相关属性:

  • 层级时间类型为 Year, Quarter, Month, Week, Day 之一
  • 语义类型为 Calendar Year, Calendar Quarter, Calendar Month, Calendar Week, Calendar Day 之一
  • 语义格式化 [yyyy], [yyyy].[yyyyMM], [yyyy].[yyyyMM].[yyyy-MM-dd] 类似的格式字符串,根据实际成员的键值格式设置
语义模型时间维度层级
语义模型时间维度层级
提示

关于时间维度的详细信息,请参考 📆日历维度

注册指标

转到项目中的指标管理页面,点击 注册 按钮,打开指标注册界面,输入指标的基础信息,如下图所示:

注册指标基础信息
注册指标基础信息
  • 指标编码:指标的唯一标识,用于在系统中唯一标识指标,编码规则由用户自行规定,但需要保证组织内唯一。
  • 指标名称:指标的名称,用于在系统中显示指标的名称。
  • 认证:是组织内一个数据质量得到专业认可的过程。
提示

关于指标的更多信息,请参考 💹指标管理

模型信息

定了指标的基础信息后,接下来该定义指标的模型信息了。如下图所示,选择语义模型后,选择模型实体:

注册指标模型信息
注册指标模型信息
  • 是否可见:指标是否可见,如果不可见,用户将无法在分析工具中看到该指标。
  • 指标类型
    • 基础指标:指标为基础指标,指标的度量值将直接从模型实体的度量中选择之一。
    • 衍生指标:指标为衍生指标,指标的度量值将通过公式计算得到。
  • 度量:基础指标的度量字段
  • 日历维度:指标的日历维度,用于指标的时间分析,包括趋势,同环比等。
  • 自由维度:指标的模型实体中非限定的维度,用于指标的分析,包括维度切片,维度下钻等。
  • 限定条件:指标的限定条件,限定指标的数据范围。

限定条件

🔪限定条件 是通过对多维数据集进行切片,切块组合切片操作来减少数据集的维度数量进而降低数据分析的复杂度. 指标定义通过添加限定条件进行指标的细化定义,添加限定条件可以减少指标的自由维度数量以降低指标分析的复杂度。

如下图所示,通过添加客户产品两个限定条件细化了指标的定义,通过减少了此指标的自由维度数量:

指标限定条件
指标限定条件

衍生指标

💹衍生指标 是指从原始度量值计算出来的值的指标。所以在指标注册时衍生指标需要设置类型为衍生指标并为其定义计算公式,如下图所示, 我们定义了一个衍生指标 平均销售单价,其计算公式为 [Measures].[Sales Amount] / [Measures].[Sales Quantity],即为销售金额除以销售数量的平均值:

衍生指标模型信息
衍生指标模型信息

附录

以下是所有的指标数据

业务域指标名称指标编码类型度量或公式限定条件
销售指标总销售额ADV_Sales_Amount基础销售额
总销售数量ADV_Sales_Quantity基础销售数量
总订单量ADV_Sales_Volume衍生Count([Sales Order.Orders].[Sales Order].Members, EXCLUDEEMPTY)
平均销售单价ADV_Average_Unit_Price衍生[Measures].[Sales Amount] / [Measures].[Sales Quantity]
平均销售额ADV_Average_Sales_Amount衍生[Measures].[Sales Amount] / [Measures].[Volume]
互联网销售额ADV_Internet_Sales_Amount基础销售额Channel = Internet
经销商销售额ADV_Reseller_Sales_Amount基础销售额Channel = Reseller
客户指标客户数量ADV_Customer_Count衍生Count([Customer].[Customer].Members, ExcludeEmpty)
累计客户数量ADV_Customer_Grand_Count衍生Count( Extract( Filter( PeriodsToDate( [Order Date].[(All)], [Order Date].CurrentMember ) * {[Customer].[Customer].Members}, NOT [Measures].[Sales Amount] is Empty ), [Customer] ))
客户平均销售额ADV_Sales_Amount_per_Customer衍生[Measures].[ADV_Internet_Sales_Amount] / [Measures].[Customer Count]
客户购买频率ADV_Customer_Purchase_Frequency衍生[Measures].[Sales Quantity] / [Measures].[Customer Count]
产品指标服装销售数量ADV_Sales_Quantity_Clothing基础销售数量Product = Clothing
自行车销售数量ADV_Sales_Quantity_Bikes基础销售数量Product = Bikes
自行车销售额ADV_Sales_Amount_Bikes基础销售额Product = Bikes
自行车销售额增长率ADV_Sales_Growth_Rate_Bikes衍生([Measures].[Sales Amount] - CoalesceEmpty((Measures.[Sales Amount], [Order Date].PrevMember), Measures.[Sales Amount])) / CoalesceEmpty((Measures.[Sales Amount], [Order Date].PrevMember), Measures.[Sales Amount])Product = Bikes
服装销售额占比ADV_Sales_Percentage_Clothing衍生([Product.Products].CurrentMember, [Measures].[Sales Amount]) / ([Product.Products].[All Product.Productss], [Measures].[Sales Amount])Product = Clothing
服装销售额增长率ADV_Sales_Growth_Rate_Clothing衍生([Measures].[Sales Amount] - CoalesceEmpty((Measures.[Sales Amount], [Order Date].PrevMember), Measures.[Sales Amount])) / CoalesceEmpty((Measures.[Sales Amount], [Order Date].PrevMember), Measures.[Sales Amount])Product = Clothing
区域指标北美区销售额ADV_Sales_Amount_North_America基础销售额Sales Territory = North America
经销商指标经销商数量ADV_Reseller_Count衍生Count([Reseller].[Reseller].Members, ExcludeEmpty)
经销商平均销售额ADV_Sales_Amount_per_Reseller衍生[Measures].[ADV_Reseller_Sales_Amount] / [Measures].[ADV_Reseller_Count]