TI 流程有两个部分让我感到困惑不已。
- 据称,这个过程在没有数据源的情况下为多维数据集(使用某些元素的属性)创建了新维度。但我只能看到它创建了维度名称并立即继续向该维度添加元素。这怎么可能,除非有人已经创建了那个名字的维度,这不太可能?(下面的截图)
- 据说此过程还将这些新创建的维度添加到现有多维数据集。这怎么能执行?该多维数据集中的现有数据将如何适应新维度?
TI 流程有两个部分让我感到困惑不已。
据称这个过程为立方体创造了新的维度
不,它没有,也没有声称。代码中的注释没有说明任何有关创建维度的内容,而是说Create Dimension Name。也就是说,它只是计算在 DimensionElementInsert 函数中应该使用的维度名称。该属性提供了一个维度的基本名称,它应该已经存在。(尽管考虑到 DimensionExists 函数在任何时候都不会被调用,这是一种信仰。当然,鉴于 TI 完全没有错误处理,即使它没有,你也无能为力存在。)您突出显示的代码部分上方的代码部分不会尝试创建维度 - DimensionCreate 函数在此处的任何地方都没有调用 - 它只是逐个字符地解析属性值,用下划线替换任何空格(在粘贴rp_在它前面)以获得正确的维度名称。
另一个属性定义维度中的顶部元素应该是什么。如果该元素不存在,您突出显示的代码将创建它。
Nick McDermaid 的评论是正确的;您不能向现有多维数据集添加维度。您可以导出数据、销毁多维数据集、构建具有相同名称但具有额外维度的新多维数据集,然后将旧数据导入其中,但这是不同的。并且导入过程需要一些代码来选择新维度的适当元素以在写入数据时使用。
这不是为什么他们向度量维度添加新元素的原因,而是在需要向多维数据集添加更多维度时
因此,TM1 中不存在度量维度。多维数据集的维度可以标记为“度量”维度,以便与可能需要它的其他系统进行通信,但它们对 TM1 本身没有影响。为方便起见,多维数据集的最后一个维度通常称为“度量维度”,但它只是一个方便的名称,用于标识包含存储在多维数据集中的度量的维度。
更重要的是,维度就是维度,元素就是元素。当您向维度添加元素时,您不会更改多维数据集的维度。(您可能(并且可能会)改变稀疏度,但这是一个完全不同的概念。)唯一的方法是向多维数据集添加新维度,如上所述,您实际上不能这样做;相反,您正在销毁旧的多维数据集并将其替换为恰好具有相同名称和不同维数的新多维数据集。鉴于这样做会破坏曾经为多维数据集编写的每个切片、活动表单、视图等,因此在实践中不应该或不应该经常这样做。