分布式多维数据集上的ActivePivot QueriesService.retrieveObject

时间:2013-10-01 14:33:59

标签: activepivot

我一直在尝试在ActivePivot Live中创建一个新动作,它在QueriesService上调用retrieveObject。像这样:

IQueriesService queriesService = getSessionService(IQueriesService.class);
ObjectDTO dto = queriesService.retrieveObject("MyDistributedCube", action.getObjectKey());

这在本地多维数据集上工作正常,但在分布式安装中如果无法从远程服务器检索对象。也许这并不奇怪,但问题是如何让它发挥作用?

与此示例中的LargeDealsQuery类似的新查询类型会对我有帮助吗? http://support.quartetfs.com/confluence/display/AP4/How+to+Implement+a+Custom+Web+Service

更新

这是上下文。我所拥有的也是可以在钻孔吸墨器中合理显示的字段,所以我隐藏了一些立方体钻取配置,既用于显示,也用于减少传输的数据量。要在需要时查看所有字段,我在右键单击菜单中添加了一个“钻取详细信息”项,该项将在多维数据集中查询单个钻取行中的所有字段并在弹出窗口中显示。也许有更好的方法来获得这个功能?

2 个答案:

答案 0 :(得分:0)

IQueriesService.retrieveObject()是ActivePivot 3.x中引入的过时服务。那时ActivePivot将输入对象直接存储在内存中,很自然地提供了检索这些对象的方法。但是后来的ActivePivot版本引入了一个列存储:数据从输入对象中提取并打包并压缩成柱状结构。然后释放输入对象,大大减少内存使用量。

对于ActivePivot 4.x, retrieveObject()服务在某种程度上得到了维护,尽管是间接的,因为实际上通用对象是从压缩数据中即时重建的。您注意到该实现仅支持本地多维数据集。只有MDX查询和钻取查询具有分布式实现。

对于ActivePivot 5.x, retrieveObject()服务已完全删除,支持直接访问基础数据存储区。

您很有可能通过检索原始事实的(分布式)钻取查询来解决您的用例问题。另一个快速解决方法是在群集中的每个本地多维数据集上手动发出请求。

更一般地说,钻取查询(以及MDX查询和GetAggregates查询)在ActivePivot中是上下文的。您可以将* IContextValue * s附加到将改变查询执行方式的查询中。特别是对于钻取查询,您可以将 IDrillThroughProperties 上下文值附加到查询中:

public interface IDrillthroughProperties extends IContextValue {

/**
 * @return The list of hidden columns defined by their header names.
 */
List<String> getHiddenColumns();

/**
 * @return The comparator used to sort drillthrough headers (impacts the column order).
 */
IComparator<String> getHeadersComparator();

/**
 * Returns the post-processed columns defined as plugin definitions of {@link IPostProcessedProperty}.
 * @return the post-processed columns defines as plugin definitions of {@link IPostProcessedProperty}.
 */
List<IPluginDefinition> getPostProcessedColumns();

@Override
IDrillthroughProperties clone();
}

除其他外,这将允许您仅检索特定钻取查询所需的列。

答案 1 :(得分:0)

根据您的更新,您可以执行以下操作: 将drillthroughProperties设置为不在共享上下文中,而是在给定角色或每个用户中,并允许每个用户在触发DT查询之前更改它。 因此,您必须编写一个显示用户可以访问的所有属性的服务,然后用户可以选择在drillthourgh中显示哪些字段,然后填充drillthroughProperties并触发DT查询。你只会看到你感兴趣的东西。 看到这就像沙盒的货币背景,但在这里它会影响DT。