跳到主要内容

范例:AdventureWorks Sales - 1. 建模

· 阅读需 17 分钟
Tiven Wang

在当今数据驱动的时代,对于企业来说,充分利用数据进行深入分析和洞察已成为取得竞争优势的关键。PowerBI 是一款广受欢迎的商业智能工具,而元数分析云作为一种功能强大的数据分析平台,提供了与 PowerBI 相当的建模能力。本文将探讨如何利用元数分析云的语义模型实现与 PowerBI 相似的功能效果,并使用 AdventureWorks Sales 的数据表进行演示。

如下图所示 AdventureWorks Sales 数据集在 PowerBI 中的数据关系模型:

模型
AdventureWorks Sales 模型

演示数据

PowerBI Samples 数据集中的 AdventureWorks Sales 是一个常用的示例数据集,用于展示 PowerBI 的数据建模和可视化功能。AdventureWorks Sales 数据集模拟了一个销售业务场景,包含了多个表格,如下所示:

  1. Customer(客户):包含有关客户的信息,如客户ID、姓名、地址等。这个表格用于跟踪和分析不同客户的销售情况,例如客户的购买历史和地理位置分布。
  2. Date(日期):记录了日期和与之相关的信息,如年份、季度、月份等。这个表格可以用于时间维度的分析,例如按年度、季度或月度对销售数据进行趋势分析和比较。
  3. Product(产品):描述了公司提供的产品,包括产品ID、名称、描述等。这个表格用于对不同产品的销售情况进行分析,例如畅销产品、产品类别分布等。
  4. Reseller(经销商):记录了经销商的详细信息,如经销商ID、名称、地址等。这个表格用于分析不同经销商的销售绩效和市场份额。
  5. Sales(销售):包含有关销售事务的信息,如销售ID、销售日期、销售金额等。这个表格是 AdventureWorks Sales 数据集的核心,用于分析销售业务的各个方面,例如销售额、销售趋势、销售地区等。
  6. Sales Order(销售订单):记录了销售订单的详细信息,如订单ID、客户ID、产品ID等。这个表格用于跟踪和分析销售订单的状态、订单量和订单周期等。
  7. Sales Territory(销售地区):描述了销售地区的详细信息,如地区ID、名称、国家/地区等。这个表格用于分析不同地区的销售业绩和市场份额。
信息

AdventureWorks Sales 数据集下载请参考 powerbi-desktop-samples/AdventureWorks Sales Sample

本文我们将演示通过使用 AdventureWorks Sales 数据集,在数据模型中创建适当的关系,定义维度和度量,并运用元数分析云的可视化功能来展示和探索数据。用户可以通过创建交互式报表、仪表盘和图表来分析销售数据,发现趋势、模式和关联,并从中获取同使用 PowerBI 同样有价值的洞察和决策支持。

创建语义模型

在创建语义模型之前假设我们已经将 AdventureWorks Sales 数据导入了数据库,假设数据表都以 adv_ 开头。

提示

元数分析云个人用户可以使用元数分析云的内置数据源 Demo - PG DBpublic 目录下的 adv_ 开头的数据表。

为 AdventureWorks Sales 数据集新建语义模型,选择使用 MDX 建模

创建语义模型
创建 AdventureWorks Sales 语义模型

创建成功后打开此语义模型的工作空间。

创建维度

我们需要先创建维度,维度是用于描述事实的属性,例如产品、客户、时间等。在 AdventureWorks Sales 数据集中,我们可以从 adv_productadv_customeradv_date 等数据表中创建维度。

以创建 Reseller 维度为例,如下图所示将物理表 adv_reseller 拖放至实体区域便会弹出创建维度的对话框,选择类型为 维度;输入维度名称和标签;在右侧表字段列表中设定一个字段为维度主键,并选择默认显示的字段;点击应用按钮即可创建维度。

创建维度

打开维度设计器界面后,可以详细修改维度的结构和属性。例如下图所示修改经销商维度的业务类型层级属性,名称改为 Business Type, 文本标签改为 业务类型,选中成员唯一

编辑维度层级属性

修改经销商层级的属性,并设置其 说明字段reseller,这样就表示该层级成员的技术 ID 为 reseller_id 字段的值,而显示文本名称为 reseller 字段的值。按实际情况对层级设置 成员唯一 有利于 OLAP 引擎对查询性能进行优化。

编辑维度层级说明字段

创建层次结构

上述创建的经销商维度只是默认层次结构,我们还可以为其创建多个层次结构,例如按经销商区域地理信息创建层次结构。如下图所示,添加层次结构按钮新建一个层次结构,将数据表拖放至维度表区域,并在层次结构属性中设置层次结构名称和标签和 维度主键

新建层次结构

添加层级,如下图所示,将经销商区域字段(country_region, state_province, city, postal_code)拖放至层级区域,并设置层级的详细属性,这里不再赘述。

添加层次结构的层级字段

在维度的数据预览区域我们可以看到维度按层级顺序显示的维度成员详细数据。

其他维度 CustomerDateProductSales OrderSales Territory 的创建过程类似,这里不再赘述。

创建多维数据集

接下来我们将使用事实表 adv_sales 创建多维数据集,如下图所示将 adv_sales 拖放至实体区域便会弹出创建多维数据集的对话框,选择类型为 多维数据集;输入维度名称和标签;在右侧表字段列表设置度量字段和维度字段关联的共享维度;点击应用按钮即可创建多维数据集。

创建多维数据集

打开 Sales 多维数据集的设计器界面,如下图所示,我们可以看到多维数据集的结构,包括维度、度量和计算成员。在多维数据集设计器中,我们可以对多维数据集的结构和属性进行详细修改。

  • 为多维数据集设置默认度量;
  • 修改多维数据集、度量的名称和标签;
多维数据集设计器
Sales 多维数据集设计器

多对一维度

对于日期这个维度,销售多维数据集上有多个维度都会关联此维度,例如下单日期、截止日期和发货日期,那么我们需要为这些共用相同维度的关系设置不同的名称。

共用维度
共用维度

维度名称分别修改为 Order Date, Due DateShip Date,这样这些维度就不会因为共用一个共享维度而重名了。

计算成员

在语义模型中,计算成员(Calculated Members)是一种由用户定义的、基于已有数据和计算逻辑生成的虚拟成员。计算成员允许用户在数据模型中执行自定义计算和聚合操作,以提供更丰富和灵活的分析和洞察。

以下是关于语义模型中计算成员的一些重要信息:

  1. 定义和创建:计算成员可以在语义模型中通过公式或表达式的方式进行定义和创建。用户可以使用MDX(多维表达式)查询语言来编写计算成员的逻辑。这些表达式可以包括数学运算、条件判断、函数调用等,以根据需要计算和衍生出新的数据。

  2. 应用范围:计算成员可以应用于维度和度量两个层面。在维度层面,计算成员可以为维度添加新的分类、层次结构或层级成员。在度量层面,计算成员可以通过对现有度量进行计算、聚合或重定义,生成新的度量指标。

  3. 自定义聚合:计算成员可以用于定义自定义聚合操作。用户可以使用计算成员来创建新的聚合规则,例如计算平均值、总和、百分比等。这使得用户能够根据特定的业务需求和分析要求,灵活地对数据进行聚合和汇总。

  4. 动态和交互式:计算成员可以根据用户的查询和上下文动态地计算和展示数据。这意味着在用户进行数据分析和探索时,计算成员可以根据当前的选择和过滤条件实时更新结果,提供与数据交互的能力。

  5. 高级计算:计算成员还可以用于实现更复杂的分析和计算需求。用户可以利用计算成员来进行高级数据建模,例如创建时间相关的计算、比较分析、预测模型等。这扩展了语义模型的功能,使用户能够进行更深入的数据挖掘和洞察。

例如我们需要计算 Profit,那么我们可以在计算成员区域中添加一个计算成员,如下图所示编辑其计算公式为

[Measures].[Sales Amount] - [Measures].[Total Product Cost]
编辑计算成员公式

同理再添加一个计算成员 Profit Margin 计算公式为

[Measures].[Profit] / [Measures].[Sales Amount]
提示

这里的 Profit Margin 计算公式属于百分比计算,需要设置单位属性为 %,这样在可视化组件中展示时会自动转换为百分比格式。

通过使用计算成员,语义模型提供了灵活性和可扩展性,使用户能够根据具体的业务需求和分析目标,创建定制化的计算和度量指标。这有助于用户更全面地理解和解释数据,发现潜在的关联和模式,并支持更准确的决策和业务优化。

更多关于计算成员的文档请参考 🧮计算成员

数据预览

数据预览功能允许用户通过拖拽维度、度量和计算成员到行列或过滤器上,以预览多维数据集的查询结果。这种交互式的方式让用户可以快速了解和探索数据,从而更好地理解数据的结构、分布和关系。

数据预览
数据预览

关于多维数据集的预览功能参考 🧊多维数据集设计器 - 计算

查询语句

多维数据集的自定义查询语句功能允许用户通过编写 MDX(多维表达式)查询语句,以自定义的方式进行数据分析和探索。MDX 是一种用于多维数据分析的查询语言,常用于访问和操作 OLAP(联机分析处理)数据源。

查询语句
查询语句

总结

在当今数据驱动的时代,充分利用数据进行深入分析和洞察已成为企业获取竞争优势的关键。本文介绍了如何利用元数分析云的语义模型实现与 PowerBI 相似的建模功能效果,并以 AdventureWorks Sales 数据表为例进行演示。AdventureWorks Sales 数据集包含了客户、日期、产品、经销商、销售订单和销售地区等多个表格,通过创建维度和多维数据集,我们可以构建完整的数据关系模型。语义模型的创建过程包括定义维度、创建层次结构、设置共享维度以及添加计算成员,这些功能可以帮助用户更好地理解和分析数据,从而支持更准确的决策和业务优化。

附录