-1

在后处理器评估期间,我需要参考底层行以获取无法聚合的数据。

假设我的多维数据集架构由来自 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]]

我将努力使用数据存储查询检索详细信息行,因为我必须:

  1. 查询 storeB 以获取“value1”的 id
  2. 查询 storeC 以获取“value2”的 id
  3. 使用前 2 个查询的结果查询 storeA
  4. 在这些行上执行我的“if”语句

相当复杂,不是吗?

与此同时,钻取功能有效地完成了类似的工作。所以我最终想到了使用钻取来完成检索工作。

但是,我从未听说过这样的用例。因此我的问题是:有人有类似的用例吗?你是如何解决的?有什么警告吗?

从我的第一次尝试来看,似乎在后处理器执行期间执行钻取查询可能会引发与上下文相关的问题。

4

1 回答 1

0

在您的后处理器中,您可以访问数据存储库查询的事实罐,假设您计算了一个金额,并且您想表达以给定货币转换的金额,那么您必须在您的 PP 中做什么: - 以某种方式获取所涉及位置的坐标在转换中(例如货币),然后使用该坐标查询商店并获取允许您转换金额的汇率。

长话短说: - 如果您必须处理聚合值,请使用后处理器 - 如果您必须查询基础事实,请使用数据存储查询(类似于 AP4 中的索引器查询) - 您可以在帖子中使用数据存储查询处理器

所以一切都与您的用例有关。

希望这会有所帮助,如果这没有帮助,请随时详细说明您的用例问候,

于 2014-11-04T00:39:31.583 回答