【问题标题】:Allow web users to dynamically create reports from Postgresql允许 Web 用户从 Postgresql 动态创建报告
【发布时间】:2012-11-23 02:42:58
【问题描述】:

我有一个带有 Postgresql 后端的 Web 应用程序。为了简单起见,假设它是一个带有 Web 服务器日志的表(实际上是表和引用的混合)。由于我的用户对该表中的不同数据有不同的需求,我正在考虑实施一个 Web 前端,他们可以在其中按需运行自己的报告(即启动后台作业来为他们运行它......有些查询可能很慢,因为实例子选择同一个表、聚合等)。

是否有实施此类自定义报告工具的最佳实践?

我正在考虑以下方案作为可能的解决方案:

  • 用户构建查询并选择他/她想要的字段,该字段被翻译成 SQL 查询
  • SQL 将查询结果选择到一个名为“report_randomname479472984”的新表中,该表作为后台作业运行,甚至可能将该表名添加到包含有关报告的一些元信息的报告表中。
  • Web 界面将名称以“report_”开头的所有表列为可用报告或查询有关可用报告表的元信息表。
  • 当用户显示报告时,网页会构建为 html 表,其中数据库中的每个可用列都是 html 表中的列

这是从 SQL 后端创建动态按需报告的一种不错的方法吗?执行此操作时我需要注意什么(SQL 注入除外)?

有什么方法可以强制元表的完整性,以便每个报告始终存在一行_,并且元表中的所有行实际上都指向一个有效的报告_桌子?

【问题讨论】:

  • 对于“元表”,您可以使用 VIEW 而不是 postgresql pg_catalog。比如:select c.relname FROM pg_class c WHERE c.relkind = 'r' AND c.relname LIKE 'report_%' 。它将始终保持一致。

标签: postgresql report


【解决方案1】:

恕我直言,您应该做的第一件事 - 搜索报告构建、日志处理、OLAP 等现有解决方案......

有很多。免费和付费。我敢打赌,您一定能找到适合您任务的。

它将为您节省大量时间并为您的客户提供高质量的解决方案。

【讨论】:

  • 例如 iReport 将节省大量时间和痛苦。
  • 虽然我很欣赏您的回答,但我仍然希望了解如何实际解决此问题,即使在现有产品中也是如此。这个问题背后的理论是我非常有兴趣了解更多的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
相关资源
最近更新 更多