2015-05-19 248 views
0

請幫助理解MDX查詢的工作原理。 我已經使用excel連接到多維數據集並構建了一個mdx查詢。總之最後我需要得到該表是這樣的:從olap MDX查詢中選擇數據

     12.01.2015 
     +-------+-------+-------+-----+-------+------    
     | 00:00 | 01:00 | 02:00 | ... | 23:00 | TOTAL 
--------+-------+-------+-------+-----+-------+------ 
Ivan | null | 3 | null | ... | 12 | 38 
Pert | 3 | 8 | null | ... | null | 125 
Sidor | 

我們看到DateTime(小時),FIO(伊萬,切赫等)和值。 立方體的尺寸:Dim DateDim Hour,Dim Users 我試圖從Excel中獲取MDX查詢,但我無法理解如何修改它以獲得我需要的結果。這裏是請求(格式化):

SELECT NON EMPTY 
CrossJoin(
    Hierarchize(
     DrilldownMember(
     { 
      { 
       DrilldownMember(
        { 
         { 
          DrilldownLevel 
           (
            {[Dim Date].[Даты YMD].[All]} 
           ) 
         } 
        }, 
        {[Dim Date].[Даты YMD].[Year Name].&[2015]} 
       ) 
      } 
     }, 
     {[Dim Date].[Даты YMD].[Year Name].&[2015].&[5]} 
    ) 
), 
Hierarchize(
    { 
     DrilldownLevel(
      {[Dim Hour].[Hour Key].[All]} 
     ) 
    } 
)) 
DIMENSION PROPERTIES PARENT_UNIQUE_NAME, 
    [Dim Date].[Даты YMD].[Date Key].[Month Name],[Dim Date].[Даты YMD].[Date Key].[Year Name] ON COLUMNS , 
    NON EMPTY 
    Hierarchize(
     { 
      DrilldownLevel(
       {[Dim Users].[FIO].[All]} 
      ) 
     } 
    ) 
DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS FROM 
(
    SELECT ({[Dim Date].[Даты YMD].[Year Name].&[2015].&[5]} 
) 
    ON COLUMNS 
    FROM [Dwh Sorting]) 
    WHERE ([Measures].[Fact Table Count]) CELL PROPERTIES VALUE, 
    FORMAT_STRING, 
    LANGUAGE, 
    BACK_COLOR, 
    FORE_COLOR, 
    FONT_FLAGS 

它得到的數據爲2015年五月我的目標是獲得一張長條桌(有很多列)像我展示。一個或多個月。

+0

您得到了什麼錯誤? –

+0

他沒有收到任何錯誤。他希望採用不同格式的數據。 – SouravA

+1

@ user2598575 - 假設你有三個月。數據如何看起來像那樣? – SouravA

回答

1

自動生成的Excel代碼會添加很多額外的「位」。

擺脫額外的位我猜在下面的東西。這個腳本應該給你很多專欄 - 假設2015年的每個小時的數據,你最終應該在2015年每天得到24列!

我之所以說「猜測」,因爲我們不知道你的辦公隔間hiearchical結構:

SELECT 
    NON EMPTY 
     Descendants 
     (
     [Dim Date].[Даты YMD].[Year Name].&[2015] 
     ,[Dim Date].[Даты YMD].[Date] //<<this assumes there is a level in Dim date called Date 
    ) 
    * 
     {[Dim Hour].[Hour Key].MEMBERS} ON COLUMNS 
,NON EMPTY 
    [Dim Users].[FIO].MEMBERS ON ROWS 
FROM [Dwh Sorting] 
WHERE 
    [Measures].[Fact Table Count]; 

如果你只需要一個日期範圍的小時,然後嘗試:操作。在這種情況下,您不需要應用Descendants功能:

SELECT 
    NON EMPTY 
     (
     [Dim Date].[Даты YMD].[Date Key].[2014-01-02] 
     : 
     [Dim Date].[Даты YMD].[Date Key].[2015-02-10] 
    ) 
    * 
     {[Dim Hour].[Hour Key].MEMBERS} ON COLUMNS 
,NON EMPTY 
    [Dim Users].[FIO].MEMBERS ON ROWS 
FROM [Dwh Sorting] 
WHERE 
    [Measures].[Fact Table Count]; 
+0

感謝您的回答。它返回一個我們有25列的表格。每小時一列,它彙總所選年份中匹配小時的所有值。所以如果我們有12個月的話每天都會彙總價值。 Dim Date的結構是'Year Name','Month Name'和'Date Key'。所以我把'[Date]'換成了'[Date Key]'並且得到了需要的結果! – user2598575

+0

針對一個簡單的問題。我如何在sql中使用'where'?例如,我只需要獲取'2015.01.10'或範圍從'2015.01.10'到'2015.02.10' – user2598575

+0

我已將第5行修改爲:[Dim Date]。[日期YMD]。[Date Key]。 [2014-01-02]'因此,我只得到'2014-01-02'完美!所以問題是如何獲得日期範圍? – user2598575