如何防止Microstrategy提取所有数据

时间:2015-12-15 20:41:58

标签: microstrategy

我们正在构建一个包含许多报告的仪表板。表之间的关系在微策略中定义。我们发现Microstrategy没有为不同的报告使用不同的SQL。它从数据库(4600万)中提取所有数据,然后对这些数据应用后处理以生成单独的报告。 这需要花费大量时间,而且不使用数据库的查询引擎。 我们如何配置微策略,以便为不同的报告生成不同的查询,并仅收集特定报告所需的数据,而不是所有数据。

一种方法是使用fre form SQL。但我们希望能够拖放各类报告。 我们怎样才能做到这一点? 我们正在使用Microstrategy 10.1

3 个答案:

答案 0 :(得分:1)

根据您的描述,听起来Microstrategy首先使用其SQL引擎从数据库中提取所有数据(4600万条记录),然后在此之后应用过滤。

如果您的报告是使用属性过滤器在Microstrategy开发人员(或Web)中创建的,则每个报告都应该正确执行具有转换为这些属性过滤器的条件的sql。例如如果您的报告中包含名为“Fruit' Fruit'并且您只想显示苹果,那么您将在该报告上设置一个属性过滤器,该过滤器仅显示“果实”的结果。 =' Apple'。执行报告时,这将转换为SQL引擎中的where条件。 但是,如果您要对报告应用视图过滤器,那么SQL引擎将首先获取所有内容,然后过滤分析引擎中的整个数据集,这将很慢,尤其是在运行多个报告的情况下在仪表板上。

了解如何将数据集引入仪表板非常重要 - 它是使用多维数据集作为数据集还是报表,还是?有几种方法可以实现您正在寻找的性能,以下是一对:

  • 选项1:根据需要使用属性过滤器在Microstrategy开发人员中开发每个报告。这将要求您正确定义所有属性关系。
  • 选项2:将所有4600万条记录拉入多维数据集。使用多维数据集作为仪表板的数据集,然后根据需要使用视图过滤器对要放在报表上的各种报表。
  • 选项1 + 2:如果您愿意,可以将上述两个选项组合使用。将整个数据集存储在多维数据集中,定义可以从多维数据集动态提供的多个报表(常规报表,而不是多维数据集报表),根据需要使用过滤器,然后将这些报表添加到仪表板中。

以下是我要做的第一步:

  1. 检查您的属性和属性关系是否已定义并正常工作
  2. 创建测试报告并尝试根据其中一个属性进行过滤
  3. 尝试创建一些报告,每个报告根据其中一个属性
  4. 使用不同的过滤条件
  5. 将这些报告放入仪表板,看看每个报告是否生成不同的SQL语句。

答案 1 :(得分:0)

这听起来像你有:

  1. 使用视图过滤器(应用过滤后查询执行)构建报告,而不是在生成的SQL中应用过滤器,或
  2. 您没有定义属性关系,因此系统不认为您定义的过滤器与包含数据的事实表无关。

答案 2 :(得分:0)

你在使用立方体吗?我假设你执行一次查询的意思。

您需要使用新报告定期报告替换单个报告,而不是使用多维数据集制作报告。这是唯一的方法