本文说明的是在OLAP多维分析系统中用到MDX语句函数Descendants。
Descendants 汉语是 后代 的意思(百度翻译的)。
MDX官网的解释:返回成员在指定级别或距离上的后代集,可以选择包括或不包括其他级别的后代
详细的用法请参考下面的网址:https://msdn.microsoft.com/zh-cn/library/ms146075.asp
这里提供一些例子来说明一下这个函数:
前提:有一个时间维表(年季月日),一个事实表包含(时间字段和销售额字段)
第一种情况 :
SELECT [Measures].[sales] ON COLUMNS,
Descendants ( [时间.年季月日].[2014],
[时间.年季月日].[月],
SELF
) ON ROWS
FROM [事实表]
SELF 只返回的是 2014年所有的月份从1月到12月份的数据,如下:
第二情况 :
SELECT [Measures].[sales] ON COLUMNS,
Descendants ( [时间.年季月日].[2014].[1],
[时间.年季月日].[季],
AFTER
) ON ROWS
FROM [事实表]
AFTER只返回的是 2014年第一季度以后的成员,即:1月所有日期,2月所有日期,3月所有日期。如下:
第三情况:
SELECT [Measures].[sales] ON COLUMNS,
Descendants ( [时间.年季月日].[2014],
[时间.年季月日].[月],
BEFORE
) ON ROWS
FROM [事实表]
BEFORE只返回的是 2014年月份以前的所有成员,即:年和季度成员。如下:
第四情况 :
SELECT [Measures].[sales] ON COLUMNS,
Descendants ( [时间.年季月日].[2014],
[时间.年季月日].[月],
BEFORE_AND_AFTER
) ON ROWS
FROM [事实表]
BEFORE只返回的是 2014年月份以前的所有成员和以后的成员,不包含月份,即:年,季度,日成员没有月成员。如下:
第五情况 :
SELECT [Measures].[sales] ON COLUMNS,
Descendants ( [时间.年季月日].[2014],
[时间.年季月日].[月],
SELF_AND_AFTER
) ON ROWS
FROM [事实表]
BEFORE只返回的是 2014年月份和以后的成员,包含月成员,即:月,日成员。如下:
第六情况 :
SELECT [Measures].[sales] ON COLUMNS,
Descendants ( [时间.年季月日].[2014],
[时间.年季月日].[月],
SELF_AND_AFTER
) ON ROWS
FROM [事实表]
BEFORE只返回的是 2014年月份和以前的成员,包含月成员,即:年,季度,月成员。如下:
第七情况 :
SELECT [Measures].[sales] ON COLUMNS,
Descendants ( [时间.年季月日].[2014],
[时间.年季月日].[月],
SELF_AND_AFTER
) ON ROWS
FROM [事实表]
BEFORE只返回的是 2014年月份和以前的成员,包含月成员,即:年,季度,月,日所有成员。如下:
第八情况 : LEAVES 暂时没有研究明白,希望留言告之。