2.3.6.2 基于已有查询主题的查询主题
模型查询主题是直接基于已有查询主题的查询项或维度建立,而不是从一个数据源。使用它,建模者可以创建一个更结合业务理论的数据库视图架构。通常,我们会将它放置到business view(业务视图)版块,直接用于报表开发引用。模型查询主题可以称之为 数据库视图的升华和改造。模型查询主题在日常报表开发、建模时广泛使用,由于通常我们从数据库导入的元数据及其关系是及其错综复杂的,通常是一些网状关系图。若是直接取自业务数据库,若符合3NF,则一般为标准化数据结构。在组织模型和简化视图时候,模型查询主题就发挥了强大的作用:
1、重复使用已存在模型里的复杂查询SQL语句
2、引用多个查询对象的查询项到一个查询主题进行符合业务对象需求的组合
3、也可以引用不同数据源的查询主题到一个查询主题
创建步骤
Step1、右键namespace、folder->创建查询主题
Step2、输入查询主题名称、选择 ‘Model query subjects
Step3、在Query Subject Definition页面->在Available Model Objects框里 引入查询项->OK
在这之前,必须为product_line,product_type,product建立关联关系,创建模型查询主题之后还须检查query items的属性(请参考2.3 检测和设计导入的元数据)
Step4、切换到Test页面,测试是否能取出数据
Step5、切换到Query Information里查看生成的SQL语句
这里FM默认按Minimized 生成SQL语句,当然你也可以修改生成SQL的方式为 As View。
关于最小化生成SQL
将多个主题合并时,FM将仅包含最小集合的表和关联去取所选查询项的值
关于As View生成SQL
若选择As View,FM生成的查询将包含了所有查询主题信息,且是内嵌视图模式。比如我们需要每次都返回同样值的表数据 记录行数。例如,从Great Outdoors sales数据库导入 product_type、product_line、product 表,由于业务需要,组合成星型模式,我们需要将这三个产品相关的数据表合成为一个维度信息查询主题,如下图
合并后生成的Cognos SQL语句,请看(图2.3.6.2 查看最小化生成Cognos SQL)。
当然若遇到特殊需要,您不想让FM最小化生成SQL,则可以更改生成SQL的类型:切换到’Query Information’tab页->点击’Options->SQL Setting->Generate SQL 为As View->OK,如下图:
那么再查询Query Information查看生成的Cognos SQL语句,如下
同时,Framework Manager也会根据数据库类型生成相应的内嵌视图的查询 Native SQL。
通过上面的陈述相比两种SQL类型,Minimized的性能显然远超过As View。前者是Framework Manager动态生成查询SQL语句的基本功能,显然很大程度上改进了性能和运行速度。
通过今天的讲解,想必读者对模型查询主题和SQL类型有了一定的了解,SQL类型是Framework Manager的基本功能,也是最常用的特征。无论使用哪一种类型,目的只有一个:改进模型性能和数据准确性。然而,提高模型查询的性能不仅限于这些,比如Procedure,那么它到底有些什么功能、如何灵活使用它呢?请看下一节2.3.6.3 基于存储过程的查询主题