日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mdx 聚合函数

發布時間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mdx 聚合函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聚合函數Aggregation(set_express, numeric_express), Aggregation(http://msdn.microsoft.com/zh-cn/library/ms145524.aspx)執行求和函數, 如果和某些其他求和函數配合的話, 會有變化. 看一個例子

SELECT { ([Measures].[Reseller Sales Amount]), ([Measures].[Reseller Transaction Count]), ([Measures].[Reseller Order Count]) } ON COLUMNS, TopCount( {[Product].[Subcategory].[Subcategory].Members}, 5, ([Measures].[Reseller Sales Amount]) ) + {([Product].[Subcategory].[All Products])} ON ROWS FROM [Step-by-Step]

很簡單. 按銷售量排序排名前五的銷售小類別的三個值的表現. 第一個是金額, 是sum, 第二個是交易數量, 是count(*), 第三個是distinctCount(*), 訂單數量.

想增加一行. 匯總一下這前五的信息. 于是, 我們寫一個計算列.如下

因為是添加一行, 那么肯定是用類似于上面的元組+元組. 所以計算列是屬于[Product].[Subcategory].元組的. 定義如下

with member [Product].[Subcategory].[top5] as sum( topcount([Product].[Subcategory].[Subcategory].Members, 5, [Measures].[Reseller Sales Amount] ) ,[Measures].[Reseller Sales Amount] )

得到

哦, 錯了. 這只是得到是Sales Amount一個死的Sum值. 在這里我們忽視了一個東西, CurrentMember, 類似于游標指針似的一個玩意. 它不僅是用在Measures被Dim打亂上(列上被行的打亂), 還可以用在Dim在不同的Measures上的表現, (行被列限定. ).? 在這里, colomn上的measures有三個成員. 因此可以用

這樣得到的結果是可是最后一個值的5026明顯不是distinctCount, 而是一個簡單是sum運算. 這違背了我們的初衷. 這個時候, 就不能使用簡單是sum聚合了. 需要保持原來聚合的Aggregation函數. 最終結果如下

加一個有趣的東西

?

?

AVG函數.

這樣一個簡單的東西. 每年的銷售額的訂單數. 現在我們需要當年的月平均銷售額.

下面我們再來復習一下作用域的概念.

with member Measures.MonthValue as avg( [Measures].[Reseller Sales Amount] )

現在是這樣. 沒有限定任何作用域. 那么這個度量值將會被行維度給打散. 結果如圖.

這是查詢出來了每一年的銷售額. 好無聊的操作. 呵呵.

假設給avg第一個參數賦值, set_express 設置為

with member Measures.MonthValue as avg( [Date].[Calendar].[Month].members , [Measures].[Reseller Sales Amount] ) 相當于得到一個死的值. 已經計算完的.? 這個值是所有的月份的銷售額之和/月數.

, 其實我們需要這個值和每個年份做關聯, 被打散. 這個時候, 就需要existing關鍵字出馬了.

existing強制在當前的區域內做運算. 理解為, 度量值強制在當前的區域內被切割.

得到

這個時候, 突然想到. 其實我們在指定月份的時候, 不也是可以指定他的區域嗎?

比如這樣寫.

這樣限定了. 月份的成員是屬于在行的當前的區域范圍內. 結果果然是正確得到了和使用existing一樣的.

?

?

WITH MEMBER [Measures].[Products] AS Count( EXISTING {[Product].[Product].[Product].Members} ) MEMBER [Measures].[Products List] AS Generate( EXISTING {[Product].[Product].[Product].Members}, [Product].[Product].CurrentMember.Name, " .. " ) SELECT { ([Measures].[Products]), ([Measures].[Products List]) } ON COLUMNS, {[Product].[Subcategory].Members} ON ROWS FROM [Step-by-Step] ;

一個很神奇的東西

轉載于:https://www.cnblogs.com/jianjialin/archive/2012/09/19/2694108.html

總結

以上是生活随笔為你收集整理的mdx 聚合函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。