MDX是多維數據查詢語言,類似于SQL秒梳,它的基本語法如下:
SELECT SET ON COLUMNS,SET ON ROWSFROM CUBEWHERE TUPLE
對SET法绵、TUPLE、CUBE酪碘、成員的定義朋譬,可以參考百度,有的文章對概念的解釋很詳細婆跑。
下面我列出常見的操作:
單行單列查詢:
這個結果值就一個此熬,比如查詢某個班總共有多少人
SELECT
{[人數度量維度].[總人數]} ON COLUMNS,
{[班級維度].[三年一班] } ON ROWS
FROM CUBE_NAME
單行多列:
比如查詢某個班男生和女生各有多少人
SELECT
{[人數度量維度].[男生人數],[人數度量維度].[女生人數]} ON COLUMNS,
{[班級維度].[三年一班]} ON ROWS
FROM CUBE_NAME
多行單列:
比如查詢每個班級的總人數:
SELECT
{[人數度量維度].[總人數]} ON COLUMNS,
{[班級維度].children} ON ROWS
FROM CUBE_NAME
多行多列:
比如查詢每個班級,男生和女生的人數:
SELECT
{[人數度量維度].[男生人數],[人數度量維度].[女生人數]} ON COLUMNS,
{[班級維度].children} ON ROWS
FROM CUBE_NAME
上面的行和列滑进,都只有一層。
列只有一級募谎,行有兩級:
查詢每個班級扶关,男生和女生的平均成績:
SELECT
{[成績度量維度].[分數]} ON COLUMNS,
{[班級維度].children}*{[性別維度].children} ON ROWS
FROM CUBE_NAME
行和列都有兩級:
查詢每個班級,男生和女生的上個月平均成績数冬、本月平均成績:
SELECT
{[月份維度].[上月],[月份維度].[本月]}*{[成績度量維度].[分數]} ON COLUMNS,
{[班級維度].children}*{[性別維度].children} ON ROWS
FROM CUBE_NAME
對某個軸去零值:
查詢各個班級的總吃到人數节槐,如果人數為零搀庶,去除掉這個班級的數據:
SELECT
NON EMPTY {[遲到人數度量維度].[總人數]} ON COLUMNS,
{[班級維度].children} ON ROWS
FROM CUBE_NAME
獲取某個維度的所有成員:
比如獲取班級維度的所有成員,也就是所有班級:
WITH MEMBER [度量維度].[班級名稱] AS [班級維度].currentMember.name
SELECT
{[度量維度].[班級名稱]} ON COLUMNS,
{[班級維度].members} ON ROWS
FROM CUBE_NAME
獲取直接下級成員:
不包含下級成員的下級成員铜异,比如獲取機構維度的所有成員哥倔,也就是所有班級:
WITH MEMBER [度量維度].[機構名稱] AS [機構維度].currentMember.name
SELECT
{[度量維度].[機構名稱]} ON COLUMNS,
{[機構維度].[某機構].children} ON ROWS
FROM CUBE_NAME
獲取默認成員:
WITH MEMBER [度量維度].[班級名稱] AS [班級維度].currentMember.name
SELECT
{[度量維度].[班級名稱]} ON COLUMNS,
{[機構維度].defaultMember} ON ROWS
FROM CUBE_NAME
獲取樹形機構:
WITH MEMBER [度量維度].[機構名稱] AS [機構維度].currentMember.properties('名稱')MEMBER [度量維度].[機構編碼] AS [機構維度].currentMember.nameMEMBER [度量維度].[父機構編碼] AS [機構維度].currentMember.parent.nameSELECT {[度量維度].[機構編碼],[度量維度].[機構名稱],[度量維度].[父機構編碼]} ON COLUMNS,{[產品].members} ON ROWS FROM CUBE_NAME
這個查出來的是所有的集合,然后使用代碼揍庄,兩層循環(huán)咆蒿,組成樹形結構。
排除某些成員:
比如就是不讓某機構出現在結果中
WITH MEMBER [度量維度].[機構名稱] AS [機構維度].currentMember.name
SELECT
{[度量維度].[機構名稱]}
ON COLUMNS,
{EXCEPT([機構維度].MEMBERS,{[機構維度].[某機構]})} ON ROWS
FROM CUBE_NAME
MDX一方面是學習它的查詢語法蚂子,另一方面是要學會組裝它返回的結果沃测,這也是一個需要動腦筋的地方。