使用MDX實現多維關聯分析
在經過了痛苦的資料倉儲與olap基礎知識學習之後,在老闆的聲聲催促下,小心翼翼地建立了資料倉儲,設計了通用分析型的olap分析介面。
於是心中暗喜“哈哈,可以交差了。”,因為按照《需求說明書》裡列出的功能項,均已實現。拿著這個產品來到客戶方演示之後,客戶連說
了幾個“no”(怎麼能這樣呢,一點面子都不給?好歹我從一個資料倉儲的文盲到做出這個產品也花費了不少的時間呀)。接下來,客戶提出
了幾個要求,要對資料進行智慧分析,具體的要求可能就像諸位曾經經歷或正在經歷的一樣吧。好吧,就讓我試試去做智慧分析。
首先,我們來完成關聯分析。對了,我記得資料探勘原理中介紹了關聯分析,經過一段時間的苦讀與試驗,這個購物籃的例子還是沒有帶給我
多少啟發?我用的是as,裡面只有兩個資料探勘演算法呀:決策樹與聚類。我不太清楚這兩個演算法與關聯分析如何聯絡在一起。接下來的幾日,
我就在查詢與閱讀資料探勘及關聯分析中渡過(有點浪費時間吧,不過老闆不願意花錢請一個老手來做這個專案,沒有辦法,只有摸著石頭過
河了)。這天,我痛苦得終於放下資料探勘方面的書籍,重新開啟as幫助文件,一邊閱讀著mdx部分,一邊在自制的mdx查詢分析器裡做著試驗
。突然靈機一動,為什麼不試試用mdx來實現分析呢?說幹就幹,一番試驗下來之後,嘿嘿,還真成功了。下面說是我的成功步驟:
還是先說說資料倉儲的結構吧:
samplecube
--dim1
----dim1hier1
------dim1lev1
------dim1lev2
------...
----dim1hier2
--dim2
----dim2hier1
-------dim2lev1
-------dim2lev2
----dim2hier2
...
--measures
----sum1
接下來,定義關聯分析中的支援度--可信度指標;用mdx的with子句來實現
要實現dim1.dim1lev1與dim2.dim2lev1的關聯分析,定義如下:
with
member [measures].[dim1lev1sup] as ([dim1].[dim1hier1].[dim1lev1].currentmember, [dim2].[dim2hier1].[所有 dim2],
[sum1])/([dim1].[dim1hier1].[所有 dim1], [dim2].[dim2hier1].[所有 dim2],[sum1])
member [measures].[dim2lev1sup] as ([dim2].[dim2hier1].[dim2lev1].currentmember,[dim1].[dim1hier1].[所有
dim1],[sum1])/([dim2].[dim2hier1].[所有 dim2], [dim1].[dim1hier1].[所有 dim1], [sum1])
member [measures].[置信度] as ([dim1].[dim1hier1].[dim1lev1].currentmember,
[dim2].[dim2hier1].[dim2lev1].currentmember,[sum1])/([dim1].[dim1hier1].[所有 dim1], [dim2].[dim2hier1].[所有 dim2], [sum1])
然後用select語句實現分析,設dim1lev1sup的最小支援度為5%,dim2lev1sup的最小支援度為1%,實現強關聯分析(即置信度大於1).
select {[measures].[sum1],[置信度], [measures].[dim1hier1sup], [measures].[dim2hier1sup]} on columns,
order(filter({[dim1].[dim1hier1].[dim1lev1].members * [dim2].[dim2hier1].[dim2lev1].members},[measures].[dim1lev1sup] > 0.05
and [measures].[dim2lev1sup] > 0.01 and ([置信度]/([measures].[dim1lev1sup]* [measures].[dim2lev1sup]) > 1)), [sum1], bdesc)
on rows from samplecube
這樣強關聯分析演算法就實現了。
於是心中暗喜“哈哈,可以交差了。”,因為按照《需求說明書》裡列出的功能項,均已實現。拿著這個產品來到客戶方演示之後,客戶連說
了幾個“no”(怎麼能這樣呢,一點面子都不給?好歹我從一個資料倉儲的文盲到做出這個產品也花費了不少的時間呀)。接下來,客戶提出
了幾個要求,要對資料進行智慧分析,具體的要求可能就像諸位曾經經歷或正在經歷的一樣吧。好吧,就讓我試試去做智慧分析。
首先,我們來完成關聯分析。對了,我記得資料探勘原理中介紹了關聯分析,經過一段時間的苦讀與試驗,這個購物籃的例子還是沒有帶給我
多少啟發?我用的是as,裡面只有兩個資料探勘演算法呀:決策樹與聚類。我不太清楚這兩個演算法與關聯分析如何聯絡在一起。接下來的幾日,
我就在查詢與閱讀資料探勘及關聯分析中渡過(有點浪費時間吧,不過老闆不願意花錢請一個老手來做這個專案,沒有辦法,只有摸著石頭過
河了)。這天,我痛苦得終於放下資料探勘方面的書籍,重新開啟as幫助文件,一邊閱讀著mdx部分,一邊在自制的mdx查詢分析器裡做著試驗
。突然靈機一動,為什麼不試試用mdx來實現分析呢?說幹就幹,一番試驗下來之後,嘿嘿,還真成功了。下面說是我的成功步驟:
還是先說說資料倉儲的結構吧:
samplecube
--dim1
----dim1hier1
------dim1lev1
------dim1lev2
------...
----dim1hier2
--dim2
----dim2hier1
-------dim2lev1
-------dim2lev2
----dim2hier2
...
--measures
----sum1
接下來,定義關聯分析中的支援度--可信度指標;用mdx的with子句來實現
要實現dim1.dim1lev1與dim2.dim2lev1的關聯分析,定義如下:
with
member [measures].[dim1lev1sup] as ([dim1].[dim1hier1].[dim1lev1].currentmember, [dim2].[dim2hier1].[所有 dim2],
[sum1])/([dim1].[dim1hier1].[所有 dim1], [dim2].[dim2hier1].[所有 dim2],[sum1])
member [measures].[dim2lev1sup] as ([dim2].[dim2hier1].[dim2lev1].currentmember,[dim1].[dim1hier1].[所有
dim1],[sum1])/([dim2].[dim2hier1].[所有 dim2], [dim1].[dim1hier1].[所有 dim1], [sum1])
member [measures].[置信度] as ([dim1].[dim1hier1].[dim1lev1].currentmember,
[dim2].[dim2hier1].[dim2lev1].currentmember,[sum1])/([dim1].[dim1hier1].[所有 dim1], [dim2].[dim2hier1].[所有 dim2], [sum1])
然後用select語句實現分析,設dim1lev1sup的最小支援度為5%,dim2lev1sup的最小支援度為1%,實現強關聯分析(即置信度大於1).
select {[measures].[sum1],[置信度], [measures].[dim1hier1sup], [measures].[dim2hier1sup]} on columns,
order(filter({[dim1].[dim1hier1].[dim1lev1].members * [dim2].[dim2hier1].[dim2lev1].members},[measures].[dim1lev1sup] > 0.05
and [measures].[dim2lev1sup] > 0.01 and ([置信度]/([measures].[dim1lev1sup]* [measures].[dim2lev1sup]) > 1)), [sum1], bdesc)
on rows from samplecube
這樣強關聯分析演算法就實現了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12921506/viewspace-201764/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- QuickBI助你成為分析師-儀表板多圖關聯的實現UI
- hibernate之關於使用連線表實現多對一關聯對映
- flink維表關聯絡列之Redis維表關聯:實時查詢Redis
- 使用延遲關聯實現高效分頁
- 使用多個鍵做模型關聯模型
- 多對多關係自行維護單項關聯數量,加快分頁查詢
- GoldenGate使用SQLEXEC和GETVAL實現碼錶關聯GoSQL
- AssociatedObject關聯物件原理實現Object物件
- SQL Server MDX中軸的使用SQLServer
- 多維分析函式函式
- 第十四篇:Apriori 關聯分析演算法原理分析與程式碼實現演算法
- 關於多使用者建立相同表實現shell
- 淺談Analysis Services MDX中父子維的實現方式UXUX
- Laravel多對多模型關聯Laravel模型
- 實現 MongoDB 外來鍵關聯MongoDB
- 關聯物件的實現原理【OC】物件
- vc++實現檔案關聯C++
- 多維資料分析引擎Saiku的安裝使用AI
- 使用MDX進行環比查詢
- 使用apriori演算法進行關聯分析演算法
- 非度量多維尺度分析
- Java響應式關聯式資料庫多執行緒實現方式Java資料庫執行緒
- SQL多個表實現聯合查詢SQL
- 機器學習系列文章:Apriori關聯規則分析演算法原理分析與程式碼實現機器學習演算法
- 模型關聯一對多模型
- 對接多個 Neuron 例項,實現多閘道器協同分析與裝置聯動
- 資料結構實驗 多維陣列的實現資料結構陣列
- 使用 CSS 實現多列布局CSS
- 百度流批一體的實時多維分析實踐
- 多維資料分析模型設計器Schema Workbench的使用模型
- 使用Redis實現關注關係Redis
- MyBatis實現一對一關聯對映MyBatis
- 什麼是關聯分析?
- BI、OLAP、多維分析、CUBE 這幾個詞是什麼關係?
- 幾行程式碼實現ListView的多級聯動——多級聯動就是如此簡單行程View
- MyBatis表關聯 一對多 多對一 多對多MyBatis
- UserService 新增使用者關聯索引 addUserPermission 分析索引
- 初探SQL Server MDXSQLServer