根据 TM1 中的条件使用馈线

Using a feeder based on a condition in TM1

可以根据 if 条件提供元素吗?

以下是用于评估验证值的规则计算。

[{'AOP_v1','Forecast_v1'},'Validation', 'Rate'] = N:

IF(ROUNDP(['Phasing Total', 'Rate'] * 100, 5) = 100 % ROUNDP(['Phasing Total', 'Rate'] * 100, 5) = 0,   STET, 1);

有什么方法可以让 [{'AOP_v1','Forecast_v1'},'Validation', 'Rate'] 和 ['Phasing Total', 'Rate'] 只有当..

ROUNDP(['Phasing Total', 'Rate'] * 100, 5) = 100 % ROUNDP(['Phasing Total', 'Rate'] * 100, 5) = 0

?

Phasing Total Validation

您可以使用馈线右侧的 DB() 函数创建条件馈线。与其在数据库公式中硬编码多维数据集名称,不如使用 If() 函数,该函数 returns 如果逻辑条件计算结果为真,则提供要馈送的多维数据集名称,否则为空字符串:

['FeedFrom']=>DB(IF(YourLogicalTest,'NameOfCube',''), !Dim1, !Dim2, 'Element');

显然这只是伪代码; DB 函数可以使用当前元素引用(! 运算符)和硬编码元素名称的各种组合。但关键是,如果 If() 测试 returns 一个空字符串,那么显然 DB() 函数没有定义要提供的任何内容。

我建议阅读 this IBM article on rules and feeders in general. This thread on TM1Forum 包含一些关于是否应该使用条件喂食器或寻找其他方法的讨论。

您需要考虑的另一个因素 post-该线程的日期;在较新版本的 TM1 中,您可以使用多线程加载来缩短加载到内存中的时间。但是,如果您使用条件馈送器,则必须返回到单线程加载。这对您的影响可能微不足道,也可能很大。