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();
}
这将允许您仅检索特定钻取查询所需的列。