Ssas MDX查询,用于计算具有相同维度的成员的度量值和条件
我有OLAP数据库中的多维数据集(SSAS 2012),其中[人员],[日期](订单日期),[类别](订单中的项目类别)是维度,[订单],[订单分类]是事实表。[OrdersCategories]是一个多对多表,用于将订单与Categories连接起来 使用查询:Ssas MDX查询,用于计算具有相同维度的成员的度量值和条件,ssas,mdx,Ssas,Mdx,我有OLAP数据库中的多维数据集(SSAS 2012),其中[人员],[日期](订单日期),[类别](订单中的项目类别)是维度,[订单],[订单分类]是事实表。[OrdersCategories]是一个多对多表,用于将订单与Categories连接起来 使用查询: SELECT {[Measures].[Orders Distinct Count]} ON COLUMNS, {[Persons].[Id].Children} ON ROWS FROM [DB] WHERE (
SELECT
{[Measures].[Orders Distinct Count]} ON COLUMNS,
{[Persons].[Id].Children} ON ROWS
FROM [DB]
WHERE (
{[Dates].[Id].&[2015-06-11T00:00:00] : [Dates].[Id].&[2015-06-17T00:00:00]},
{[Categories].[Id].&[10], [Categories].[Id].&[11]}
)
我可以计算每个人的订单数量(指定时间段和指定类别)。在这种情况下,分类条件的作用类似于“或”条件,无论顺序与第一类或第二类或两者都有关系
是否可以按类别编写查询,其工作方式类似于“和”条件,即仅当顺序与两个类别相关时才计算顺序?
和
与来自同一层次结构的成员通常实现如下:
SELECT
{[Measures].[Orders Distinct Count]} ON COLUMNS
,{[Persons].[Id].Children} ON ROWS
FROM [DB]
WHERE
Exists
(
Exists
(
{
[Dates].[Id].&[2015-06-11T00:00:00] : [Dates].[Id].&[2015-06-17T00:00:00]
}
,{[Categories].[Id].&[10]}
,"MeasuresGroupName"
)
,{[Categories].[Id].&[11]}
,"MeasuresGroupName"
);
您需要从多维数据集中添加度量值组名称。度量值组名称对应于度量值层次结构中的文件夹名称-Adventure Works中的一个示例是“Internet Sales”
可能的替代方案 我认为您可以尝试使用嵌套的
NonEmpty
函数实现上述功能:
SELECT
{[Measures].[Orders Distinct Count]} ON COLUMNS
,{[Persons].[Id].Children} ON ROWS
FROM [DB]
WHERE
NonEmpty
(
NonEmpty
(
{
[Dates].[Id].&[2015-06-11T00:00:00] : [Dates].[Id].&[2015-06-17T00:00:00]
}
,{([Categories].[Id].&[10],[Measures].[Orders Distinct Count])}
)
,{([Categories].[Id].&[11],[Measures].[Orders Distinct Count])}
);
答案一目了然。我更喜欢第二个答案。@Sourav_Agasti如果第一个答案有效,那么它比第二个更标准。第一个是我看到Tomislav Piasevoli使用的一种方法。我想只是一个小小的修正。“MeasuresGroupName”需要与
[Measures].[Orders Distinct Count]
所属的度量值组相同,而不仅仅是任何度量值组。@Sourav_Agasti我同意,谢谢您的回答。我尝试了这两种方法,但返回的[Orders Distinct Count]比上面的查询返回的要大(但应该小,因为它应该像“AND”一样工作)。无论如何,我认为这并不是简单的taks,我需要对SSAS/MDX有一点更深入的理解,去学习