SELECT DISTINCT FROM <模型 > (DMX)
适用于: SQL Server Analysis Services
返回模型中所选列的所有可能状态。 所返回的值会因指定列包含离散值、离散化数值或连续数值而有所变化。
语法
SELECT [FLATTENED] DISTINCT [TOP <n>] <expression list> FROM <model>
[WHERE <condition list>][ORDER BY <expression>]
参数
n
可选。 一个指定要返回行数的整数。
表达式列表
相关列标识符(从模型中派生)或表达式的以逗号分隔的列表。
model
模型标识符。
条件列表
一个限制条件,用于限制从列列表返回的值。
expression
可选。 返回标量值的表达式。
注解
SELECT DISTINCT FROM 语句仅适用于单个列或一组相关列。 该子句不可用于一组不相关的列。
SELECT DISTINCT FROM 语句允许直接引用嵌套表内的列。 例如:
<model>.<table column reference>.<column reference>
SELECT DISTINCT FROM <模型>语句的结果因列类型而异。 下表说明了所支持的列类型和该语句的输出结果。
列类型 | 输出 |
---|---|
离散 | 列中的唯一值。 |
离散化 | 列中每个离散化存储桶的中点。 |
连续 | 列中各值的中点。 |
离散列示例
以下代码示例基于[TM Decision Tree]
在基本数据挖掘教程中创建的模型。 查询返回离散列 Gender
中存在的唯一值。
SELECT DISTINCT [Gender]
FROM [TM Decision Tree]
示例结果:
性别 |
---|
周五 |
M |
对于包含离散值的列,结果会始终包含 Missing 状态,显示为 Null 值。
连续列示例
以下代码示例返回列中所有值的中点、最小年龄和最大年龄。
SELECT DISTINCT [Age] AS [Midpoint Age],
RangeMin([Age]) AS [Minimum Age],
RangeMax([Age]) AS [Maximum Age]
FROM [TM Decision Tree]
示例结果:
Midpoint Age | Minimum Age | Maximum Age |
---|---|---|
62 | 26 | 97 |
查询还返回一行表示缺失值的 Null 值。
离散化列示例
下面的代码示例返回列算法 [Yearly Income]
创建的每个存储桶的中点、最大值和最小值。 若要重新生成此示例的结果,则必须创建一个与 [Targeted Mailing]
相同的新挖掘结构。 在向导中,将 Yearly Income
列的内容类型从 “连续 ”更改为 “离散化”。
注意
还可以更改在基本挖掘教程中创建的挖掘模型,以离散化挖掘结构列 [Yearly Income]
。 有关如何执行此操作的信息,请参阅 更改挖掘模型中列的离散化。 但是,当您更改列的离散化时,系统会强制要求重新处理挖掘结构,这将会更改您使用该结构生成的其他模型的结果。
SELECT DISTINCT [Yearly Income] AS [Bucket Average],
RangeMin([Yearly Income]) AS [Bucket Minimum],
RangeMax([Yearly Income]) AS [Bucket Maximum]
FROM [TM Decision Tree]
示例结果:
Bucket Average | Bucket Minimum | Bucket Maximum |
---|---|---|
24610.7 | 10000 | 39221.41 |
55115.73 | 39221.41 | 71010.05 |
84821.54 | 71010.05 | 98633.04 |
111633.9 | 98633.04 | 124634.7 |
147317.4 | 124634.7 | 170000 |
可以看到,列的值 [Yearly Income]
已离散化为五个存储桶,以及另一行 null 值,表示缺失值。
结果中小数的位数取决于您用于查询的客户端。 在这里,它们已舍入为两个小数位数,以便简单起见并反映 SQL Server Data Tools(SSDT)中显示的值。
例如,如果您使用决策树查看器浏览模型,并单击包含按收入分组的客户的节点,则在工具提示中将显示以下节点属性:
年龄 >=69 AND 年收入 < 39221.41
注意
最小存储桶的最小值和最大存储桶的最大值为所观察到的最高值和最低值。 任何超出此观察范围的值都假定为属于最小存储桶和最大存储桶。