IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management | XML  >

使用 DB2 XQuery 提取存储为 PMML 的数据挖掘结果

有效传播您的数据挖掘结果

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

英文原文

英文原文


级别: 中级

Michael Haide, 软件开发人员, IBM
Benjamin G. Leonhardi, 软件工程师, IBM

2009 年 7 月 27 日

数据挖掘是指查找结构化数据中的规则和模式。DB2® 数据挖掘方法使用 Intelligent Miner,后者是 InfoSphere® Warehouse 的一部分。Intelligent Miner® 将这些结果存储为预测模型标记语言(Predictive Model Markup Language,PMML)格式,这种格式基于 XML。自 DB2 9 发布以来,存储为 XML 格式的信息就可以使用 XQuery 进行有效处理。了解如何轻松使用 DB2 XQuery,根据您的数据挖掘结果创建您自己的访问方法。

简介

本文展示如何使用 InfoSphere Warehouse Data Mining 来组合 DB2 的 XQuery 功能与存储为 XML 格式的数据挖掘结果。

InfoSphere Warehouse Data Mining 提供了适用于所有常见数据挖掘任务的算法,比如以下列表中列出的任务及其示例应用程序:

  • 集群,包括找到重要客户群体和欺诈行为

  • 关联规则,包括交叉销售和商店布局改进

  • 顺序模式,包括选择性营销或部分失败的预测

  • 分类,包括流失分析或医疗诊断

  • 回归,包括保险索赔预测或风险管理

所有这些数据挖掘任务的结果称为数据挖掘模型,它们存储在使用 PMML 标准的表中。这个标准基于 XML,允许在不同数据挖掘提供者之间轻松交换数据。这样一个模型然后可以应用到新数据上,这称为记分(scoring)

例如,您可能需要根据默认风险分类新的客户。一个 PMML 模型需要存储与挖掘结果相关的所有重要信息。Intelligent Miner 提供了一组 SQL 提取函数来从模型获取最重要的信息。

如果您需要提取更多或不同的信息,本文将描述实现过程。本文还将展示 DB2 XQuery 的强大功能和如何在 DB2 用户定义函数 (UDF) 或 DB2 存储过程 (STP) 中使用它。





回页首


理解 XQuery

在 DB2 9 中,pureXML 引入了 XML 数据类型并支持在 DB2 数据库中非常高效地查询和处理 XML 文档。

有两种查询语言可用于从 XML 文档中提取信息。XPath 语言用于在 XML 树中导航和根据给定限制选择节点。XQuery 是 XPath 的一个超集,它添加了 For、Let、Order by、Where 和 Return 表达式(也称为 FLWOR 表达式 [读作 flower]),以支持在 XML 文档上执行更加复杂的 SQL 风格的查询。您也可以通过与 XSLT 类似的方式,使用 XQuery 转换 XML 文档。

示例数据

要使用 pureXML,数据库需要编码为 UTF-8 格式。这是自 DB2 9.5 发布以来默认的数据库格式。可以像创建其他列一样创建 XML 列。清单 1 中的代码创建了一个较小的测试表,其中包含一个 ID 列和一个 XML 列。


清单 1. 创建一个小型测试表
				
db2 "CREATE TABLE XMLTEST (ID int, XMLCOLUMN XML)"
    

要将 XML 插入到表中,使用 INSERT 语句,如清单 2 所示。命令中的 XML 字符串被解析为 XML 列。确保对引号使用了正确的转义。


清单 2. 插入 XML
				
db2 "INSERT INTO XMLTEST VALUES (1, '<Person ... />')"
    

您将在本文后面使用清单 3 中显示的示例 XML 数据。每个 Person XML 片段保存在 XML 列的一个单独的行中。


清单 3. 插入 XML
				
<Person> 
	<Name>John Smith</Name> 
	<Tel publish="false">555-8659</Tel>
</Person>
...
<Person> 
	<Name>Mark Muster</Name> 
	<Tel publish="true">555-7765</Tel>
</Person>
    

使用 XQuery 检索数据

XQuery 表达式可以在 SQL 表达式中使用。要在 SQL 外部使用 XQuery 表达式,这些表达式必须加上前缀 XQUERY。如果在 SQL 查询外部使用 XQuery,输入列必须使用命令 db2-fn:xmlcolumn 指定,并且对包含 XML 源的列使用一个参数,如清单 4 所示。


清单 4. 在 SQL 外部使用 XQuery 表达式
				
db2 "XQUERY db2-fn:xmlcolumn('XMLTEST.XML')"
    

当处理 XML 文档时,最重要的概念是 XML 路径,它提供了一种在 XML 树中寻找节点和元素的方式。清单 5 中的 XPath 表达式通过提供一条从 XML 文档的根节点出发的路径,返回文档中的 NAME 节点。


清单 5. 返回名称节点
				
XQUERY db2-fn:xmlcolumn('XMLTEST.XML')/Person/Name
...
<Name>John Smith</Name>
<Name>Mark Muster</Name>
2 record(s) selected.
    

XQuery 提供了复杂的 SQL 风格的表达式来查询多个 XML 文档。清单 6 中的示例使用 FOR 和 WHERE 表达式来查询未发布电话号码的人。XML 节点的属性可以使用 @ 限定符来访问。注意,用于检查发布属性的表达式位于括号中。


清单 6. 查询人们的电话号码
				
XQUERY for $x IN db2-fn:xmlcolumn('XMLTEST.XML')/Person/Tel 
    where $x[@publish='false'] return $x
...
<Tel publish="false">555-8659</Tel>
1 record(s) selected.
    

尽管 XQuery 可用于从存储在 DB2 表中的 XML 文档提取 XML 节点和值,但您需要一种方式来将信息提取为结构化表,这个表可供无法读取 XML 的工具读取。DB2 中使用的方法是 XMLTABLE 表达式。这个表达式从一个 XQuery 表达式创建一个表。XMLTABLE 在 SELECT 查询的 FROM 语句中使用。第一个参数指定返回 XML 片段的 XQuery 表达式。COLUMNS 参数指定表输出列,包括列名称、类型和每个 XML 片段对应的 XQuery 表达式。


清单 7. 使用 XMLTABLE 表达式
				
select * from 
    XMLTABLE ('db2-fn:xmlcolumn("XMLTEST.XML")/Person' 
	    	COLUMNS 
				name VARCHAR(20) PATH 'Name', 
				tel VARCHAR(20) PATH 'Tel', 
				published VARCHAR(5) PATH 'Tel/@publish'
		) AS X;

...
						
NAME                 TEL                  PUBLISHED
-------------------- -------------------- ---------
John Smith           555-8659             false
Mark Muster          555-7765             true

  2 record(s) selected.
    

使用这种类型的 DB2 选择语句,您可以提取 XML 文档中的所有信息并以 SQL 表数据的形式传递它们。如需获取更多信息,请参见 参考资料





回页首


理解 PMML

预测模型标记语言 (PMML) 是一种描述数据挖掘模型的 XML 标记语言,支持在不同的数据挖掘功能提供者之间交换挖掘模型。交换这些模型使其他程序不用创建模型本身就可以对这些模型进行评分。参见 参考资料,了解在数据挖掘小组(Data Mining Group)网站上发布的 PMML 规范。

一个 PMML 模型通常具有以下结构:

  • 一个 PMML 根备注,显示使用的 PMML 的版本

  • 一个标题,提供关于模型的一般信息,包括名称和日期

  • 一个 MiningBuildTask,提供用于构建模型的配置信息

  • 一个 DataDictionary,提供用于创建模型的字段信息,包括名称、类型和值

模型信息取决于使用的模型,清单 8 显示了一个集群模型的 PMML 结构。


清单 8. 一个集群模型的 PMML 结构
				
<?xml version="1.0" encoding="UTF-8" ?>

<PMML version="3.0" xmlns="http://www.dmg.org/PMML-3_0" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://www.dmg.org/PMML-3_0 http://www.dmg.org/v3-0/pmml-3-0.xsd">
 <Header copyright="Copyright IBM Corp. 2002, 2007 All Rights Reserved">
  <Application name="IBM DB2 Intelligent Miner" version="9.5"/>
  <Timestamp>2008-11-23 23:03:09</Timestamp>
 </Header>
 <MiningBuildTask>
 	...
 <DataDictionary numberOfFields="8">
  ...
 <ClusteringModel modelName="BANK.CUSTOMERS_SEGMENTS" modelClass="centerBased" 
    functionName="clustering" algorithmName="Kohonen" numberOfClusters="5" 
    x-execTime="0.070000171661377" x-similarityThreshold="0.5" 
    x-quality="0.780511795527719">	
    ...
      

下一个示例使用一个集群模型,基于 Kohonen 算法。PMML 支持基于中心和基于分发的集群模型。两种模型都将元素 ClusteringModel 作为顶级元素。模型中包含一个集群列表和一种计算不同集群的新记录的距离或相似性的方法。清单 9 显示了一个基于中心的 Kohonen 集群模型。


清单 9. 使用一个基于中心的 Kohonen 集群模型
				
<ClusteringModel modelName="BANK.CUSTOMERS_SEGMENTS" modelClass="centerBased" 
    functionName="clustering" algorithmName="Kohonen" numberOfClusters="5" 
    x-execTime="0.070000171661377" x-similarityThreshold="0.5" 
    x-quality="0.780511795527719">
 + <Extension name="Matrix">
 + <Extension name="X-Correlations">
 + <MiningSchema>
 + <ModelStats>
 <ComparisonMeasure kind="distance">
  <squaredEuclidean/>
 </ComparisonMeasure>
 <ClusteringField field="AGE" compareFunction="absDiff" 
     x-quality="0.291742616514616"/>
 <ClusteringField field="AVERAGE_BALANCE" compareFunction="absDiff" 
     x-quality="0.223507903713586"/>
 <ClusteringField field="GENDER" compareFunction="absDiff" 
     x-quality="0.67909000081883"/>
 <ClusteringField field="ID" compareFunction="absDiff" 
     x-quality="0.32252228279477"/>
 <ClusteringField field="MARITAL_STATUS" compareFunction="absDiff" 
     x-quality="0.593752740606671"/>
 <ClusteringField field="NBR_YEARS" compareFunction="absDiff" 
     x-quality="0.34454192375915"/>
 <ClusteringField field="NOT_USED" compareFunction="absDiff" 
     x-quality="0.198193321261319"/>
 <ClusteringField field="SAVING_ACCOUNT" compareFunction="absDiff" 
     x-quality="0.663013938830898"/>
 + <CenterFields>
 <Cluster name="1" x-quality="0.786176824083955">
 ...
    

x- 开头的所有属性都是特定于供应商的,并且可以忽略。参见 参考资料,在数据挖掘小组网站上了解 PMML 的更多细节和示例。





回页首


理解 Intelligent Miner

Intelligent Miner 通过 UDF 和 STP 集成到 DB2 中。您可以使用一组 SQL 语句或 InfoSphere Warehouse DesignStudio 图形界面来创建一个数据挖掘模型。图形界面是一种更加方便的方法。PMML 模型存储在 DB2 表中,这些表既可用于记录新数据,也可用于提取信息。

例如,想像一下您拥有来自银行客户的数据,您需要对这些数据使用集群来确定不同的客户分类。确保客户的所有相关信息都组合到了一个表或视图中,如清单 10 所示。


清单 10. 查看银行客户数据
				
db2 select * from bank.customers fetch first 3 rows only

ID     AGE  GENDER  MARITAL_STATUS  NBR_YEARS  SAVING_ACCOUNT  AVERAGE_BALANCE NOT_USED
------ --- -------  --------------  ---------   -------------   --------------  -------- 
120921  34    m          s             3              n                -23       n       
223423  55    m          m             12             y                123       n       
937212  25    m          s             2              y                388       n       

  3 record(s) selected.
    

要在示例数据上创建集群模型,使用 IDMMX.BuildClusModel 存储过程。IDMMX.BuildClusModel 存储过程的参数包括:

  • 模型名称
  • 表或视图的名称
  • 特定的数据挖掘参数

清单 11 给出了创建模型的命令。


清单 11. 创建模型
				
db2 "call IDMMX.BuildClusModel('BANK.CUSTOMERS_SEGMENTS', 'BANK.CUSTOMERS',
'DM_setAlgorithm(''Kohonen'')')"
    

创建模型之后,可以使用 Intelligent Miner Visualizer 以图形方式查看模型,也可以使用现有的 Intelligent Miner 提取功能来通过 SQL 获得一些信息。例如,您可以提取集群模型的一个概述,其中显示集群数量、使用的字段和模型质量。清单 12 显示了要使用的 SQL。


清单 12. 使用 SQL 提取集群模型的概要信息
				
SELECT 
	"ID" AS "CLUSTERID",
	CAST ("NAME" AS CHAR(20)) AS "CLUSTERNAME",
	"SIZE",
	CAST ("HOMOGENEITY" AS DEC(5,2)) AS "HOMOGENEITY"
FROM TABLE 
  (IDMMX.DM_getClusters((
	              SELECT "MODEL" 
               	FROM IDMMX."CLUSTERMODELS" 
	              WHERE "MODELNAME"='BANK.CUSTOMERS_SEGMENTS'))) 
	AS "CLUSTERS"
	ORDER BY SIZE DESC;					
    

清单 13 给出了清单 12 中的 SQL 的结果


清单 13. 所生成的集群模型的概要信息
				
MODELNAME            NUMBER_CLUSTERS NUMBER_FIELDS MODEL_QUALITY
-------------------- --------------- ------------- -------------
BANK.CUSTOMERS_SEGME               7             7          0.81

1 record(s) selected.
    





回页首


结合使用 XQuery 和 Intelligent Miner

大多数信息都可以使用可用的数据挖掘函数提取,但是还有一些信息无法提取。您可以结合使用 XQuery 函数和 Intelligent Miner 函数来直接从 PMML 模型读取这些隐藏的部分。

Intelligent Miner 目前不允许提取集群附加字段的细节。一个字段可以是活动的,也可以是附加的,具体取决于它对于计算集群的价值。例如,充当 DB2 中的主键且始终具有不同值的字段会自动移动到附加字段,因为它们无法提供有助于了解集群的信息。

您可以在 PMML 模型的 XML 节点 MiningField 中找到隐藏的信息。如果属性 usageType 具有值 Supplementary,那么它表示一个附加字段。活动字段是默认的使用类型,因此它不会在 PMML 文件中表示出来。

清单 14 给出了一个 PMML MiningSchema 示例。


清单 14. 编码一个 PMML MiningSchema
				
<MiningSchema>
 <MiningField name="AGE"/>
 <MiningField name="AVERAGE_BALANCE"/>
	...
 <MiningField name="SAVING_ACCOUNT"/>
 <MiningField name="ID" usageType="supplementary"/>
</MiningSchema>
    

清单 15 展示了如何在 DB2 中实现一个 UDF 来提取所有集群字段,以及显示这些字段的使用类型。


清单 15. 在 DB2 中实现一个 UDF
				
CREATE FUNCTION getClusterMiningFields (mname varchar(128))
    RETURNS TABLE (name      varchar(20),
                   usagetype varchar(20))
    LANGUAGE SQL
  
		BEGIN ATOMIC RETURN 
		   select X.name, 
              CASE WHEN X.usageType IS NULL THEN 'active' 
                   ELSE X.usageType END  
       from XMLTable('$DATA//*:MiningField' PASSING 
                     XMLPARSE(document (
                              select IDMMX.DM_expClusModel(cm.MODEL) 
                              from IDMMX.CLUSTERMODELS cm 
                              where MODELNAME=mname)) as "DATA" 
                     columns
                     name varchar(20) path '@name',
                     usageType varchar(20) path '@usageType') as X;
		END@
    

了解函数的不同部分的更多细节。UDF 被声明为一个表函数,这意味着它返回一个临时表,而不是一个值。因为它是使用 SQL 编写的,所以 LANGUAGE 属于 SQL。对于所有其他创建函数选项,都使用了默认值,这通常是一个好的起点。

UDF 的主体在 BEGIN 与 END 标记之间实现。所有结果列都在 SQL/XQuery 语句的选择部分中指定。在示例中,这些列是 X.name 和 X.usageType,它们是 XMLTABLE 表达式的输出列。X.usageType 的 case 语句表示活动的 XML 属性没有写入 PMML 文档。

XMLPARSE 是必需的,因为 PMML 文档本身没有直接存储在一个 XML 列中。该文档需要使用 IDMMX.DM_expClusModel 函数从一个 BLOB 列中导出,然后应该使用 XMLPARSE 函数将其复制到一个 XML 值中。

一旦文档可以作为 XML 值使用,您就可以使用 XQuery 来处理它,如清单 15 中的原生 XQuery 示例所示。

要调用创建函数语句,将这些语句放入一个文件中,并使用清单 16 中所示语法调用这个文件。注意,没有使用传统的语句结束字符,因为在 UDF 中需要使用该字符。


清单 16. 调用包含创建函数语句的文件
				
db2 -td@ -vf createClusterFieldUDF.db2
    

当在一个 select 语句中调用 UDF 时,您将获得字段的信息,包括哪些字段是活动的,哪些是附加的,如清单 17 所示。


清单 17. 读取字段信息
				
db2 select t1.name, t1.usagetype from table
(getClusterMiningFields('BankCustomerSegments')) t1				

NAME                 USAGETYPE
-------------------- --------------------
AGE                  active
NBR_YEARS_CLI        active
GENDER               active
MARITAL_STATUS       active
PROFESSION           active
SAVINGS_ACCOUNT      active
HAS_LIFE_INSURANCE   active
INT_CREDITCARD       active
ONLINE_ACCESS        active
JOINED_ACCOUNTS      active
BANKCARD             active
CLIENT_ID            supplementary
AVERAGE_BALANCE      active
NO_CRED_TRANS        active
NO_DEBIT_TRANS       active

  15 record(s) selected.  
    

相同的功能也可以添加到一个 STP 中。创建 STP 的语法看起来稍有不同,但代码本身完全一样,如清单 18 所示。


清单 18. 使用一个 STP
				
CREATE PROCEDURE getClusterMiningFields
(
  in mname varchar(128)
)
  LANGUAGE SQL
  RESULT SETS 1
BEGIN
  DECLARE cursor1 CURSOR WITH RETURN FOR 
		   select X.name, 
              CASE WHEN X.usageType IS NULL THEN 'active' 
                   ELSE X.usageType END  
       from XMLTable('$DATA//*:MiningField' PASSING 
                     XMLPARSE(document (
                              select IDMMX.DM_expClusModel(cm.MODEL) 
                              from IDMMX.CLUSTERMODELS cm 
                              where MODELNAME=mname)) as "DATA" 
                     columns
                     name varchar(20) path '@name',
                     usageType varchar(20) path '@usageType') as X;
  OPEN cursor1;
END@
    

您可以使用 call 语句从 DB2 命令行窗口调用 STP。输出(如清单 19 所示)与您在 UDF 实现中看到的结果完全一样。


清单 19. 从 DB2 命令行窗口调用 STP 的结果
				
db2 call getClusterMiningFields('BankCustomerSegments')

  Result set 1
  --------------

  NAME                 2
  -------------------- --------------------
  AGE                  active
  NBR_YEARS_CLI        active
  GENDER               active
  MARITAL_STATUS       active
  PROFESSION           active
  SAVINGS_ACCOUNT      active
  HAS_LIFE_INSURANCE   active
  INT_CREDITCARD       active
  ONLINE_ACCESS        active
  JOINED_ACCOUNTS      active
  BANKCARD             active
  CLIENT_ID            supplementary
  AVERAGE_BALANCE      active
  NO_CRED_TRANS        active
  NO_DEBIT_TRANS       active

  15 record(s) selected.

  Return Status = 0
    





回页首


为用户定义函数示例使用 InfoSphere Warehouse 工具

InfoSphere Warehouse DesignStudio 可以与一些集成的 Java®、SQL STP 和 UDF 开发工具结合使用。本文的第二个示例创建一个 UDF,用于从一个关联模型读取模型信息。这些信息可以在 Association Visualizer 中获取,但它没有对应的 SQL 提取功能。该工具可帮助您创建、部署和测试 UDF。

要使用该工具:

  1. 打开 InfoSphere Warehouse DesignStudio。

  2. 通过选择 Window > Open Perspective > Other 切换到 Data 透视图。

  3. 如果列表中没有 Data 透视图,选择 Show all,然后从列表中选择 Data。您现在应该在左侧看到一个 Data Project Explorer。

  4. 选择 File > New > Data Development Project,创建一个新数据开发项目。

  5. 将新项目命名为 PMMLExtraction

  6. 选择一个支持数据挖掘且包含一个关联模型的数据库。对于这个例子,选择示例数据库 DWESAMP,并单击 Finish。您现在应该有了一个新数据开发项目,其中包含针对 UDF、STP 和其他数据库对象的子文件夹,如图 1 所示。

图 1. DesignStudio 的数据透视图
屏幕截图:Design Studio 中的 ASSOCINFORMATIONEXTRACTOR 窗口,其中在 Database Explorer 窗口显示了选定的 DWESAMP

单击 此处 放大图 1。

要创建一个用户定义的 SQL 函数:

  1. 创建一个新 UDF,方法是选择 New > User-Defined Function,然后右键单击 User-Defined Functions 文件夹。

  2. 将 UDF 的名称更改为 AssocInformationExtractor,并确保语言是 SQL

  3. 单击 Finish。这将创建一个非常基本的 UDF。现在,您可以添加想要的逻辑。

关联模型包含许多全局统计信息,包括事务数量和项目集数量。您可以在 Statistics 选项卡下的 Association Visualizer of InfoSphere Warehouse 中查看这些统计信息,如图 2 所示。


图 2. Association Visualizer 中的全局统计信息
屏幕截图:Association Visualizer 窗口显示了全局统计信息和 MBA.RULES 的可视对象统计信息

此信息以关联模型节点的属性的形式保存在 PMML 模型中,如清单 20 所示。


清单 20. 关联模型属性
				
<PMML ...
  
	<AssociationModel 
		modelName="MBA.RULES" 
		functionName="associationRules" 
		algorithmName="SIDE" 
		numberOfTransactions="34734" 
		maxNumberOfItemsPerTA="242" 
		avgNumberOfItemsPerTA="2.87349571025508" 
		minimumSupport="0.001" 
		minimumConfidence="0.1" 
		lengthLimit="4" 
		numberOfItems="25" 
		numberOfItemsets="62" 
		numberOfRules="74" 
		x-quality="1">
    

UDF 本身与本文第一个示例的功能非常相似。它获得模型的名称作为参数,并返回一个表,其中每个统计信息对应一列。关联模型与顺序模型统称为规则模型,保存在 IDMMX.RULEMODELS 表中。因为 PMML 模型中只有一个 AssociationModel 节点,其 xPath 可以写为 $DATA//*:AssociationModel,这将搜索具有任何父节点的 AssociationModel 节点。清单 21 显示了在 DesignStudio 的编辑器的 Source 视图中输入的完整 UDF 代码。


清单 21. Source 视图的 UDF 代码
				
CREATE FUNCTION ASSOCINFORMATIONEXTRACTOR (mname varchar(128))
  RETURNS TABLE (numberTransactions int,
  				 averageNumberItemsPerTransaction real,
  				 maximumNumberItemsPerTransaction int,
  				 numberItemSets int,
  				 numberSingletonItemSets int,
  				 minimumRuleSupport real,
  				 minimumRuleConfidence real,
  				 maximumRuleLength int)
  LANGUAGE SQL
  MODIFIES SQL DATA
  NO EXTERNAL ACTION
  DETERMINISTIC
  
BEGIN ATOMIC
  
  RETURN select X.numberTransactions, 
  				X.averageNumberItemsPerTransaction, 
  				X.maximumNumberItemsPerTransaction, 
  				X.numberItemSets,
  				X.numberSingletonItemSets,
  				X.minimumRuleSupport,
  				X.minimumRuleConfidence,
  				X.maximumRuleLength	from 
     XMLTable('$DATA//*:AssociationModel' PASSING XMLPARSE(document 
        (select IDMMX.DM_expRuleModel(cm.MODEL) FROM IDMMX.RULEMODELS cm 
        where MODELNAME=mname)) as "DATA" 
        columns
        numberTransactions int  path '@numberOfTransactions',
        averageNumberItemsPerTransaction real path '@avgNumberOfItemsPerTA',
        maximumNumberItemsPerTransaction int path '@maxNumberOfItemsPerTA',
        numberItemSets int path '@numberOfItemsets',
        numberSingletonItemSets int path '@numberOfItems',
        minimumRuleSupport real path '@minimumSupport',
        minimumRuleConfidence real path '@minimumConfidence',
        maximumRuleLength int path '@lengthLimit'
        ) as X ;

END
    

将将此 UDF 部署到数据库:

  1. 在 Data Project Explorer 中右键单击 UDF,选择 Deploy

  2. 输入 UDP 的模式,比如示例 DB2XML。其他默认设置会将其部署到当前数据库,删除具有类似名称的 UDF,并为 Java UDF 构建代码。

  3. 单击 Finish 部署 UDF。您会在右下侧的 Data Output 视图中看到一个 Deploy successful 消息。

  4. 从命令行运行此过程,或者通过右键单击 Run,从 DesignStudio 运行它。

  5. 在 Specify Parameter Values 窗口,输入一个现有关联模型的模型名称。对于 InfoSphere Warehouse 示例,输入 MBA.RULES。在 Data Output 视图中,您可以看到包含模型的全局统计信息的结果集,如图 3 所示。

图 3. 全局统计信息结果集
屏幕截图:Data Output 选项卡显示了 ASSOCINFORMATIONEXTRACTOR(mname VARCHAR(128)) 的结果

您也可以使用 InfoSphere Warehouse Data 工具开发和调试 UDF 和 STP。





回页首


结束语

本文展示了如何结合使用 XQuery 和 Intelligent Miner 轻松编写您自己的 PMML 提取函数,以及将结果作为关系数据传入您的 SQL。所有操作无需编程语言,并且创建 UDF 的过程更加简单,因为它受图形工具支持。

参考资料

学习

获得产品和技术

讨论


作者简介

Michael Haide 的照片

Michael Haide 是在德国 Boeblingen 的 IBM 研发实验室 InfoSphere Warehouse Data Mining 的团队主管。他主要研究数据挖掘核心机制和数据库集成。他还在 DB2 Net Search Extender 担任了多年的团队主管和架构师。


作者照片:Benjamin Leonhardi

Benjamin Leonhardi 是位于德国 Boeblingen 的 IBM 研发实验室的 InfoSphere Warehouse 数据挖掘软件工程师。他主要研究挖掘可视化、文本挖掘和挖掘报告解决方案。




对本文的评价










回页首


IBM、developerWorks、DB2、InfoSphere 和 Intelligent Miner 是 IBM Corporation 在美国和/或其他国家/地区的商标。 Java 和所有基于 Java 的商标是 Sun Microsystems, Inc. 在美国和/或其他国家/地区的商标。 其他公司、产品或服务名称可能是其他公司的商标或服务标志。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款