1

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

显而易见的下一步(至少在我看来)是将报告的创建交给业务用户。这可以是诸如 Crystal Reports、SQL Server Reporting Services 之类的东西,也可以是诸如 Tableau 之类的 BI 工具。我对其中许多工具没有太多经验,我不知所措。此外,我在复杂数据库表的问题上苦苦挣扎,并相信用户社区可以理解表的复杂关系,此外还可以使用用户永远不会看到的所有仅限数据库的计算字段打开我们的模式.

我相信我在这里有几个选择(就数据架构和总体方向而言),它们包括:

  1. 通过 API 或更简化的数据库表“视图”向业务用户简化模式 - 这对业务用户来说更好,但需要前期工作和可维护性。
  2. 让业务用户查看所有表格——这显然使可维护性变得容易,但需要文档、培训、解释等。
  3. 其他 BI 选择(坦率地说我不熟悉)——OLAP 多维数据集等。

我正在寻找有关该领域经验的一些反馈以及数据架构和/或产品使用方面的建议方向。

4

3 回答 3

2

您想到的解决方案是一个复杂的解决方案。

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

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

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

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

于 2013-09-13T18:10:18.660 回答
2

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

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

解决报告开发问题后,您需要找到运行报告的方法。您需要一个通用引擎,它将能够添加和运行外部报告。我猜你需要开发一个新的模块或应用程序来分析报告,准备参数屏幕并运行它们。报告服务将是一个不错的选择,因为您可以安装和配置服务器,然后就完成了。如果他们有 SQLServer 许可证,它是免费的。如果您决定使用 Crystal 报表 - Crystal Reports 服务器也会这样做,但它太贵了,所以我猜如果您的客户已经拥有许可证,这将是一个选项。如果应用程序是 Intranet 应用程序,您可以尝试一些 3rd 方查看器。它们很便宜。我相信 1000 美元足以为 100 个用户购买许可证。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 报告)。您可以尝试其他的——有一些是免费的,但首先要在少数用户的情况下进行测试,因为在网络环境中的维护可能很昂贵。

于 2013-09-13T18:33:12.430 回答
1

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

老实说,如果要在 Crystal 和 SSRS 之间进行选择,我会选择 SSRS,因为作为开发人员,我觉得 SSRS 更容易重用其中的一部分。通常,SSRS 的每份报告都包含三个部分:

  1. 与数据库、平面文件或服务(或其他数据容器)的连接。可以共享重复使用。
  2. 表示要访问的数据的数据集。可以共享重复使用。
  3. 一组可以是表格、矩阵或图形图表的对象

SSRS 的主要卖点是您可以快速学习报告构建和发布报告的基础知识,并拥有一个内置服务,可以启用电子邮件订阅(前提是您有一个工作的 SMTP 服务器)、订阅中的文件保存、数据集缓存以及访问通过 .NET 报告,直接与服务对话,甚至使服务根据应用程序中的事件呈现报告。

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

Tableau 几乎是分析师的工具,可以为您完成大部分编码工作。如果你想给人们一个沙盒,做立方体一样的测量,然后玩数据,这是非常令人印象深刻的。虽然没有过多地调整它,所以它的布局可能就是你所见即所得。但是说它可以做很多开箱即用的事情,在理解空间数据、多滑块输入、绘图格式和其他报告服务中未内置的其他任务方面非常令人印象深刻。

于 2013-09-13T18:16:17.213 回答