跳转到内容

设计维度层次结构

约 30 分钟 · 一个维度、一个备用层次结构、在下游使用

维度是 PlaidCloud 中其他一切功能所依赖的层次结构:分摊以其为目标,仪表板按其切片,报表通过其逐级汇总。然而大多数指南只是引用维度,从未教您如何构建。本教程填补这一空白:您将创建一个成本中心维度,为其添加第二种汇总方式,从表中填充数据,并将其交给下游使用者。

一个成本中心维度,其主层次结构按部门对成本中心分组,另有一个备用层次结构按区域对同样的成本中心重新分组。然后,您将从源表加载它,并让分摊指向它。

公司销售运营CC-100CC-200CC-300CC-400东部西部主层次结构按区域
主层次结构按部门对成本中心分组;备用层次结构按区域重新汇总同样的四个叶子。叶子相同,父级不同。
  • 一个 PlaidCloud 工作区(如果还没有,可开始免费试用)
  • 一个用于工作的项目(如有需要,可从项目选项卡创建)
  • 熟悉概念:工作区、项目、工作流、维度
  • 可选:一个包含成本中心结构的源表,用于步骤 4 中的加载(也可以手动构建树)

对这一概念还不熟悉?请先阅读维度入门。 其中说明了何时值得使用维度,以及主层次结构与备用层次结构之间的关系,也就是本教程所假定的基本术语。

维度位于每个项目的维度选项卡中。

  1. 打开项目,切换到维度选项卡。
  2. 在工具栏的新建按钮中,选择新建维度。
  3. 输入名称(例如 Cost Centers)、用于文件夹式组织的目录,以及说明性的备注。
  4. 点击创建。维度立即可用。

现在,您有了一个空维度:它只是一个带有主层次结构的外壳,里面还没有任何内容。下一步将为其添加结构。

每个维度都有一个主层次结构:这是权威的单一事实来源树,每个叶子成员在其中恰好登记一次。请在此处构建部门结构。

  1. 打开维度后,选择根节点,点击层次结构工具栏上的添加成员,创建顶层父级:Sales 和 Operations。

  2. 选择一个部门,再次使用添加成员,添加汇总到该部门的叶子成本中心:

    父级 叶子成员
    Sales CC-100, CC-200
    Operations CC-300, CC-400
  3. 层次结构工具栏还可以上移、下移成员并直接更改其父级,因此放错的成员都可以修正。

每个叶子都必须位于主层次结构中。 维度中任何位置的内容,首先都是主树的成员,唯一的问题是它位于哪里。备用层次结构(下一步)会重用这些叶子,而不会引入新的叶子。

对于大型树,手动排列成员会很繁琐。Dimension Sort 工作流步骤可以通过编程方式排序,在加载或大规模重组之后能节省大量时间。

备用层次结构是同一批叶子的另一种视图。它可以选取子集、以不同方式分组,或使用完全不同的汇总方式。在这里,您将按区域而不是按部门对这四个成本中心重新分组。

  1. 为维度添加一个新的备用层次结构,并将其命名为 By Region。

  2. 在新的层次结构中,使用添加成员创建两个父级:East 和 West,然后把现有叶子添加到它们下面:

    区域父级 叶子成员
    East CC-100, CC-300
    West CC-200, CC-400

这些叶子与主层次结构中的成员相同,您只是在此视图中更改其父级,而不是复制它们。主层次结构中的成员带有属性标签,显示它们还属于哪些备用层次结构,因此一眼就能看出 CC-100 既是销售成本中心,也是东部成本中心。

两种常见的备用模式。 子集视图把一组特定的叶子拉入一棵树,供某个报表或分摊使用,并会继承主层次结构中成员的变更。不同的汇总方式保留所有叶子但重新分组,就像这里的 By Region 一样。两者请参阅使用维度(层次结构)。

手动构建几个节点对教程来说足够了。实际操作中,您会通过工作流从源表填充维度,使其随源数据的变化而刷新。PlaidCloud 支持两种数据形状:

格式 形状 最适用于
父子 两列,一列父级、一列子级,每行一条边 深度任意、不规则的层次结构
级别 每个级别一列,每行一条完整路径 深度可预测的规则层次结构
  1. 切换到工作流选项卡,创建一个工作流(例如 Load Cost Centers)。
  2. 添加一个 Dimension Load 步骤。
  3. 将其指向源表,选择父子或级别,并映射承载结构的列。
  4. 加载所承载的不只是结构,值、别名和属性也可以在同一步骤中一并加载。如果源数据中有这些内容,也请映射相应的列。
  5. 运行该步骤,然后重新打开维度选项卡,确认树与源数据一致。

加载会构建结构,但不会重置维度。 若要在重新加载之前将维度清空(清除结构、值、别名、属性和备用层次结构),请先使用 Dimension Clear。有关完整的往返流程,包括将层次结构导出回平面表以用于报表,请参阅加载和卸载维度。

层次结构不仅仅是名称构成的树。每个节点都可以携带属性(例如成本中心的货币、所属业务部门)、别名和值。在层次结构工具栏上切换属性,即可为每个属性显示一列,并使用新建属性添加属性。

您还可以直接在层次结构中计算值。聚合会把表中的求和、计数、最小值或最大值引入每个节点,表达式则使用数学运算符、条件语句以及 Column(...)、Leafcount() 和 Parentvalue(...) 等函数,基于这些聚合进行计算。完整的函数集请参阅用于表达式和聚合的维度函数。

回报在于:只需定义一次树,即可在各处引用。您的维度现在已成为 PlaidCloud 其余部分的目标。

  • 分摊以维度为目标,把成本池分摊到其叶子上,这是下面自然的下一步。
  • 报表和仪表板可以切片并钻取层次结构,从同样的底层叶子出发,用主树做一种汇总,用 By Region 做另一种汇总。
  • 数据编辑器中的维度映射列,或另一个维度的选择(维度) 属性,让用户可以通过成员选择器从您的树中选取成员。

若要为分摊提供数据,请确保维度中的叶子成员名称与驱动因素和源数据中的键完全一致,空格或大小写不一致会导致某个叶子得不到任何分摊。这一约定正是接下来的分摊教程所依据的。