本文說明的是在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 暫時沒有研究明白,希望留言告之。