假设我有一个包含两种不同计数度量的多维数据集,请将它们称为Measure1
和Measure2
。这两个度量都包含一个共同维度Dimension1
,它由两个度量计算。
我需要做的是在对每个度量进行适当过滤后,返回Dimension1
和Measure1
中存在的Measure2
个成员的明显计数必需的。
我可以单独为Measure1
和Measure2
定义MDX查询并获取不同的计数,但我需要能够“重叠”结果以避免重复计算两者中存在的成员集。
注意:在实际场景中,涉及的方法超过2个,所有MDX查询都将动态构建(用户定义包含哪些度量和维度标准)。
可以在SSAS / MDX中完成吗?如果没有,是否有其他Microsoft工具/功能可以?系统的最低要求是SQL Server 2008 R2标准版。
老实说,我不知道从哪里开始。谷歌出现了这样的事情(我看到一些涉及单一措施的篮子分析,但我不确定是否或如何将其应用于我的场景)。无论如何,我不是SSAS / MDX / BI专家。
我可以想到两种选择:
DRILLTHROUGH
使用各个MDX查询和(基本上)COUNT DISTINCT
结果。我们确实需要能够进行钻取,所以我可能不得不实施解决方案#1,但是有一个更有效的方法来获得计数会更好,因为需要计数远更频繁。
答案 0 :(得分:0)
我会根据Dimension1 Key属性添加一个Distinct Count度量。我会在Excel 2010+中使用Sets MDX功能在Measure1,2等上进行过滤。
答案 1 :(得分:0)
我从未找到过这方面的MDX解决方案。
我继续使用直接查询数据仓库的解决方案,并且经过一些性能调整后,它的工作进展顺利。这种方法可能并不适合所有应用程序,但看起来它适用于我们的特定场景。
答案 2 :(得分:0)
我会建议在SQL Server端(创建两个表的表视图)或SSAS端(创建单个度量,但具有来自不同来源的不同分区的联合功能)(例如,Partition1-for Credits,Partition2-for存款)。
第二种方法,是对您需要做出的“可怕”决定进行初步 使用SUM函数的简单Measure1。然后,单击Measure1并使用DistionctCount函数选择“创建新度量”。 因此,SSAS将使用DistionctCount函数与Measure2组成一个单独的新Measure Group。
它必须完美运行。
答案 3 :(得分:-1)
让我们简化问题陈述。您想要同时购买面包和鸡蛋或拥有丰田和本田的客户数量。我很久以前就遇到了这个问题,并提出了一个查询设计。这些查询的性能不佳。通过这些查询的性质,他们正在将事实公开化。因此,所有的集结收益都丧失了。
这是代码,我根据客户的姓名计算客户的数量 ClassicVestS或HLMountainTire等产品
with
member [Measures].[CustomersWhoBoughtClassicVestS] as
count(
intersect(
{nonempty(
existing ([Customer].[Customer].children),[Measures].[Internet Order Count]
)},
{extract(nonempty( ([Customer].[Customer].children* [Product].[Product].&[471]),[Measures].[Internet Order Count]),[Customer].[Customer])}
)
)
member [Measures].[CustomersWhoBoughtHLMountainTire] as
count(
intersect(
{nonempty(
existing ([Customer].[Customer].children),[Measures].[Internet Order Count]
)},
{extract(nonempty( ([Customer].[Customer].children* [Product].[Product].&[537]),[Measures].[Internet Order Count]),[Customer].[Customer])}
)
)
Select {[Measures].[CustomersWhoBoughtClassicVestS],[Measures].[CustomersWhoBoughtHLMountainTire]
} on columns ,
{ nonempty( [Product].[Product].children
,[Measures].[Internet Order Count]) }
on rows
from [Adventure Works]