2016-08-25 99 views
1
SELECT 
    [Measures].[Internet Sales Amount] ON COLUMNS 
,BottomCount 
    (
    NonEmpty([Customer].[Customer].[Customer].MEMBERS) 
    ,10 
    ,[Measures].[Internet Sales Amount] 
) ON ROWS 
FROM [Adventure Works] 
WHERE 
    [Date].[Calendar].[Calendar Year].&[2005]; 

以上查詢顯示我造成具有NULL度量值去年10個客戶名稱。我正在使用Adventure作品Cube。MDX查詢BOTTOMCOUNT功能

根據我的理解,「bottomcount」對於「mdx」查詢中的where子句無法正常工作。我想用度量值獲取2005年的最後10個客戶名稱,希望我正在尋找不使用關鍵字「DESCENDANTS」的解決方案。

請讓我知道,以防萬一,我做錯了什麼。

回答

1

這給一試:

bottomcount(
    nonempty(
     [Customer].[Customer].[Customer].Members 
     ,[Measures].[Internet Sales Amount] 
    ) 
    ,10 
    ,[Measures].[Internet Sales Amount] 
) 

你越來越有NULL客戶名稱,因爲在OLAP你正在做的2個維度(措施之間的笛卡爾乘積是一個特殊的尺寸,但它仍然作爲一個維度)沒關係,你沒有價值,它仍然會交叉加入你的2集中的成員,除非你只是請求非空值,它仍然會給你NULL。

+0

感謝@mxix你的答案。如果你能告訴我爲什麼我在mdx查詢中獲得NULL度量值的客戶名稱的原因,或者可以向我推薦一篇與此相關的文章,那將非常感謝您。 –

1

如果你想自己的完整的互聯網銷售金額,然後將一些邏輯到WITH條款:

WITH 
    SET bot AS 
    NonEmpty 
    (
     [Customer].[Customer].[Customer].MEMBERS 
    ,(
     [Measures].[Internet Sales Amount] 
     ,[Date].[Calendar].[Calendar Year].&[2005] 
    ) 
    ) 
SELECT 
    [Measures].[Internet Sales Amount] ON COLUMNS 
,BottomCount 
    (
    bot 
    ,10 
    ,[Measures].[Internet Sales Amount] 
) ON ROWS 
FROM [Adventure Works]; 
+0

感謝@whytheq爲您的答案。我的查詢和mxix提供的查詢得到了不同的結果(在上面)。我只是想和你一樣證實。 –

+0

礦山回報 - 2005年所有擁有互聯網金額的客戶>查找其中最低的10個>然後返回這10個客戶的_total_互聯網銷售額....因此它將顯示每個最低10個客戶的終身銷售額在2005年 – whytheq

+0

thany你@whytheq。現在我明白了。我非常感謝你的回答。 –