将关联规则挖掘流部署为 DB2 存储过程
稍后,在 Cognos 中,您可能会想用用户定义的输入来动态调用前面设计的这个挖掘流。如前面提到过的,此输入是这些规则的最小 support 及规则的长度。为了实现动态调用,需要创建一个存储过程,它接受这两个参数并通过此用户输入调用挖掘流。
在 Data Development 项目中创建一个新的存储过程:
要创建 Data Development 项目,按如下操作:
在 “Data Project Explorer” 内右键单击,并选中 New ->Data Development Project。若找不到这个 Data Development 项目,则选择 Project . . . 并在整个 ect 列表中查找。
指定名称为 Assoc Stored Procedure 并按下Next。
选择 Use an existing connection 并选中零售表被导入其中的这个数据库。单击 Finish。
如果系统询问您是否想切换这个透视图,请选择 No。
要创建这个存储过程,请如下操作:
展开这个新项目并右键单击 Stored Procedure 文件夹。选中 New" -> Stored Procedure。
将过程的名称设为 “ASSOC_PROC” 并选中 SQL 作为此过程的语言。单击 Next。
在下一个向导屏,接受所提供的 SQL 语句并单击 Next。
在 Parameters 屏,定义两个输入参数 —— support 和长度。按下 Add,将名称设为 support,类型设为 FLOAT。按下 OK。
对第二个参数 “length” 做同样的设置,类型为 “INTEGER”。
按下 Finish。
一个带存储过程主体的编辑器就会打开。
调整这个存储过程来执行前面定义的挖掘流:
在此过程的主体有两个语句,其作用是定义一个用来返回表行的指针。将声明指针的第一个语句调整为:
DECLARE cursor1 CURSOR WITH RETURN FOR
SELECT * FROM IMINER.RETAIL_RULES;
此指针返回包含有关联规则的 RETAIL_RULES 表的内容。请注意,在本例中,IMINER 是默认模式,您实际的设置可以不同。
现在,将可视的挖掘流转换为 SQL 语句以便粘贴到存储过程主体中。通过选择编辑器区域中相应的选项卡切换到 AssocFlow 编辑器。
在菜单中,选择 Mining Flow -> Generate SQL Code。
另一个编辑器打开,其中包含了代表这个挖掘流的 SQL。选中编辑器的全部内容并复制。
切换到存储过程编辑器 ASSOC_PROC 并传递进指针声明和指针 “OPEN” 语句之间的那些代码。保存编辑器。
转到存储过程编辑器的顶部,并将 “CURRENT” 从 set-schema 语句中移除,将模式名称替换为在开始时创???的 “ASSOC” 模式:
清单 1. 用 ASSOC 模式替代模式名称
P1: BEGIN
-- Declare cursor
DECLARE cursor1 CURSOR WITH RETURN FOR
SELECT * FROM IMINER.RETAIL_RULES;
SET SCHEMA="ASSOC"; ... ...
ASSOC 模式被用来部署过程。
转到 CALL IDMMX.BuildRuleModel 语句并对其进行调整以便能够通过 support 和长度参数动态设置最小 support 和规则长度,如清单 2 所示,我们只对第四和第六个参数进行了调整。
清单 2. 调整第四个和第六个参数
CALL IDMMX.BuildRuleModel('AssocAnalysis.IM_ASSOC_03',
'INPUT_03',
'TRANSID',
support,
25.0,
length,
'DM_addNmp(''nameMap'',''NAMEMAP_03'',
''ITEMID'',''DESCRIPTION''),
DM_setFldNmp(''ITEMID'',''nameMap''),
DM_setFldUsageType(''ITEMID'',1),
DM_setFldUsageType(''STOREID'',2),
DM_setFldUsageType(''CUSTOMER_ID'',2),
DM_setFldUsageType(''ITEMPRICE'',2),
DM_setFldUsageType(''TRANSDATE'',2),
DM_setMaxNumRules(10000),
DM_setAlgorithm(''SIDE'',
''<NumBins>5</NumBins>'')');
最后,进入语句:
ALTER TABLE "IMINER"."RETAIL_RULES" ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;
并用如下语句替代它:
DELETE FROM "IMINER"."RETAIL_RULES";
保存编辑器。
将这个存储过程部署到数据库:
要部署前面创建的存储过程,按如下操作:
在 Data Project Explorer 中,展开 Data Development 项目 “Assoc Stored Procedure”,展开 Stored Procedure 文件夹并右键单击 ASSOC_PROC 过程;选择 Deploy...。
在 Deploy Routines 对话框中,将模式改为 “ASSOC” 并按下 Finish。
至此,此存储过程 ASSOC_PROC 被部署到了 ASSOC 模式。可以通过借助 Database Explorer(见图 7)导航到模式内的 Stored Procedure 文件夹来检验部署。这个存储过程使您能够用用户定义的属性设置来动态调用前面设计的挖掘流。

图 7. 在 Design Studio 内部署 ASSOC_PROC 存储过程
在下一节中,将会介绍如何使用 Cognos 来访问这个存储过程并用动态关联规则挖掘构建一个报告。
用 Cognos Framework Manager 为后面的报告创建元数据
在用挖掘结果来创建报告之前,需要定义应该使用哪些资源(数据库、表、存储过程)。借助 Framework Manager,您就可以定义该元数据并能通过定义关系来丰富数据源。
在下面的几个段落中,您将看到如何创建一个 Cognos Framework Manager 项目、定义这两个输入表以及前面创建的存储过程。最后,了解如何发布项目并使其可为报告所用。
打开 Framework Manager 并创建一个新项目:
启动 Cognos Framework Manager。
启动完成后,单击 Create a new project…。
在随后出现的对话框中,将名称指定为 AssociationExample 并单击 OK。
将语言选择为 English 并按下 OK。
由于想要从一个 DB2 数据库中创建元数据,因而选择 Data Sources 并按下 Next。
接下来,选择在本例中使用的这个数据库并按下 Next。如果没有对此数据库的连接,就需要创建一个。关于如何创建连接的信息,请参考 Cognos 文档。
现在,系统提示您选择想要作为元数据导入的数据对象。展开 RETAIL 和 RETAIL_NAMES 所在的默认模式,展开 Tables 文件夹并选择前面提到的那些表。
然后,展开 ASSOC 模式及 Procedures 文件夹,并选择前面部署的 ASSOC_PROC 过程。按下 Next。
至此,此页面的设置就完成了,按下 Import,然后按下 Finish。

图 8. Cognos 8 Framework Manager
创建项目后,Framework Manager 显示在 Project Viewer 的左侧(见图 8)。在 Project Viewer 中,可以查阅这个新创建的项目。展开具有数据库名称的文件夹(在本例中是 “DWESAMP”),查看所导入的表及存储过程。现在,定义 RETAIL 与 RETAIL_NAMES 表之间的一个新的 Relationship。这可以简化后面的报告定义。
要创建此关系,可执行下面的步骤:
右键单击数据库文件夹(这里是 “DWESAMP”)。选择 Create -> Relationship。
Relationship Definition 对话框打开(见图 9)。

图 9. 关系定义对话框
可以在左侧和右侧各定义一个查询主题。在左侧,选择 RETAIL 表,在右侧,选择 RETAIL_NAMES 表。
在两侧,选择 ITEMID 列以关联它们。
如图 9 所示设置基数。按下 OK。
可以通过单击 Framework Manager 中部的 Explorer 链接来查阅所创建的关系(见图 9)。