TI流程 - 如何将两个维度合并为一个新维度?

时间:2013-10-05 18:38:37

标签: cognos-tm1

我有两个维度 - Invoice_In和Invoice_Out。我需要创建一个新的维度Invoice,它结合了这两个。有没有简单的方法可以使用TI流程(或使用TI或Performance Modeler的任何其他方式)执行此操作?感谢。

2 个答案:

答案 0 :(得分:0)

您是否参考过参考指南(TM1 TurboIntegrator功能章节)?

您可以使用两个维度的所有子集作为数据源,并使用两个进程(或调用相同进程并传递参数的主进程)在“元数据”选项卡中迭代这两个进程,但这将同样简单(更重要的是,你可以将它保存在一个过程中)在Prolog选项卡中执行,数据源为None:

  • 使用DimensionExists作为If()块的参数来确定 维度Invoice是否存在;
  • 如果没有,请使用DimensionCreate创建它。使用DimensionElementInsert语句添加要添加的任何合并。
  • 使用DimSiz规则函数获取Invoice_In和Invoice_Out中的元素数量,并将它们存储在变量中;
  • 您的第一个循环使用While块迭代InvoiceIn以从1计数到DimSiz值。
  • 在循环中,您将使用DimNm()获取现有元素。 (如果只想获得N级元素,还需要使用ElLev或DType。)通过DimensionElementInsert将每个元素插入Invoice。您可能还需要使用DimensionElementComponentAdd将其添加到任何顶级合并。
  • 您的第二个循环将完全相同,但适用于Invoice_Out。

如果两个维度中的元素名称相同,则可能会遇到问题。 DimensionElementInsert不会将虚拟对象吐出,但它会在第二次遇到时忽略插入。

请勿在Prolog中调用任何其他旨在引用此新维度的进程。您需要跨越元数据边界以确保向服务器注册新维度。

答案 1 :(得分:-1)

导出两个元素,将两个列表复制并粘贴到一个表格中。

使用工作表作为源,然后在TI中使用一行代码DimensionElementInsert。

DimensionElementInsert(DimName, InsertionPoint, ElName, ElType);

或者,使用现有尺寸作为来源。然后您不需要构造文件。

您可以设置数据源名称并循环显示N个维度。

(注意:新维度需要存在。或者你可以在你的TI中创建一个新的维度。取决于你想要编码多少。但我给你的编码最少的解决方案。)