元数分析云依托语义模型拥有强大的指标管理功能,旨在帮助用户有效地管理和监控数据模型中的指标。元数分析云通过基于核心的 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;
以下是一套比较完整的指标体系的示例,涵盖了销售、经销商、客户和产品等方面:
销售指标:
- 销售额(Sales Amount):总销售金额
- 销售数量(Sales Quantity):总销售数量
- 总订单量(Sales Volume): 总订单数量
- 平均销售单价(Average Unit Price):销售金额除以销售数量的平均值
- 每笔订单平均销售额(Sales Amount PerOrder):总销售金额除以订单数量的平均值
- 互联网销售额(Internet Sales Amount): 互联网渠道的销售金额
- 经销商销售额(Reseller Sales Amount): 经销商渠道的销售金额
客户指标:
- 客户数量(Customer Count):总客户数量
- 累计客户数量(Customer Grand Count):截止到当前时间的累计客户总数量
- 客户购买频率(Customer Purchase Frequency):平均每位客户的订单数量
- 客户平均销售额(Sales Amount per Customer):平均每位客户的订单购买金额
产品指标:
- 产品销售数量(Product Quantity):各产品的销售数量
- 畅销产品数量(Best Selling Product Quantity):指定时间范围内销售数量最高的产品数量
- 产品销售额增长率(Product Sales Growth Rate):相邻时间段内产品销售额的增长率
- 产品销售额占比(Product Sales Percentage):每个产品销售额在总销售额中的占比
区域指标:
- 区域销售额(Region Sales Amount):按区域划分的销售额
- 区域销售数量(Region Sales Quantity):按区域划分的销售数量
- 区域销售额增长率(Region Sales Growth Rate):相邻时间段内区域销售额的增长率
- 区域销售额占比(Region Sales Percentage):每个区域销售额在总销售额中的占比
经销商指标:
- 经销商销售额(Reseller Sales Amount):经销商的总销售金额
- 经销商销售数量(Reseller Sales Quantity):经销商的总销售数量
- 经销商平均销售额(Sales Amount per Reseller):经销商的平均销售金额
- 经销商订单数量(Reseller Order Count):经销商的订单数量
- 经销商销售额占比(Reseller Sales Percentage):经销商的销售额在总销售额中的占比
- 经销商活跃客户数量(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] |