“报表”构建器中使用Analysis Services的动态日期

时间:2017-09-06 21:05:35

标签: sql-server ssas mdx reportbuilder3.0

寻求这方面的帮助。我正在编写Report Builder中的报表,该报表使用来自Analysis Services多维数据集的数据,当涉及到任何日期/时间数据时,它会给我带来很多问题。我正在尝试构建一个动态报告,允许报告根据查看时间进行更新。我通过设置参数(@FromDateDate@ToDateDate)来完成此操作。不幸的是,MDX似乎讨厌对我来说毫无意义的日期。

我的目标是在过去三个月内获取数据,@ToDateDateToday()@FromDateDate过去3个月,我可以使用此功能实现(=DateAdd(DateInterval.Day,-90,Today()) )。然而,那些与MDX不太合适。

我的查询如下:

SELECT 
  NON EMPTY 
    {[Measures].[Work Item Count]} ON COLUMNS
 ,NON EMPTY 
    {
        [Date].[Year - Month - Date Hierarchy].[Date].ALLMEMBERS*
        [Work Item].[System_State].[System_State].ALLMEMBERS*
        [Work Item].[Microsoft_VSTS_Common_Severity].[Microsoft_VSTS_Common_Severity].ALLMEMBERS
    }
  DIMENSION PROPERTIES 
    MEMBER_CAPTION
   ,MEMBER_UNIQUE_NAME
   ON ROWS
FROM 
(
  SELECT 
      StrToMember
      (@FromDateDate
       ,CONSTRAINED
      )
    : 
      StrToMember
      (@ToDateDate
       ,CONSTRAINED
      ) ON COLUMNS
  FROM 
  (
    SELECT 
      {[Work Item].[System_WorkItemType].&[Bug]} ON COLUMNS
    FROM 
    (
      SELECT 
        {
          [Team Project].[Team Project Hierarchy].&[{6F43CBFD-2E98-4CA7-B428-0B732603517A}]
        } ON COLUMNS
      FROM [Work Item]
    )
  )
)
WHERE 
  (
    [Team Project].[Team Project Hierarchy].&[{6F43CBFD-2E98-4CA7-B428-0B732603517A}]
   ,[Work Item].[System_WorkItemType].&[Bug]
  )
CELL PROPERTIES 
  VALUE
 ,BACK_COLOR
 ,FORE_COLOR
 ,FORMATTED_VALUE
 ,FORMAT_STRING
 ,FONT_NAME
 ,FONT_SIZE
 ,FONT_FLAGS;

通过将数据集属性中的参数值调整为此,我能够弄清楚如何基本上注入适当的格式 -

="[Date].[Date].&["+format(Parameters!FromDateDate.Value,"yyyy-MM-ddThh:mm:ss")+"]"

我的两个参数的默认值为:

=DateAdd(DateInterval.Day,-90,Today())  and =Today()

当我运行报告时,出现以下错误:

  

违反了STRTOMEMBER函数中CONSTRAINED标志所施加的限制。

现在,如果我从CONSTRAINED函数中删除STRTOMEMBER,我会收到另一个错误。我还尝试删除整个STRTOMEMBER函数,只使用我可以在Management Studio中工作但不在“报表”构建器中工作的参数。请帮忙!我尝试了很多不同的方法,但仍然没有成功。请告诉我需要哪些其他信息。

另一件事 -

如果我删除数据集属性中参数值的日期格式中的T,如下所示:

="[Date].[Year - Month - Date Hierarchy].[Date].&["+format(Parameters!FromDateYearMonthDateHierarchy.Value,"yyyy-MM-dd hh:mm:ss")+"]"

我收到以下错误:

  

'2017-06-08 12:00:00'字符串无法转换为日期类型。

1 个答案:

答案 0 :(得分:1)

所以如果有人有兴趣,这里是解决方案。我在网上看到了大量的论坛帖子,没有人有具体的答案,所以我看到这是一个常见的问题 - 这个链接的解决方法是有效的,并且确实有效:

Using Dynamic MDX in Reporting Services

我的问题是我的“注入”日期的格式。运行我的@ToDateDate@FromDateDate参数生成的查询时...

  

(注意:改变之后我现在做了我的参数   @FromDateYearMonthDateHierarchy和'@ ToDateYearMonthDateHierarcy`   您将在我的参数值函数中注意到)

我的参数值以下列格式显示:

[Date].[Year - Month - Date Hierarchy].[Date].&[2010-12-31T00:00:00]

为了解决这个问题,我的“注射声明”必须如下:

"[Date].[Year - Month - Date Hierarchy].[Date].&[" & Format(CDate(Parameters!FromDateYearMonthDateHierarchy.Value),"yyyy-MM-dd") & "T00:00:00]"

使用"yyyy-MM-dd") & "T00:00:00]"的实际日期格式,所以最后小时分钟和秒钟让我头疼的是什么。注入工作完美,但只需要注意日期和时间的格式。我真的希望这有助于某人!