MDX 查詢原型

本篇文章記錄 SBS 中 MDX 查詢原型,能夠根據這些查詢原型來解決實際項目中的問題。html

1. 查詢在 2004年1月2日 - 2004年3月1日之間購買過 Bikes 產品的用戶。web

SELECT ([Product].[Category].[Bikes],[Measures].[Internet Sales Amount]) ON COLUMNS,
       NON EMPTY [Customer].[Customer].[Customer].MEMBERS ON ROWS
FROM [Step-by-Step]
WHERE ([Date].[Calendar].[Date].&[20040102]:[Date].[Calendar].[Date].&[20040301])

2. 查詢在 2004年1月2日 - 2004年3月1日之間購買過 Bikes 或 Clothing 產品的用戶。測試

SELECT {
            ([Product].[Category].[Bikes],[Measures].[Internet Sales Amount]),
            ([Product].[Category].[Clothing],[Measures].[Internet Sales Amount])
       }ON COLUMNS,
       NON EMPTY [Customer].[Customer].[Customer].MEMBERS ON ROWS 
FROM (
    SELECT ([Date].[Calendar].[Date].&[20040102]:[Date].[Calendar].[Date].&[20040301]) ON COLUMNS
    FROM [Step-by-Step] 
)

3. 計算200431 - 34日以前60天購買了 Bikes 或者 Clothing 產品的用戶數量。spa

WITH 
MEMBER [Measures].[CustomerCounts] AS
    -- 計算用戶總數
    COUNT(
            NONEMPTY (
                        -- 取購買過 Bikes 的用戶 (當前時間-60天 至 當前時間)
                        {[Customer].[Customer].[Customer].MEMBERS},
                        {([Product].[Category].[Bikes],[Measures].[Internet Sales Amount])}
                        *LASTPERIODS(60,[Date].[Calendar].CurrentMember)
            )  
            +  -- UNION 去掉重複的用戶集合
            NONEMPTY (
                        -- 取購買過 Clothing 的用戶 (當前時間-60天 至 當前時間)
                        {[Customer].[Customer].[Customer].MEMBERS},
                        {([Product].[Category].[Clothing],[Measures].[Internet Sales Amount])}
                        *LASTPERIODS(60,[Date].[Calendar].CurrentMember)
            )  
         ) 
-- 前60天的時間名稱
MEMBER [Measures].[Pre60DateName] AS 
    LASTPERIODS(60,[Date].[Calendar].CurrentMember).Item(0).Name    
SELECT {
            [Measures].[CustomerCounts],
            [Measures].[Pre60DateName]
       } ON COLUMNS,
       [Date].[Calendar].[Date].MEMBERS ON ROWS
FROM 
(
    -- 測試時間範圍
    SELECT ([Date].[Calendar].[Date].&[20040301]:[Date].[Calendar].[Date].&[20040304]) ON COLUMNS
    FROM [Step-by-Step] 
)

4.計算每月第一天到前60購買了 Bikes 或者 Clothing 產品的用戶數量orm

WITH 
MEMBER [Measures].[CustomerCounts] AS
    -- 計算用戶總數
    COUNT(
            NONEMPTY (
                        -- 取購買過 Bikes 的用戶 (當前時間-60天 至 當前時間)
                        {[Customer].[Customer].[Customer].MEMBERS},
                        {([Product].[Category].[Bikes],[Measures].[Internet Sales Amount])}
                        *LASTPERIODS(60,[Date].[Calendar].CurrentMember.FIRSTCHILD)
            )  
            +  -- UNION 去掉重複的用戶集合
            NONEMPTY (
                        -- 取購買過 Clothing 的用戶 (當前時間-60天 至 當前時間)
                        {[Customer].[Customer].[Customer].MEMBERS},
                        {([Product].[Category].[Clothing],[Measures].[Internet Sales Amount])}
                        *LASTPERIODS(60,[Date].[Calendar].CurrentMember.FIRSTCHILD)
            )  
         ) 
-- 前60天的時間名稱
MEMBER [Measures].[Pre60DateName] AS 
    LASTPERIODS(60,[Date].[Calendar].CurrentMember.FIRSTCHILD).Item(0).Name    
SELECT {
            [Measures].[CustomerCounts],
            [Measures].[Pre60DateName]
       } ON COLUMNS,
       [Date].[Calendar].[Month].MEMBERS ON ROWS
FROM 
(
    -- 測試時間範圍
    SELECT ([Date].[Calendar].[Date].&[20040101]:[Date].[Calendar].[Date].&[20040401]) ON COLUMNS
    FROM [Step-by-Step] 
)

 


更多 BI 文章請參看 BI 系列隨筆列表 (SSIS, SSRS, SSAS, MDX, SQL Server)htm

若是以爲這篇文章看了對您有幫助,請幫助推薦,以方便他人在 BIWORK 博客推薦欄中快速看到這些文章。blog

相關文章
相關標籤/搜索