SELECT FROM <model>.CONTENT (DMX)
返回指定数据挖掘模型的挖掘模型架构行集。
语法
SELECT [FLATTENED] [TOP <n>] <expression list> FROM <model>.CONTENT
[WHERE <condition expression>]
[ORDER BY <expression> [DESC|ASC]]
参数
n
可选。 一个指定返回行数的整数。expression list
从内容架构行集派生的一组列,各列间以逗号分隔。model
模型标识符。condition expression
可选。 一个限制条件,用于限制从列列表返回的值。expression
可选。 一个返回标量值的表达式。
注释
SELECT FROM <model>.CONTENT 语句可以返回特定于每种算法的内容。 例如,您可能希望在自定义应用程序中,使用某个关联规则模型的所有规则的说明。 使用 SELECT FROM <model>.CONTENT 语句可以返回模型的 NODE_RULE 列中的值。
下表列出了挖掘模型内容中包含的列。
注意 |
---|
算法可能会为了正确表示内容而对列做出不同的解释。 有关每种算法的挖掘模型内容的说明,以及有关如何解释和查询每种模型类型的挖掘模型内容的提示,请参阅挖掘模型内容(Analysis Services - 数据挖掘)。 |
CONTENT 行集列 |
说明 |
---|---|
MODEL_CATALOG |
目录名称。 如果提供程序不支持目录,则为 NULL。 |
MODEL_SCHEMA |
未限定的架构名称。 如果提供程序不支持架构,则为 NULL。 |
MODEL_NAME |
模型名称。 此列中不能包含 NULL。 |
ATTRIBUTE_NAME |
与节点相对应的属性的名称。 |
NODE_NAME |
节点的名称。 |
NODE_UNIQUE_NAME |
节点在模型中的唯一名称。 |
NODE_TYPE |
表示节点类型的整数。 . |
NODE_GUID |
节点 GUID。 如果没有 GUID,则为 NULL。 |
NODE_CAPTION |
与节点关联的标签或标题, 主要用于显示。 如果不存在标题,则返回 NODE_NAME。 |
CHILDREN_CARDINALITY |
节点所具有的子节点的数目。 |
PARENT_UNIQUE_NAME |
节点的父节点的唯一名称。 |
NODE_DESCRIPTION |
节点的说明。 |
NODE_RULE |
表示嵌入在节点中的规则的 XML 片段。 XML 字符串的格式采用 PMML 标准。 |
MARGINAL_RULE |
说明从父节点到节点的路径的 XML 片段。 |
NODE_PROBABILITY |
路径在节点中结束的概率。 |
MARGINAL_PROBABILITY |
从父节点到达该节点的概率。 |
NODE_DISTRIBUTION |
包含说明节点中值分布的统计信息的表。 |
NODE_SUPPORT |
支持此节点的事例数。 |
示例
下面的代码返回已添加到目标邮件挖掘结构的决策树模型的父节点 ID。
SELECT MODEL_NAME, NODE_NAME FROM [TM Decision Tree].CONTENT
WHERE NODE_TYPE = 1
预期的结果:
MODEL_NAME |
NODE_NAME |
---|---|
TM_DecisionTree |
0 |
下面的查询使用 IsDescendant 函数返回上一示例中返回的节点的直接子节点。
注意 |
---|
由于 NODE_NAME 的值为字符串,所以您不能使用嵌套 select 语句返回 NODE_ID,以作为 IsDescendant 函数的参数。 |
SELECT NODE_NAME, NODETYPE, NODE_CAPTION
FROM [TM Decision Tree].CONTENT
WHERE ISDESCENDANT('0')
预期的结果:
由于该模型是一个决策树模型,所以模型父节点的后代中包含一个边际统计信息节点、一个表示可预测属性的节点以及多个包含输入属性和值的节点。 有关详细信息,请参阅决策树模型的挖掘模型内容(Analysis Services - 数据挖掘)。
使用 FLATTENED 关键字
挖掘模型内容常常将模型的相关重要信息包含在嵌套表列中。 您可以使用 FLATTENED 关键字,从嵌套表列中检索数据,而无需使用支持分层行集的提供程序。
下面的查询从 Naïve Bayes 模型返回一个单个节点:边际统计信息节点 (NODE_TYPE = 26)。 此节点的 NODE_DISTRIBUTION 列中包含一个嵌套表。 因此,对该嵌套表列进行了平展,对于该嵌套表的每一行,均相应地返回了一行。 对于该嵌套表中的每一行,标量列 MODEL_NAME 的值都重复了一次。
另请注意:如果只指定嵌套表列的名称,则将会针对嵌套表中的每一列返回一个新列。 默认情况下,嵌套表的名称作为每个嵌套表列名称的前缀。
SELECT FLATTENED MODEL_NAME, NODE_DISTRIBUTION
FROM [TM_NaiveBayes].CONTENT
WHERE NODE_TYPE = 26
示例结果:
MODEL_NAME |
NODE_DISTRIBUTION.ATTRIBUTE_NAME |
NODE_DISTRIBUTION.ATTRIBUTE_VALUE |
NODE_DISTRIBUTION.SUPPORT |
NODE_DISTRIBUTION.PROBABILITY |
NODE_DISTRIBUTION.VARIANCE |
NODE_DISTRIBUTION.VALUETYPE |
---|---|---|---|---|---|---|
TM_NaiveBayes |
Bike Buyer |
缺失 |
0 |
0 |
0 |
1 |
TM_NaiveBayes |
Bike Buyer |
0 |
6556 |
0.506685215240745 |
0 |
|
TM_NaiveBayes |
Bike Buyer |
1 |
6383 |
0.493314784759255 |
0 |
下面的示例演示如何使用嵌套 select 语句,仅从嵌套表返回部分列。 您可以通过对嵌套表的表名使用别名来简化显示,如下所示。
SELECT MODEL_NAME,
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT] AS t
FROM NODE_DISTRIBUTION)
FROM TM_NaiveBayes.CONTENT
WHERE NODE_TYPE = 26
示例结果:
MODEL_NAME |
t.ATTRIBUTE_NAME |
t.ATTRIBUTE_VALUE |
t.SUPPORT |
---|---|---|---|
TM_NaiveBayes |
Bike Buyer |
缺失 |
0 |
TM_NaiveBayes |
Bike Buyer |
0 |
6556 |
TM_NaiveBayes |
Bike Buyer |
1 |
6383 |