SSRS报告日期参数错误查询SSAS表格模型 - ' 5'是不正确的

时间:2017-03-03 14:25:37

标签: sql-server datetime reporting-services parameter-passing ssas-tabular

在Visual Studio(2015年企业版)中可见的错误的实际文本是这样的。

  

本地报告处理期间发生错误。   
报告处理期间发生错误。   
数据集' ProductivityDS'的查询执行失败。   
' 5'的语法是不正确的。 (3/2/2017 5:00:00 AM)

它正在查询我创建和部署的简单表格模型。该模型有四个表。员工表,工作卡表(包含工作号,小时等),日期维度表和工资核算时间表。我们的目标是报告针对订单的可计费时间与实际参与时间的直接关系"直接"部门。

表是 [员工],[人工日期](日期昏暗),[ADI时间明细](工资单)和[Route Trans](工作卡)。措施是[ADI时间细节]。[直接时间]和[路线转换]。[获得时间总和]。

我通常不会使用查询设计器,因为我对SQL非常好,但这是我第一次使用SSAS,所以我在这里使用它。

我带来了[人工日期]。[日期],[员工]。[员工ID],[员工]。[员工姓名],[措施]。[获得时间总和]和[措施]。[直接时间]。我还在顶部添加了Dimension。这是{" Dimension":"人工日期","层次":"日期","运营商":& #34; Equal"," Filter Expression":" {6/26/2013}","参数":" Checked&#34 ;}

在查询设计器中执行查询,它按预期生成数据集。

切换到设计模式,查询文本为此

SELECT NON EMPTY { [Measures].[SUM OF Earned Hours], 
       [Measures].[Direct Hours] } 
ON COLUMNS, 
       NON EMPTY { ([Labor DATE].[DATE].[DATE].allmembers * [Employee].[Employee ID].[Employee ID].allmembers * [Employee].[Employee Name].[Employee Name].allmembers ) } DIMENSION PROPERTIES member_caption, 
       member_unique_name 
ON ROWS 
FROM   ( 
              SELECT ( STRTOSET(@labordatedate, constrained) ) 
              ON COLUMNS 
              FROM   [Model]) CELL PROPERTIES VALUE, 
       back_color, 
       fore_color, 
       formatted_value, 
       format_string, 
       font_name, 
       font_size, 
       font_flags

单击“确定”接受查询,然后返回“数据集”属性,单击“参数”将名为LaborDateDate的参数(内部查询)绑定到[@PerDate](报告参数)。

报告参数[@PerDate]使用此表达式作为其默认值:

=DateAdd(DateInterval.Day, -1, Today.Date)

查询在查询构建器中有效,但在报表执行时失败。日期维度和参数中的日期都是零小时日期时间,所以我很困惑5 AM的来源。

我在这里做错了什么?

解答后的解决方案

我按原样离开了[@PerDate]。我创建了第二个参数,标记为hidden,名为[@PerDateStr],数据类型为Text。我将其中的可用和默认表达式设置为...

="[Labor Date].[Date].&[" & Format(Parameters!PerDate.Value, "yyyy-MM-dd") & "T00:00:00]"

然后在数据集中,我将内部查询参数LaborDateDate映射到报告参数[@PerDateStr]。成功了!

1 个答案:

答案 0 :(得分:0)

请改为使用Labor Date维度中的有效成员:

="[Labor Date].[Date].&[" & DateAdd(DateInterval.Day, -1, Today.Date) & "]"

确保根据尺寸值格式化日期值。