【问题标题】:MDX Month To Date Year To Date QueryMDX 月至今年至今查询
【发布时间】:2016-09-26 09:27:20
【问题描述】:

我正在尝试构建一个查询,该查询将从多维数据集中检索值并根据当前日期构建月至今和年至今 SSRS 报告。我基本上是在尝试构建一个应该看起来像这样的报告......

Type Customer Product Group Quantity Shipped MTD Quantity Shipped YTD
=====================================================================

OE   CompanyX Bikes                    5                 396 
              Helmets                  10                254

     CompanyY Repair Kits              93                653
              T-shirts                 38                564
              Shoes                    10                120

我真的很挣扎,到目前为止,这就是我想出的......

 WITH 
 MEMBER [Measures].[Quantity Shipped YTD] As Sum(YTD([Date].[Dates].CurrentMember),[Measures].[Quantity Shipped])
 Member [Measures].[Quantity Shipped MTD] As Sum(MTD([Date].[Dates].CurrentMember),[Measures].[Quantity Shipped])
 SELECT NON EMPTY { [Measures].[Quantity Shipped MTD], [Measures].[Quantity Shipped YTD] } ON COLUMNS,
 NON EMPTY { ([Customer].[Business Type].[Business Type].ALLMEMBERS * [Customer].[Customer].[Customer].ALLMEMBERS * [Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
 FROM ( SELECT ( -{ [Customer Sales].[Summary Prod Group 1].&[Missing Product Group] } ) ON COLUMNS 
 FROM ( SELECT ( { [Customer].[Customer Code].&[2.254E3], [Customer].[Customer Code].&[2.063E3], [Customer].[Customer Code].&[2.183E3], [Customer].[Customer Code].&[2.261E3], [Customer].[Customer Code].&[5.3753E4], [Customer].[Customer Code].&[1.3084E5], [Customer].[Customer Code].&[1.37058E5] } ) ON COLUMNS 
 FROM ( SELECT ( { [Customer].[Business Type].&[OE] } ) ON COLUMNS 
 FROM ( SELECT ( [Date].[Day].&[Now()]) ON COLUMNS
 FROM [Sales])))) WHERE ( [Customer].[Customer Code].CurrentMember )  
 CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

上面的查询并没有检索到任何东西。我得到的只是一个空白的结果集。我需要完成更多的领域,但我假设如果我可以将数量运到工作,我可以得到其他所有东西。请帮忙。发送

【问题讨论】:

  • 你有一个叫这个的成员?! [Date].[Day].&[Now()]

标签: sql-server date reporting-services ssas mdx


【解决方案1】:

目前您没有任何日期 in context 这意味着 currentmember 不会找到太多 - 要拥有一个日期 in context 您需要将实际日期成员添加到您的 WHERESELECT子句 - 而不是 subselectSELECT 子句。

Now() 是一个不寻常的成员名称,因为它是一个 vba 函数,但如果这确实是名称,那么您可以将其移至 where 子句:

WITH 
  MEMBER [Measures].[Quantity Shipped YTD] AS 
    Sum
    (
      YTD([Date].[Dates].CurrentMember)
     ,[Measures].[Quantity Shipped]
    ) 
  MEMBER [Measures].[Quantity Shipped MTD] AS 
    Sum
    (
      MTD([Date].[Dates].CurrentMember)
     ,[Measures].[Quantity Shipped]
    ) 
SELECT 
  NON EMPTY 
    {
      [Measures].[Quantity Shipped MTD]
     ,[Measures].[Quantity Shipped YTD]
    } ON COLUMNS
 ,NON EMPTY 
    {
        [Customer].[Business Type].[Business Type].ALLMEMBERS*
        [Customer].[Customer].[Customer].ALLMEMBERS*
        [Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS
    } ON ROWS
FROM 
(
  SELECT 
    {
      [Customer].[Customer Code].&[2.254E3]
     ,[Customer].[Customer Code].&[2.063E3]
     ,[Customer].[Customer Code].&[2.183E3]
     ,[Customer].[Customer Code].&[2.261E3]
     ,[Customer].[Customer Code].&[5.3753E4]
     ,[Customer].[Customer Code].&[1.3084E5]
     ,[Customer].[Customer Code].&[1.37058E5]
    } ON 0
   ,{[Customer].[Business Type].&[OE]} ON 1
   ,-
      {
        [Customer Sales].[Summary Prod Group 1].&[Missing Product Group]
      } ON 2
  FROM [Sales]
)
WHERE 
  [Date].[Day].&[Now()];

我怀疑这个[Date].[Day].&[Now()]; 不是会员的名字,而您正在尝试做一些动态的事情,在这种情况下您需要使用strToMember 进行研究

我在 AdvWrks 立方体中构建了类似的东西:

WITH 
  MEMBER [Measures].[_YTD] AS 
    Aggregate
    (
      YTD([Date].[Calendar].CurrentMember)
     ,[Measures].[Order Quantity]
    ) 
  MEMBER [Measures].[_MTD] AS 
    Aggregate
    (
      MTD([Date].[Calendar].CurrentMember)
     ,[Measures].[Order Quantity]
    ) 
SELECT 
  {
    [Measures].[_YTD]
   ,[Measures].[_MTD]
  } ON COLUMNS
 ,[Product].[Category].Children ON ROWS
FROM [Adventure Works]
WHERE 
  [Date].[Calendar].[Date].&[20050805];

它返回这个:

如果我想通过使用 vba 函数 now() 使上述动态化,那么这需要发生:

WITH
  MEMBER [Measures].[Key for Today] AS 
    Format
    (
      Now()
     ,'yyyyMMdd'
    ) 
  MEMBER [Measures].[Today string] AS 
    '[Date].[Calendar].[Date].&[' + [Measures].[Key for Today] + ']'  
  MEMBER [Measures].[_YTD] AS 
    Aggregate
    (
      YTD([Date].[Calendar].CurrentMember)
     ,[Measures].[Order Quantity]
    ) 
  MEMBER [Measures].[_MTD] AS 
    Aggregate
    (
      MTD([Date].[Calendar].CurrentMember)
     ,[Measures].[Order Quantity]
    ) 
SELECT 
  {
    [Measures].[_YTD]
   ,[Measures].[_MTD]
  } ON COLUMNS
 ,[Product].[Category].Children ON ROWS
FROM [Adventure Works]
WHERE 
  StrToMember
    (
      [Measures].[Today string]
     ,constrained
    ) ;

【讨论】:

  • 谢谢,谢谢,非常感谢!稍作调整,我就可以使脚本正常工作。是的,我试图使其动态化,因此使用了 Now() 函数。我将通过回答问题来粘贴我用于报告的代码。
  • @GarethS 很高兴 - 很高兴它有帮助。
【解决方案2】:

感谢whytheq,这就是我想出的……

WITH
  MEMBER [Measures].[Key for Today] AS 
    Format
    (
      Now()
     ,'yyyyMMdd'
    ) 
  MEMBER [Measures].[Today string] AS 
    '[Date].[Dates].[Day].&[' + [Measures].[Key for Today] + ']' 

  MEMBER [Measures].[Quantity Shipped MTD] AS 
    Sum
    (
      MTD([Date].[Dates].CurrentMember)
     ,[Measures].[Quantity Shipped]
    ) 
  MEMBER [Measures].[Quantity Shipped YTD] AS 
    Sum
    (
      YTD([Date].[Dates].CurrentMember)
     ,[Measures].[Quantity Shipped]
    ) 

SELECT NON EMPTY
  {
    [Measures].[Quantity Shipped MTD],
    [Measures].[Quantity Shipped YTD]
  } ON COLUMNS, NON EMPTY
  {
    [Customer].[Business Type].[Business Type].ALLMEMBERS*
    [Customer].[Customer].[Customer].ALLMEMBERS*
    [Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS} On Rows
From
(
    SELECT 
    {
      [Customer].[Customer Code].&[2.254E3]
     ,[Customer].[Customer Code].&[2.063E3]
     ,[Customer].[Customer Code].&[2.183E3]
     ,[Customer].[Customer Code].&[2.261E3]
     ,[Customer].[Customer Code].&[5.3753E4]
     ,[Customer].[Customer Code].&[1.3084E5]
     ,[Customer].[Customer Code].&[1.37058E5]
    } ON 0
   ,{[Customer].[Business Type].&[OE]} ON 1
   ,-
      {
       [Customer Sales].[Summary Prod Group 1].&[Missing Product Group]
      } ON 2
From [Sales])
Where
StrToMember
    (
      [Measures].[Today string]
     ,constrained
    )

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 1970-01-01
    • 2020-01-19
    • 2021-09-16
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多