【发布时间】:2012-08-18 16:13:31
【问题描述】:
问题:
我们(也就是说我,一个人)应该实现“用户生成报告”(最多1个月,月底/新月初展示)。
问题1:
我所说的用户是指不具有任何技术技能(如 SQL 或 VBA)的用户。
问题 2:
技术仅限 .NET,所以我不能使用 Java(以及基于 Java 的东西,比如 Jasper)
问题 3:
应该可以导出到 Excel(我的意思是 XLS 或 XLSX,而不是 XML 或 CSV)
问题 4:
应该可以对数据进行分组(多组)
问题 5:
数据库是 Microsoft SQL-Server(推测是 2008 R2,但最终可能是 2008 R1 或 2005)
奖励“问题”:
基于 Web,使用 ASP.NET WebForms,但如果无法使用 Web,也可以基于桌面
除了这些要求和时间限制的荒谬之外......
一种解决方案是由 SSRS(SQL-Server 报告服务)提供的报告生成器。 但是,有一些缺点,我认为是非常严重的:
- 创建报表的用户基本上仍然需要了解 SQL(左、右、内、外连接及其后果)。由于用户可能不理解其中的区别,因此如果他们没有得到或得到错误的结果(例如空列上的内部联接),他们只会责备我。
创建报告的用户对数据库/数据结构一无所知(例如软删除、持续时间日期)。此外,垃圾进垃圾出可能会成为一个问题,包括错误的数据等。...
如果他们要创建一个矩阵,并且要对 未四舍五入 值的小计求和,则总计的总和不会与小计的总和相匹配,因为报告将在逗号后仅显示 2 位数字(因此将值四舍五入为 2 位)用于小计,但它将根据所有值的总和(未四舍五入)而不是总和来计算总和小计(四舍五入)。同样,他们会为此责备我或数据或报告生成器。
由于报表生成器不会在添加一个带有连接的附加表后显示结果数,用户将无法判断他们是否拥有正确的记录数,这将不可避免地导致在错误的结果中。再说一遍,他们会怪我的。
日期过滤器:需要应用它们,但不一定在 where 中,而是在 join 中。报表生成器不支持。这样的严肃报告是不可能的。
状态:如前所述,我们使用软删除和状态字段为 99 的已删除记录。 where 中的过滤状态是危险的,有时必须发生在 join 中。同样,报表生成器不支持这一点,除非您使用原始 SQL,因为用户不会了解 SQL,这毫无意义。
安装报表生成器需要管理员权限,或者需要客户公司的 IT 部门才能安装。以及适用于相应 ReportBuilder 的相应 .NET 框架,以及适用于相应 Report-Server 的相应 ReportBuilder,因为 SQL-Server 2005 Reporting Service 不适用于 SQL-Server 2008 Reporting Services 的报告,而 SQL 2008 R1 不适用于R2。这也要求所有能够做到这一点的用户都处于某个 SQL-Server 报告服务报告生成器用户角色中,这要求 IT 部门将用户放入适当的活动目录组中,到目前为止,该组从未与任何我们的客户。另外,我不相信 IT 部门知道他们安装了适当的 ReportBuilder,如果他们同意安装的话。
现在我曾经(很久以前)碰巧在 youtube 上查看了 SSAS(SQL-Server 分析服务)的演示文稿。
但是我再也找不到链接了。
但无论如何,我没有任何 SSAS 经验,只有 SSRS。
我认为有可能以这样一种方式滥用 SSAS,即用户可以通过 Excel 连接到它,并获取数据并或多或少地按照他们想要的方式对它们进行汇总。此外,他们将能够看到原始数据。
而且我可以预先准备一些查询表中的原始数据(我也可以通过数据集使用 reportbuilder)。
有没有人足够了解 SSAS,可以告诉我在这段时间内这是否可行?
如果分析服务器和 Excel 版本 (2007/2010) 所需的加载项与所有分析服务器版本兼容,或者从 Excel 2007 访问 2008 R2 或从 Excel 2010 访问 SSAS-2005 时出现问题。
或者我是否一定会遇到 SSAS 比 ReportBuilder 更多的问题?
【问题讨论】:
标签: reporting ssas reportbuilder ssas-2008