SELECT DISTINCT FROM <model > (DMX)
モデル内の選択された列に対して可能なすべての状態を返します。 返される値は、指定された列に含まれているのが不連続値か、分離された数値か、連続する数値かによって異なります。
構文
SELECT [FLATTENED] DISTINCT [TOP <n>] <expression list> FROM <model>
[WHERE <condition list>][ORDER BY <expression>]
引数
n
省略可。 返す行数を指定する整数値です。expression list
関連する列識別子 (モデルより抽出) または式のコンマ区切りリストです。model
モデル識別子です。condition list
列のリストから返される値を制限する条件です。expression
省略可。 スカラー値を返す式です。
説明
SELECT DISTINCT FROM ステートメントは、1 つの列または関連する列のセットでのみ動作します。 この句は、関連しない列のセットでは動作しません。
SELECT DISTINCT FROM ステートメントによって、入れ子になったテーブル内の列を直接参照することができます。 例 :
<model>.<table column reference>.<column reference>
SELECT DISTINCT FROM <model> ステートメントの結果は、列の型によって異なります。 次の表は、サポートされている列の型およびステートメントからの出力について示しています。
列の型 |
出力 |
---|---|
Discrete |
列内の一意な値です。 |
Discretized |
列内の各離散化バケットの中点です。 |
Continuous |
列内の値の中間点です。 |
不連続列の例
次のコード サンプルは、「基本的なデータ マイニング チュートリアル」で作成した [TM Decision Tree] モデルに基づいています。 クエリは、不連続列 Gender 内に存在する一意の値を返します。
SELECT DISTINCT [Gender]
FROM [TM Decision Tree]
例の結果を次に示します。
Gender |
---|
|
F |
M |
不連続値を含む列の場合、結果には、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 値の 1 行を返します。
離散化列の例
次のコード サンプルは、列 [Yearly Income] のアルゴリズムで作成された各バケットの中間点、最大値、および最小値を返します。 この例の結果を再現するには、[Targeted Mailing] と同じマイニング構造を新しく作成する必要があります。 ウィザードでは、Yearly Income 列のコンテンツの種類を Continuous から Discretized に変更します。
![]() |
---|
また、「基本的なデータ マイニング チュートリアル」で作成したマイニング モデルを変更して、マイニング構造列 [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] 列の値が 5 つのバケットに分離されていることに加え、不足値を表すために NULL 値の行が追加されていることがわかります。
結果の小数点以下表示桁数は、クエリに使用するクライアントによって異なります。 ここでは、説明を簡単にするためおよび SQL Server データ ツール (SSDT) で表示される値を反映するために、小数点以下 2 桁に丸められています。
たとえば、デシジョン ツリー ビューアーを使用してモデルを参照し、収入ごとにグループ化された顧客を含むノードをクリックすると、次のノードのプロパティがツールヒントに表示されます。
Age >=69 AND Yearly Income < 39221.41
![]() |
---|
最小バケットの最小値および最大バケットの最大値は、計測された値のうちの最大値と最小値になります。 この計測された範囲に該当しないすべての値は、最小バケットおよび最大バケットに属していると見なされます。 |