用于.NET中报告解决方案的数据架构

时间:2013-09-13 14:06:14

标签: .net reporting-services crystal-reports reporting business-intelligence

我认为我们的情况非常标准。我们构建了一个相当复杂的数据模型,其中包含大约100个表和许多关系,用于存储与此复杂业务问题相关的数据(具有100个用户的Intranet系统)。当然还有一个用户界面,自从应用程序构建完成以来,我们已经走下了提供一些标准报告甚至CSV数据下载(基于这些标准报告)的传统途径。在大量使用系统之后,用户群需要越来越复杂的报告,以至于创建这些“一次性”是没有意义的。

明显的下一步(至少在我看来)是将报告的创建放在业务用户的手中。这可能是Crystal Reports,SQL Server Reporting Services或Tableau等BI工具。由于对这些工具的经验不多,我感到很茫然。此外,我努力解决复杂数据库表的问题,并且相信用户社区除了打开我们的模式以及用户永远不会看到的所有数据库计算字段之外,还可以理解表的复杂关系。

我相信我在这里有一些选择(就数据架构和一般方向而言),它们包括:

  1. 通过API或更简化的数据库表“视图”简化业务用户的架构 - 这对业务用户更好,但需要前期工作和可维护性。
  2. 让业务用户看到所有表格 - 这显然使维护简单,但需要文档,培训,解释等。
  3. 其他BI选择(坦白地说我不熟悉) - OLAP cube等。
  4. 我正在寻找有关该领域经验的一些反馈,并就数据架构和/或产品使用方面提出了建议。

3 个答案:

答案 0 :(得分:2)

你想到的解决方案很复杂。

第一步正在包装数据。由于您希望为用户提供一些报告控制权,因此要了解用户并非所有表都是必需的,并且并非所有联接对用户都有意义。您不能直接向它们公开视图,因此您应该创建用户友好的包装器。就像业务对象一样,具有对它们更有意义的名称和属性的东西。用户将仅限于使用这些对象。对象应该在内部处理表,连接和视图。在课程中,他们不应该以任何方式修改基础数据。

第二步将为用户提供一种选择器类型的东西。这将是一项非常复杂的任务,因为您必须允许用户选择应使用哪些业务对象?他们如何通过以某种方式连接来组合来自不同对象的数据?他们希望在报告中看到哪些数据?他们可能希望在显示之前应用Sum,Avg,Min,Max等一些函数,他们可能希望有时对字段进行分组。有时需要在不同的字段上进行排序,有时您的用户可能希望指定一个标准。所以你的应用程序应该以某种方式允许这个。

第3步将成为设计师。这应该更容易。要么限制用户显示简单的表格报告,要么他们没有太多控制权。否则,您可能必须设计一个报表设计器,允许他们以他们喜欢的任何方式放置字段。我的建议是,最初您应该将它们限制为仅使用预定义格式列出类型报告。只有字幕和数据会发生变化。

最初仅用于演示目的,设计一些简单的小型业务对象。 2或3个不超过7到8个属性的对象是可以的。目前没有任何功能可用,它们只会让您/您的团队难以实施。应允许此阶段的用户定义简单条件和单个排序顺序不超过该条件,并且它们是可以显示的预定义报告格式。如果想法成功并且您的客户喜欢它,那么您可以将其扩展到100多个表,复杂的功能和标准条件。

答案 1 :(得分:2)

您应该控制报告的设计和开发。特别是在数据库结构复杂的情况下。请记住,如果报告显示错误的数据,您的软件将承担责任。

创建数据库文档很昂贵,所以我要做的是向客户询问我可以培训的人。理想情况下,此人也会为数据库创建一些文档。我建议你也考虑编写SQL视图和存储过程,让客户端创建水晶报告。通过这种方式,您将提供数据,但他们将能够以他们想要的方式呈现

解决报告开发问题后,您需要找到运行报告的方法。您需要一个通用引擎,它可以添加和运行外部报告。我想你需要开发一个新的模块或应用程序,它将分析报告,准备参数屏幕并运行它们。报告服务将是一个不错的选择,因为您可以安装和配置服务器,并且您已完成。如果他们拥有SQLServer许可证,则免费。如果您决定使用Crystal报表 - Crystal Reports服务器也会这样做,但它太贵了,所以我的猜测是,如果您的客户已经拥有许可证,它将是一个选项。 如果应用程序是Intranet应用程序,您可以尝试一些第三方查看器。它们很便宜。我相信1000美元足以购买100个用户的许可证。可以从以下链接获得第三方Crystal报表查看器的良好列表:http://kenhamady.com/cru/comparisons/crystal-reports-viewers

我使用了其中的一些,我建议您检查R-Tag(www.r-tag.com) - 它适用于Crystal报告和SSRS,并支持Intranet安装。 Jeff-net(http://www.jeff-net.com/jnrrv.htm)也会很好(对于Crystal报道)。你可以尝试其他的 - 有一些是免费的,但是首先用很少的用户测试它们,因为网络环境中的维护可能很昂贵。

答案 2 :(得分:1)

老实说,你的主要问题是你的前端架构是什么样的?客户端喜欢WPF或Windows窗体或ASP.NET或HTML?它确实产生了巨大的变化,因为我对Jquery和Javascript构建的各种报告工具感到惊讶,比如'HighCharts','FusionCharts','DevExpress'(更大的附加内容的一部分),他们可以做什么与传统的SSRS和Crystal Reports相比。网络报告在事件驱动报告,分层报告或切片

等领域击败客户报告

老实说,如果它是Crystal和SSRS之间的选择,我会选择SSRS,因为我认为SSRS更容易重用它的一部分。通常,SSRS在每个报告中都有三个部分:

  1. 与数据库,平面文件或服务(或其他数据容器)的连接。可以共享以供重复使用。
  2. 表示要访问的数据的数据集。可以共享以供重用。
  3. 一组可以是表格,矩阵或图表的对象
  4. SSRS的主要卖点是,您可以快速了解报告构建和发布报告的基础知识,并拥有可以启用电子邮件订阅的内置服务(前提是您有一个可用的SMTP服务器),订阅中的文件保存,数据集的缓存,并通过.NET访问报告,直接与服务交谈,甚至根据应用程序中的事件使服务呈现报告。

    虽然SSRS有一些开箱即用的限制,但可以通过HTML表单,.NET访问或其他URI来使用服务,使其相当灵活。

    Tableau几乎是分析师的工具,可以为您完成大部分编码工作。如果你想给人们一个沙盒并制作像测量一样的立方体,然后玩数据,那就非常令人印象深刻了。虽然调整它并没有太多搞乱,所以它的布局可能就是你所看到的就是你所得到的。但是说它可以做很多事情,只需要了解空间数据,多滑块输入,绘图格式以及其他未构建到其他报告服务中的任务,这是非常令人印象深刻的。