在 Cognos 中使用自定义查询有哪些缺点?

What are the disadvantages of using custom queries in Cognos?

我们正在使用 IBM Cognos,其中一位开发人员建议用户不要使用自定义查询。

我们没有得到此建议的基本原理,因此希望在这里从某人那里了解有关 pros/cons Cognos 中自定义查询与本机查询的问题。

好问题

创建自己的自定义 SQL 很诱人: https://www.ibm.com/docs/en/cognos-analytics/11.1.0?topic=mdx-build-report-using-your-own-sql

Cognos 作为商业智能解决方案取决于几个关键点

  1. 一致的方法
  2. 避免数据traps/Remove歧义
  3. 数据层的嵌入式安全性更易于维护和 test/Option 等等
  • 一致的做法: 如果用户能够创建自己的 SQL,那么他们就无法利用在框架管理器中创建的包。这意味着每个作者可能会以不同的方式报告 returns 不同的结果(并损害产品的可信度)。此外,如果您的数据库中发生某些更改,您必须在每个单独的报告中更改它,而不是在模型中更改一次。

  • 避免数据陷阱: 通过使用模型,报告作者可以构建分析,而不必过分担心技术层。数据陷阱包括诸如叉积或关于连接表或数据模式的假设之类的东西。有一堆数据陷阱,它可能成为它自己的话题。一个常见的例子是歧义陷阱,其中有不止一种描述属性的方法。例如,它可以是日期。太模糊了。在模型中,将对其进行更详细的描述以避免歧义——发票日期、订单日期、要求的发货日期等。

  • 更容易 maintain/test & 数据层嵌入式安全选项 通过发布元数据包,SQL 到 test/maintain 只有一个版本。添加新数据项只需几分钟,而修改 SQL 可能长达数百行且难以阅读的语句。

此外,自定义 sql 意味着用户正在绕过程序包中的 SQL,他们可以查询数据层中他们拥有对象权限的任何内容。通过遵循该模型,用户仅限于框架管理器中设计的内容。
如果你想花哨一点,你可以在模型中的表上嵌入过滤器来控制数据的外观和用户可以访问的内容

您想创建一个最佳实践/经过验证的实践模型。该模型将遵循 Kimball 数据仓库结构。

它将公开对象,普通用户可以将这些对象拖放到报告或仪表板中,并创建有意义、准确的报告,而无需询问报告编写团队中的某些人,他们可能会在一个几个星期,可能并不真正理解对他的要求。它将业务用户从 IT 人群的暴政中解放出来。

它还将为报告作者提供高级内容,例如汇总表和其他查询,因为它们存在于模型中,所以不需要为每个报告重新创建。

因为这些东西是一次性写的,所以只有一点失败。因为它存在于模型中而不是一堆报告中,所以会有一致性。没有一件事可能意味着略有不同或在报告之间产生略有不同的结果。您可能遇到过谈论 'the single version of the truth' 的人。这就是他们想要达到的目的。

任何报告都不应是静态的。 21世纪第三个十年

Cognos 查询引擎分解查询以尝试将最大值推送到一个或多个数据库。自定义查询的大杂烩不一定能像那样工作。

聪明但误入歧途的人试图硬塞报告工具成为 SQL 作家。它可以做到,但这不是重点