Sql SSRS:条件数据集定义的模式

Sql SSRS:条件数据集定义的模式,sql,sql-server,tsql,ssrs-2012,Sql,Sql Server,Tsql,Ssrs 2012,我正在开发SSRS报告,需要用户选择(通过参数)来检索实时数据或历史数据 实时数据和历史数据的源是SQL Server数据库中的独立对象(实时数据的视图;接受历史数据的日期参数的表值函数),但它们的模式(它们返回的列)是相同的,因此除了数据集定义外,报表的其余部分不需要知道其源是什么 dataset查询从多个数据库对象中提取,并在select中包含联接和case语句 我可以根据下面列出的我所描述的参数选择(其中一些我已经测试过)使用几种方法来呈现来自不同来源的数据 主要目标是确保检索实时数据(主

我正在开发SSRS报告,需要用户选择(通过参数)来检索实时数据或历史数据

实时数据和历史数据的源是SQL Server数据库中的独立对象(实时数据的视图;接受历史数据的日期参数的表值函数),但它们的模式(它们返回的列)是相同的,因此除了数据集定义外,报表的其余部分不需要知道其源是什么

dataset查询从多个数据库对象中提取,并在select中包含联接和case语句

我可以根据下面列出的我所描述的参数选择(其中一些我已经测试过)使用几种方法来呈现来自不同来源的数据

主要目标是确保检索实时数据(主要用例)的性能不会受到逻辑的存在和利用来支持历史用例的不当影响。此外,解决方案(包括数据库对象和rdl)的易维护性是次要但重要的因素

  • 在数据集查询文本中使用表达式,使用字符串连接有条件地返回包含正确源的完整SQL查询文本Pros:可以解析为不受任何给定执行的“其他”用例污染的直接查询。报告的所有逻辑都包含在报告中缺点:使用起来很糟糕,并且对冗长的SQL有限制
  • 使用报表代码模块中的函数执行与1相同的操作优点:根据1,但设计时体验稍好缺点:如1所示,但也增加了另一层抽象,降低了维护的易用性
  • 在数据库上实现多步骤TVFs,使用T-SQL中的逻辑处理参数并检索正确的数据优点:t-SQL功能的灵活性,不涉及字符串生成/替换。可以从结果中选择*并在报表的数据集查询中应用其他报表参数缺点:与在线查询相比,性能受到很大影响。将一些逻辑移到rdl之外
  • 实现与第3步相同的存储过程优点:根据3,但不易于选择*缺点:根据第3条
  • 实现将实时数据和历史数据合并在一起的内嵌TVF,但使用一个虚拟输入参数,该参数在源的where子句中添加一些解析为1=0的内容,而这些内容是不相关的专业人士:坚持在线查询方法,其他专业人士参见第3条Cons:感觉像是黑客,只为已知返回0行的查询组件添加性能影响。增加了查询的复杂性

  • 此时我倾向于选择3或4,但我渴望听到首选方法是什么(即使未在此处列出)以及为什么?

    直播和历史有什么区别?是“实时”数据,数据的变化和历史不一样吗


    是否无法将实时/历史数据复制或推送到专门为报告而构建的数据仓库中?

    实时数据和历史数据有什么区别?是“实时”数据,数据的变化和历史不一样吗

    无法将实时/历史数据复制或推送到专门为报告而构建的数据仓库中吗?

    直接从源应用程序数据库查询“实时”数据。有一个要求,它是活的,没有滞后,因此没有把它推到一个ODS/DW。历史数据一夜之间被推送到DW。直接从源应用程序数据库查询“实时”数据。有一个要求,它是活的,没有滞后,因此没有把它推到一个ODS/DW。历史数据在一夜之间被推送到数据仓库。