0

我有两个维度 - Invoice_In 和 Invoice_Out。我需要创建一个结合了这两者的新维度 Invoice。是否有任何简单的方法可以通过 TI 流程(或使用 TI 或 Performance Modeler 的任何其他方式)来做到这一点?谢谢。

4

2 回答 2

0

您是否查阅过参考指南(TM1 TurboIntegrator Functions 章节)?

您可以使用两个维度的所有子集作为数据源,并使用两个进程(或调用相同进程并传递参数的主进程)在元数据选项卡中迭代这两者,但这同样容易(以及更多重要的是,您可以通过以下方式将其保留在一个进程中)在 Prolog 选项卡中使用无数据源执行此操作:

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

如果您在两个维度中具有相同的元素名称,您可能会遇到问题。DimensionElementInsert 不会在上面吐出假人,但它会在第二次遇到时忽略插入。

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

于 2013-10-05T19:02:15.620 回答
-1

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

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

DimensionElementInsert(DimName, InsertionPoint, ElName, ElType);

或者,使用现有维度作为来源。然后你不需要构造一个文件。

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

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

于 2016-03-14T19:34:15.850 回答