.net 如何从AnalysisServices获取“原始”事实数据

.net 如何从AnalysisServices获取“原始”事实数据,.net,sql-server,ssas,olap,mdx,.net,Sql Server,Ssas,Olap,Mdx,我们开发了一个定制引擎,用于实时处理过程中的大量数据。现在我们需要将SSAS与我们的系统集成。维度的元信息和属性数据非常容易获取。 但是,在不使用SSA计算聚合(即仅存储在LEAF上的数据)的情况下,如何获取facts数据? 我们自己进行的汇总和计算 从SQL数据库中选择数据不是一个解决方案,因为在加载多维数据集时,多维数据集可以执行连接、过滤。清除数据等 例子: 假设我们有产品维度: 产品,全部 +产品.面包 +产品。椅子 +产品。书籍 和事实表-销售: |Product|Qty| |Br

我们开发了一个定制引擎,用于实时处理过程中的大量数据。现在我们需要将SSAS与我们的系统集成。维度的元信息和属性数据非常容易获取。 但是,在不使用SSA计算聚合(即仅存储在LEAF上的数据)的情况下,如何获取facts数据? 我们自己进行的汇总和计算

从SQL数据库中选择数据不是一个解决方案,因为在加载多维数据集时,多维数据集可以执行连接、过滤。清除数据等

例子: 假设我们有产品维度:

产品,全部 +产品.面包 +产品。椅子 +产品。书籍 和事实表-销售:

|Product|Qty|  
|Bread  | 1 |  
|Chair  | 3 |  
我只想从多维数据集获取真实数据,而不是聚合数据:

|Product|Qty|
|All    | 4 |  
|Book   | 0 |  
|Bread  | 1 |  
|Chair  | 3 |

总之,如果不重新处理多维数据集,就无法获得更新的事实。如果您想要实时获得原始数据,您必须亲自从数据仓库中的维度/事实表中进行计算。

底线是,如果不重新处理多维数据集,您将无法获得更新的事实。如果您想要实时获取原始数据,您必须亲自从数据仓库中的维度/事实表中进行计算。

在ssas u中可以禁用层次级聚合,对于空行,在获取数据之前使用非空作为关键字。

在ssas u中可以禁用层次级聚合,对于空行在获取数据之前,行使用non-empty作为关键字

尝试查看SSAS中的钻取。这可以显示事实粒度数据,并在Excel中作为双击单元格时的默认操作提供。您可以自定义结果集,只要所有度量值/维度来自相关事实表:

您还会发现这一点很有用:


尝试查看SSAS中的钻取。这可以显示事实粒度数据,并在Excel中作为双击单元格时的默认操作提供。您可以自定义结果集,只要所有度量值/维度来自相关事实表:

您还会发现这一点很有用:


我可以重新处理立方体,这不是问题。我只想从多维数据集中获取实际存在于DW中的行。我应该能够找到DW中的每一行。有可能吗?如果在DW中有两行:第一行:产品维度属性值==面包,测量数量值==1。第二:产品维度属性值==椅子,测量数量值==2。如果乘积维度没有层次结构,我只想得到那几行,而不是三行。全部3-它是聚合的P。Bread 1 P。Cheir 2如果有层次结构和多个维度,由于笛卡尔积,情况更糟。我可以重新处理立方体,这不是问题。我只想从多维数据集中获取实际存在于DW中的行。我应该能够找到DW中的每一行。有可能吗?如果在DW中有两行:第一行:产品维度属性值==面包,测量数量值==1。第二:产品维度属性值==椅子,测量数量值==2。如果产品维度没有层次结构P,我只想得到那一行,而不是三行。全部3-它是聚合P。Bread 1 P。Cheir 2如果有层次结构和多个维度,由于笛卡尔积,情况更糟。谢谢,我如何禁用级别聚合?你能为Adventure works多维数据集提供示例吗?在多维数据集结构选项卡中选择维度,单击其属性,并将属性AllMemberAgegationUsage设置为None,然后你的问题将得到解决。我无法以这种暴力方式修改多维数据集结构。我可以通过MDX来处理它吗?这种蛮力是如何做到的…我不认为在MDX中你想要的是可以实现的,因为这就是层次结构的构建方式。谢谢,我怎样才能禁用级别聚合?你能为Adventure works多维数据集提供示例吗?在多维数据集结构选项卡中选择维度,单击其属性,并将属性AllMemberAgegationUsage设置为None,然后你的问题将得到解决。我无法以这种暴力方式修改多维数据集结构。我可以通过MDX来处理吗?这种蛮力是如何产生的…我不认为在MDX中你想要的是可以实现的,因为层次结构就是这样建立的