12_MDX陳述句

Download Report

Transcript 12_MDX陳述句

MDX陳述句
開啟MDX查詢
開啟「SQL Server Management Studio」
點選工具列:
並選擇所使用的資料庫:
即可編輯或執行所有的MDX查詢
MDX查詢
在MDX語法中,是透過ON句型來指定維度所放置的軸位
分析人員可以透過Axis(代碼),直接寫代碼或是直接指定軸位
英文名稱的方式來表示。
代碼
英文名稱
中文意義
0
Columns
列
1
Rows
行
2
Pages
頁
3
Chapters
章節
4
Sessions
區段
多維度軸定義
MDX查詢基本型
MDX查詢句型
CrossJoin({成員/集合},{成員/集合}) :
 可產生如同交叉分析表的報表形式
From句型
 資料源
WHERE句型
Filter({成員集合},邏輯運算式)句型
 因在where句型不能加入運算式,必須改用filter函數才能達
到過濾的效果。
Having句型-Having 邏輯運算式
 簡化的過濾語句
CrossJoin({成員/集合},{成員/集合})
WHERE句型 & Filter句型&Having句型
WHERE句型
 在MDX中WHERE句型與T-SQL的用法不同
 在這邊,可以透過WHERE句型的方式來表達「切片」
 WHERE (成員/集合) –不能加入任何運算式
Filter句型
 可利用此句型達到過濾效果
 基本句型:Filter ({成員集合},{邏輯運算式})
 使用時,在前方需加入要過濾的維度成員,然後在
後方加入過濾條件
Having句型
•簡化的過濾條件式
MDX陳述句的執行流程
Step01
解析FROM,找出資料源
Step02
解析WHERE,進行切片
Step03
解析WITH,產生導出成員與命名集
Step04
解析軸定義,包含成員集合、過濾(Filter)、排序。
Step05
產生資料集
Step06
解析NonEmpty,排除空值
Step07
解析Having,做資料最後過濾
在一般狀態下,Filter與Having結果相同。
但是,當資料中有包含NonEmpty句型進行排除空值,則Filter代表
的前置過濾與Having的後置過濾,結果就可能會有不同。
排序:Order句型
連續量值排序
Order({維度},量值[,{asc/desc/basc/bdesc}])
 ASC & DESC
•表示階層內成員排序
 BASC & BDESC
•表示跟階層打散後,同一層級的成員排序。
導出成員
WITH子句須置於SELECT查詢子句之前
WITH MEMBER [父階層].[導出成員名稱] AS ‘MDX運算式公式內容’
Ex:將銷售金額除以銷售數量來產生平均銷售單價
當不只一個導出成員時,計算的狀況就會變得較為
複雜。
Ex:希望產生平均銷售單價以及年度成長這兩個座
落在不同維度的導出成員。
 可能會產生兩種不同的結果
使用「解決順序(Solve Order)」
在SSAS 2008 中,SOLVE_ORDER的值域:-8181~65535
有些解決順序已經被特定運算所佔用
在指定時,須要特別注意
計算
解決順序
自訂成員公式
-5119
一元運算子
-5119
視覺化總計計算
-4096
其他所有計算
(若沒有指定)
0
Create Member
使用Create Member產生伺服器端的導出成員,會儲
存於伺服器端,任何前端使用者都可以存取。
使用Create Member產生成員後,也可以使用Drop語
法進行刪除
WITH SET
WITH SET [命名集名稱] as ‘{成員集合}’
成員篩選查詢
排序過濾函數
 TopCount
 DrillDownLevelTop
• 取母成員內排序後的前N名
 DrillDownLevelBottom
•取母成員內排序後的倒數N名
TopCount函數
使用TopCount函數產生 銷售量最高的前五項產品
DrillDownLevelTop函數
使用DrillDownLevelTop函數 產出 每個類別內銷售量
最高的前三項產品
動態指定對應的軸位
在SSAS 2008可以有兩種不同的表示法
 指定階層:通常多維度分析時會採用此法
•[產品別].[產品階層].[產品大分類].MEMBERS
 指定屬性:僅取用單一屬性,與其他屬性無任任何階層
的關係
•[產品別].[產品階層]..MEMBERS
VisualTotals
視覺化加總(VisualTotals)
 是將展示成員進行加總,來產生新的去重複總
計的加總小計項目。
SubCube查詢
SubCube是Cube的子集合,透過SubCube運算式定義
SubCube的範圍之後,在工作階段中,就可以僅針對
SubCube範圍進行後續的查詢。
使用SubCube最大的好處,在於事前將資料格縮小至
一定的範圍,可以有效的提升查詢效率
建立SubCube
 CREATE SUBCUBE SubCube名稱 AS SubCube運算式
關閉SubCube
 DROP SUBCUBE SubCube識別名稱
集合成員必須符合以下規則
SubCube是定義了Cube的子集合,其中集合成員必須
符合以下規則
 如果包含階層(ALL)的成員,該階層的所有成員就會
包括在內。
 如果包含任何成員,該成員的上階及下階就會包括
在內。
 如果包含層級的每個成員,該階層的(ALL)成員就會
包括在內。
 SubCube永遠包含Cube的每個(ALL)成員。