将表格式数据转换为多维数据集

通过将事实表从关系数据库提取到 Excel 文件并部署多维数据集,可以利用表格式数据创建多维数据集。

系统会检测出列标题和数据之间的关系模式以部署多维数据集。多维数据集中可用于将表格式数据转换为结构的过程包括以下概念:

  • 列之间的相关性

  • 列类型(例如日期、数字和文本)之间的相关性

  • 公用前缀和业务智能相关术语(例如成本、价格、账户)的标题文本分析

  • 报表结构(例如合并的单元格和空单元格)

  • (可选)强制指定标题,用于明确定义多维数据集配置,可以包含公式来创建度量维。

  • 度量层次(也可在多维数据集设计器的“转换数据”中生成)。

提供了示例表格式数据 Excel 文件来演示内建标题和强制指定标题。

使用表格式数据时,应分析数据,然后再利用数据创建多维数据集。接着,在创建多维数据集之后,应确定多维数据集大纲是否采用所需方式。

您可以在 Essbase 实例或多维数据集设计器中从表格式数据创建多维数据集。请参见从表格式数据创建和更新多维数据集

使用内建标题将表格数据转换为多维数据集

内建标题使用“表.列”格式,如 Sample_Table.xlsx 文件所示。在此示例文件中,列标题具有 "Units"、"Discounts"、"Time.Month"、"Regions.Region" 和 "Product.Brand" 等名称。

转换过程可创建此层次:

Units
Discounts
Fixed Costs
Variable Costs
Revenue
Time
   Month
   Quarter
Years
Regions
   Region
   Area
   Country
Channel
Product
   Brand
...

使用强制指定标题将表格数据转换为多维数据集

使用强制指定标题(提示),可以指定在转换过程中应如何处理表格式数据。

例如,可以强制将一列视为度量或属性维。大多数强制指定标题需要有方括号 [ ] 括起来的关键字。模板 Unstr_Hints.xlsxSample_Table.xlsx(在库中提供)中展示了强制指定标题。

受支持的强制指定标题格式:

表 6-1 强制指定标题格式

指定 标题格式 示例

Dimension generation

ParentGeneration.CurrentGeneration

Category.Product

Alias

ReferenceGeneration.Generation[alias]

Year.ShortYearForm[alias]

Attribute

ReferenceGeneration.AttributeDimName[attr]

Product.Discounted[attr]

Measures

MeasureName[measure]

Price[measure]

Measure generation

Parent.child[measure]

最顶级父级(如果唯一)是账户维名称。如果不唯一,则在账户维中自动生成此成员。

Measures.profit[measure]

profit.cost[measure]

cost.price[measure]

Measures formula

MeasureName[=formula_syntax;]

profit[="price"-"cost";]

profit[="D1"-"E1";]

price[=IF ("S1" == #MISSING) "R1"; ELSE "S1"; ENDIF;]

Measures consolidation

MeasureName[+]:添加到父级

MeasureName[-]:从父级中减去

MeasureName[~]:无合并(等同于 [measure])

默认值为无合并。

price.shipment[+]

只能为度量维定义合并

Formula consolidation

FormulaName[+=<formula>]:添加到父级

FormulaName[-=<formula>]:从父级中减去

profit[+=price-cost]

cost.external[+=ExternalWork+ExternalParts]

UDA

ReferenceGeneration[uda]

Product[uda]

Skip

不读取该列。

ColumnName[skip]

column[skip]

Recur

上一个列单元格值用于空单元格

重复可以与其他强制指定组合使用;它在方括号内包含逗号分隔的强制指定列表,例如 ColumnName[designationA,recur]。

ColumnName[recur]

Product[recur]

Product[uda,recur]

可以将列指定为度量维,也可以在转换过程中使用公式通过计算数据创建度量维。使用度量维的名称,后跟在方括号内括起来并附加到度量维名称的一个关键字或公式,来指定度量和度量公式强制指定标题。

您还可以通过在父级中添加或减去度量和公式来进行合并。

在列标题中,要将某列指定为度量维,请输入度量维的名称,然后附加关键字 [measure]。例如,可以使用以下语法指定 Units 和 Fixed Costs 作为度量维:Units[measure] 和 Fixed Costs[measure]。

转换过程使用 Units、Discounts、Fixed Costs、Variable Costs 和 Revenue 作为度量来创建此层次:

Time
   Year
      Quarter
         Month
Regions
   Region
      Area
         Country
...
Product
   Brand
...
Units
Discounts
Fixed Costs
Variable Costs
Revenue

您可以通过与创建常规维层代相似的方法,创建度量层代层次(parent.child[measure] 层次)。

例如,要创建度量层次,您可以输入 Measures.profit[measure]、profit.cost[measure] 和 cost.price[measure],这会生成以下层次:

Measures
      profit
            cost
                price

要在列标题中利用公式创建度量维,请输入度量维的名称,然后附加位于方括号 [ ] 中的公式语法。在方括号中,公式以等号 (=) 开头,以分号 (;) 结尾。公式中的参数对应于列名或单元格坐标,必须括在引号中。可以在公式中使用 Essbase 计算函数和命令。

假设您具有一个名为 Spend_Formulas.xlsx 的 Excel 文件,在其 SpendHistory 工作表中包含表格式数据,并且有许多列。例如,存在名为 Year(列 A)和 Quarter(列 B)的维以及名为 Spend(列 J)和 Addressable Spend(列 K)的度量维。这些列都有数据。一些列标题使用公式创建度量维。这些列没有数据。例如,为创建 Total Spend 维,列 O 中的标题使用下面的 Essbase 公式:Measure.Total Spend[="Addressable Spend" + "Non-Addressable Spend";]。为创建 AddSpendPercent 维,列 P 中的标题使用下面的 Essbase 公式:Measure.AddSpendPercent[="Addressable Spend"/"Total Spend";]。

转换过程可创建此层次:


表格式数据转换预览的图像。

当维名称重复时,转换过程还可以指定度量维。假设有一个列标题使用以下公式:Meas.profit[="a1"-"b1";],该公式可创建 Meas 维。如果在另一个列标题中使用 Meas 维名称作为顶层父级,例如 Meas.Sales,则 Sales 维也会被视为度量列。