在后处理器中使用细节线

时间:2014-11-03 11:26:18

标签: activepivot

在后处理器评估期间,我需要引用基础行来获取无法聚合的数据。

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

  • dimension1基于“fieldForDimension1”
  • dimension2基于“fieldForDimension2”

我的后处理器将fieldRefValues与一些外部值'externalValue'进行比较(我们假设这个外部值是用户可以更改的上下文值)。

if (fieldRefValues <= externalValue) {
    return fieldAmount1;
} else {
    return fieldAmount2;
}

由于externalValue可以随时变化,因此我无法预先处理此部分。我也无法在聚合级别上工作(或者更确切地说,我需要处理细节线的间隔)。

使用ActivePivot v5,似乎没有索引器这样的元素。此外,我对数据存储的愚蠢知识使我认为它可能无法满足我对模式的需求,这些模式由多个商店的字段组成。换句话说,我找不到使用位置查询数据存储区的方法。

例如,如果我的PP上的查询带有位置

[[myPP][value1][value2]]

我将很难使用数据存储区查询来检索详细信息行,因为我必须:

  1. 查询storeB以获取“value1”的id
  2. 查询storeC以获取“value2”的ID
  3. 使用前两个查询的结果查询storeA
  4. 在这些行上执行我的“if”声明
  5. 相当复杂,不是吗?

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

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

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

1 个答案:

答案 0 :(得分:0)

在您的后期处理器中,您可以访问数据存储区查询的事实槽 假设您计算了一个amout,并且您希望表达以给定货币转换的金额,那么您需要在PP中执行以下操作: - 以某种方式获取转换中涉及的位置的坐标(例如,货币),然后使用该坐标查询商店并获得允许您转换金额的费率。

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

因此所有都与您的用例有关。

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