在后处理器评估期间,我需要参考底层行以获取无法聚合的数据。
假设我的多维数据集架构由来自 3 个商店 A、B 和 C 的字段组成。然后它看起来像:
<datastoreSelection baseStore="storeA">
<fields>
<field name="fieldAmount1" expression="fieldAmount1" />
<field name="fieldAmount2" expression="fieldAmount2" />
<field name="fieldRefValue" expression="fieldRefValue" />
<field name="fieldForDimension1" expression="storeB/fieldForDimension1" />
<field name="fieldForDimension2" expression="storeC/fieldForDimension2" />
</fields>
</datastoreSelection>
我的立方体有 2 个维度:
- 基于“fieldForDimension1”的维度1
- 基于“fieldForDimension2”的维度2
我有我的后处理器,将 fieldRefValues 与某个外部值“externalValue”进行比较(假设这个外部值是用户可以更改的上下文值)。
if (fieldRefValues <= externalValue) {
return fieldAmount1;
} else {
return fieldAmount2;
}
由于 externalValue 可以随时变化,我无法预处理这个 if 部分。我也无法在聚合级别上工作(或者更准确地说,我必须在某个时间间隔上处理细节行)。
在 ActivePivot v5 上工作,似乎没有索引器这样的元素。此外,我对数据存储的浅薄知识让我认为它可能无法满足我的需要,因为我的模式是由来自多个存储的字段组成的。换句话说,我还没有找到使用位置查询数据存储的方法。
例如,如果我的 PP 上的查询带有位置
[[myPP][value1][value2]]
我将努力使用数据存储查询检索详细信息行,因为我必须:
- 查询 storeB 以获取“value1”的 id
- 查询 storeC 以获取“value2”的 id
- 使用前 2 个查询的结果查询 storeA
- 在这些行上执行我的“if”语句
相当复杂,不是吗?
与此同时,钻取功能有效地完成了类似的工作。所以我最终想到了使用钻取来完成检索工作。
但是,我从未听说过这样的用例。因此我的问题是:有人有类似的用例吗?你是如何解决的?有什么警告吗?
从我的第一次尝试来看,似乎在后处理器执行期间执行钻取查询可能会引发与上下文相关的问题。