为什么需要元数据模型您已经熟悉使用Cognos来创建报表,进行自助式设计分析,然而这些需要的创建的应用都依赖于对应的元数据模型,用户使用元数据模型对他们的数据源进行分析和报告。元数据模型是整个Cognos应用的基础,它是一个或多个数据源中信息的业务演示。基于这个基础,您才能够创建报表,进行自助式设计分析。Cognos能支持多种数据源,包括关系型的和多维的数据库。元数据模型能隐藏底层数据源的复杂结构,可以更好地控制数据怎样展现给最终用户。元数据的组织和扩展就需要用到Cognos的元数据模型设计工具FrameworkManger。Cognos的元数据模型设计工具FrameworkManger可以连接企业的各种数据源(包括关系型数据库,多维数据库,文本,OLAP等),对数据结构进行描述,为Cognos的多维分析,即席查询,报表等各种应用提供统一一致的数据视图,降低对企业数据访问的复杂性,同时提供对各种应用使用的结构的统一的管理。CognosBI10的最新版本中在FrameworkManager中增加了模型设计加速器,可以帮助开发人员更迅速、更轻松的创建新模型,并且模型优化时系统将充分利用知识库的经验。它的主要功能是:帮助开发人员通过一个向导式的自动化工具,用快速简便的方法创造新的建模框架。从一个包含了知识库经验的模型开始建模,并添加更复杂的模型需求。通过知识库的经验指导建模和帮助纠正和验证的常见错误。第一个元数据模型1.在开始菜单中启动IBMCognosFrameworkManager,选择CreateanewprojectusingModelDesignAccelerator。模型设计加速器适合于基于关系型数据库星形模型的元数据建模。星形模型是一种多维的数据关系,它由一个事实表(FactTable)和一组维表(DimensionTable)组成。2.在“NewProject”中输入名称“第一个元数据模型”和目录位置,如图1所示。当在FrameworkManager中工作时,实际上是在一个Project中进行操作的。Project以一个文件夹的形式出现在文件系统中,它包含一个Project文件(.cpf)和XML文件。图1.项目3.在登录窗口输入用户名和密码,在本教程中是administrator和cognos,然后点击确定。语言选择“英文”,数据源选择“great_outdoors_warehouse”。4.在对象选择中,展开GOSALESDW的Tables,选择以下表后点击Continue。GO_TIME_DIMSLS_ORDER_METHOD_DIMSLS_PRODUCT_DIMSLS_PRODUCT_LOOKUPSLS_PRODUCT_TYPE_LOOKUPSLS_PRODUCT_LINE_LOOKUPSLS_SALES_FACT5.在IBMCognosFrameworkManagerUserGuide窗口中介绍了使用ModelDesignAccelerator的步骤,您阅读后点击Close。6.在ModelAccelerator面板,右键选择FactQuerySubject,选择Rename,输入SalesFact。7.在Explorertree面板,展开SLS_SALES_FACT,选择以下字段拖拽到SalesFact对象。QUANTITYUNIT_COSTUNIT_PRICEUNIT_SALE_PRICEGROSS_MARGINSALE_TOTALGROSS_PROFIT8.重命名NewQuerySubject1为Products。9.在Explorertree面板:展开SLS_PRODUCT_LINE_LOOKUP拖拽PRODUCT_LINE_EN到Products对象。展开SLS_PRODUCT_TYPE_LOOKUP拖拽PRODUCT_TYPE_EN到Products对象。展开SLS_PRODUCT_LOOKUP拖拽PRODUCT_NAME到Products对象。10.对话框RelationshipEditingModefor:Products会弹出来,原因是FrameworkManager无法检测出SLS_PRODUCT_LOOKUP和SLS_SALES_FACT的关系,因此需要手动指定。按住Ctrl选择SLS_PRODUCT_LOOKUP的PRODUCT_NUMBER和SLS_PRODUCT_DIM的PRODUCT_NUMBER,点击左上角的CreateaModelRelationship按钮。在ModifytheRelationship对话框中点击OK,然后点击OK关闭RelationshipEditingModefor:Products对话框,如图2所示。图2.关系11.在Explorertree面板展开SLS_PRODUCT_DIM,选择以下字段拖拽到Products对象。PRODUCT_KEYPRODUCT_LINE_CODEPRODUCT_TYPE_KEYPRODUTCT_TYPE_CODEPRODUCT_NUMBERPRODUCT_IMAGEINTRODUCTION_DATEDISCONTINUED_DATE12.重命名NewQuerySubject2为Time。13.在Explorertree面板,展开GO_TIME_DIM,选择DAY_KEY再按住Shift键选择WEEKDAY_EN,把包含这两个字段的中间所有字段拖拽到Time对象。14.重命名NewQuerySubject3为OrderMethods。15.在Explorertree面板,展开SLS_ORDER_METHOD_DIM,选择以下字段拖拽到OrderMethods对象。ORDER_METHOD_KEYORDER_METHOD_CODEORDER_METHOD_EN16.最后在ModelAccelerator面板的模型如图3所示。点击GenerateModel按钮,提示框选择Yes,模型设计加速器会根据您的选择来生成模型。当生成结束后,IBMCognosFrameworkManager的界面就会展示在您的面前。图3.ModelAccelerator17.点击工具栏上的保存按钮,您的第一个元数据模型就创建成功了。在FrameworkManager的ProjectViewer中可以看到模型的层次,如图4所示。模型设计加速器已经为您设计了模型的三个命名空间PhysicalView、BusinessView和PresentationView。oPhysicalView是包含支持星型模型的表。oBusinessView是包含需要的查询字段。oPresentationView是包含在BusinessView的快捷方式。图4.模型的层次已同步至bruce_lee的微博导入额外元数据模型前面您用ModelDesignAccelerator构建了您的第一个元数据模型。接下来您可以用MetadataWizard来手工添加其他元数据,包括导入元数据,创建关系,更新BusinessView和PresentationView。19.在IBMCognosFrameworkManager的ProjectViewer,右键选择PhysicalView下面的gosalesdw命名空间,选择RunMetadataWizard。20.选择DataSources后Next。21.选择“great_outdoors_warehouse”数据源后Next。22.在对象选择中,展开GOSALESDW的Tables,选择SLS_SALES_TARG_FACT后Next。23.选择Betweeneachimportedquerysubjectandallexistingquerysubjectsinthemodel,如图5所示。点击Import然后点击Finish。图5.导入元数据24.双击gosalesdw命名空间,然后选择Diagram标签页来查看关系的图形,如图6所示。您可以看到刚导入的SLS_SALES_TARG_FACT没有对象连接,需要您手工创建。图6.Diagram关系图25.在ProjectViewer窗格,选择GO_TIME_DIM下的MONTH_KEY,再选择SLS_SALES_TARG_FACT下的MONTH_KEY,右键选择Create,再点击Relationship。关系定义对话框如图7所示,点击确定。图7.关系定义26.重复第25步,创建SLS_PRODUCT_DIM和SLS_SALES_TARG_FACT在PRODUCT_TYPE_KEY字段的关系。27.在ProjectViewer窗格,右键选择BusinessView命名空间,点击创建,选择QuerySubject,输入SalesTargetFact后点击OK。28.在QuerySubjectDefinition窗口,在AvailableModelObjects下展开PhysicalView,在gosalesdw下选择SLS_SALES_TARG_FACT,把SALES_TARGET拖动到QueryItemsandCalculations面板下,如图8所示。图8.查询对象定义29.在BusinessView命名空间下点击刚才创建的SalesTargetFact查询对象,按住Ctrl再选择Products和Time,也就是刚才定义过关系的维度,右键选择CreateStarSchemaGrouping。在CreateStarSchemaGrouping对话框输入SalesTarget后点击OK,如图9所示。图9.创建基于以事实为中心和其关联维度的模型30.把刚才创建的SalesTarget命名空间拖动到PresentationView下。31.右键选择PresentationView命名空间,点击Create,然后选择Namespace,把名字定义为Sales。接着把SalesFact、Products、Time和OrderMethods的快捷方式拖动到Sales命名空间,如图10所示。图10.PresentationView命名空间点击工具栏上的保存按钮,您已经完成了导入额外元数据模型的工作。设定DeterminantsDeterminants是IBMCognosBI的特性,通常来用来控制聚合的粒度。当维度数据和事实数据基于有重复值的粒度层次关联时候就需要Determinant。Determinants反映了代表查询对象的子集或集合,是用来保证准确的数据聚合。Determinants可以定义唯一标识一个数据集的数据库列集合,或者可以指定一个能够标识数据中的非唯一集的列集合。在您的元数据模型中,日期是时间的惟一性determinants。而非惟一determinants的例子是月份,在同月的时间中月份是重复的,在指定月份的非惟一determinants时候就要指明是GroupBy。这样就暗示IBMCognos在处理到非惟一determinants的属性时候有重复数据,需要采用聚合函数来避免重复计数。33.在ProjectViewer的PhysicalView命名空间下,双击GO_TIME_DIM查询对象,然后点击Determinants标签页。您可以看到只有根据主键的一个determinant,下面您可以添加Year、Quarter、Month作为Determinants。34.右键选择pk,点击Rename,输入Day然后回车。35.在Determinants窗格,点击Add,右键选择NewDeterminant,点击Rename,输入Year然后回车。36.选中Year,把CURRENT_YEAR拖拽到Key窗格。37.选择Year旁边的GroupBy的复选框。38.按照第35到37的步骤,添加Quarter作为determinant,QUARTER_KEY拖拽到Key窗格,选择GroupBy的复选框。39.选中Qua