向 TM1 中的现有多维数据集添加维度

Adding dimensions to existing cube in TM1

TI 流程有两个部分让我百思不得其解。

  1. 据称此过程在没有数据源的情况下为多维数据集创建新维度(使用某些元素的属性)。但我所能看到的是它创建了维度名称并立即继续向该维度添加元素。这怎么可能,除非有人已经创建了一个具有该名称的维度,这不太可能? (以下截图)

Creating dimension without data source

  1. 这个过程也被称为将这些新创建的维度添加到现有的多维数据集中。那怎么能做到呢?该多维数据集中的现有数据将如何适应新维度?

This process allegedly creates new dimensions for a cube

不,它没有,也没有声称。代码中的注释没有说明创建 dimension,它说 Create Dimension Name 。也就是说,它只是计算出应该在 DimensionElementInsert 函数中使用的维度名称。该属性为 应该 已经存在的维度提供基本名称。 (尽管在任何时候都没有调用 DimensionExists 函数,这是一篇有信仰的文章。当然,鉴于 TI 中完全没有错误处理,即使它没有,你也无能为力存在。)您突出显示的代码上方的代码部分不会尝试创建维度 - 此处未在任何地方调用 DimensionCreate 函数 - 它只是逐个字符地解析属性值,用下划线替换任何空格(在粘贴 rp_在它前面)以获得正确的维度名称。

另一个属性定义维度中的顶部元素应该是什么。如果该元素不存在,您突出显示的代码会创建它。

Nick McDermaid 的评论是正确的;您不能向现有多维数据集添加维度。您可以导出数据,销毁多维数据集,构建一个具有相同名称但具有额外维度的新多维数据集,然后将旧数据导入其中,但这是不同的。并且导入过程需要一些代码 select 写入数据时要使用的新维度的适当元素。

isn't that why they add new elements to the measure dimension instead when there's a need for adding more dimensionality to a cube

TM1 中不存在度量维度。多维数据集的维度可以标记为 "measure" 维度,以便与可能需要它的其他系统进行通信,但它们对 TM1 本身没有影响。为方便起见,多维数据集的最后一个维度通常称为 "the measures dimension",但它除了作为一个方便的名称来标识包含存储在多维数据集中的指标的维度之外没有任何意义。

更重要的是,维度是维度,元素是元素。当您将元素添加到维度时,您并没有改变立方体的维度。 (您可能(并且可能会)改变稀疏性,但这是一个完全不同的概念。)唯一的方法是向立方体添加新维度,如上所述,您实际上不能这样做;相反,您正在销毁旧立方体并用一个恰好具有相同名称和不同维数的新立方体替换它。鉴于这样做会破坏为多维数据集编写的每一个切片、活动表单、视图等,因此在实践中不会或不应该经常这样做。