寻求这方面的帮助。我正在编写Report Builder中的报表,该报表使用来自Analysis Services多维数据集的数据,当涉及到任何日期/时间数据时,它会给我带来很多问题。我正在尝试构建一个动态报告,允许报告根据查看时间进行更新。我通过设置参数(@FromDateDate
和@ToDateDate
)来完成此操作。不幸的是,MDX似乎讨厌对我来说毫无意义的日期。
我的目标是在过去三个月内获取数据,@ToDateDate
为Today()
,@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'字符串无法转换为日期类型。
答案 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]"
的实际日期格式,所以最后小时分钟和秒钟让我头疼的是什么。注入工作完美,但只需要注意日期和时间的格式。我真的希望这有助于某人!