TopCount (DMX)
式によって指定されたランクの減少順に、指定された最上位の行数を返します。
構文
TopCount(<table expression>, <rank expression>, <count>)
適用対象
<table column reference> などのテーブルを返す式、またはテーブルを返す関数です。
戻り値の型
<table expression>
説明
<rank expression> によって指定された値は、<table expression> 引数に指定された行のランクの減少順を判断して、<count> 引数に指定された最上位の行数を返します。
TopCount 関数は、結合型の予測を可能にするために SQL Server 2000 で最初に導入されました。一般に、SELECT TOP 句と ORDER BY 句を含むステートメントと同じ結果が得られます。SQL Server 2005 と SQL Server 2008 では、多数の予測を返す指定をサポートする Predict (DMX) 関数を使用すると、結合型の予測のパフォーマンスが向上します。
ただし、TopCount を使用することが必要になる場合もあります。たとえば、DMX では、下位選択ステートメントに TOP 修飾子を指定できません。PredictHistogram (DMX) 関数でも、TOP の追加はサポートされません。
例
次の例は、「基本的なデータ マイニング チュートリアル」を使用して作成した Association モデルに対する予測クエリです。これらのクエリは同じ結果を返しますが、1 つ目の例では TopCount を使用し、2 つ目の例では Predict 関数を使用します。
TopCount の動作を理解するには、最初に、入れ子になったテーブルのみを返す予測クエリを実行すると役立つ場合があります。
SELECT Predict ([Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 10)
FROM
[Association]
NATURAL PREDICTION JOIN
SELECT (SELECT 'Women''s Mountain Shorts' as [Model]) AS [v Assoc Seq Line Items]) AS t
注意 |
---|
この例では、入力値として指定された値には単一引用符が含まれているため、この単一引用符の前にもう 1 つ単一引用符に追加してエスケープする必要があります。エスケープ文字を挿入するための構文がわからない場合は、予測クエリ ビルダを使用してクエリを作成できます。ドロップダウン リストから値を選択すると、必要なエスケープ文字が挿入されます。詳細については、「データ マイニング デザイナで単一クエリを作成する方法」を参照してください。 |
例の結果を次に示します。
Model |
$SUPPORT |
$PROBABILITY |
$ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 |
4334 |
0.291283016 |
0.252695851 |
Water Bottle |
2866 |
0.192620472 |
0.175205052 |
Patch kit |
2113 |
0.142012232 |
0.132389356 |
Mountain Tire Tube |
1992 |
0.133879965 |
0.125304948 |
Mountain-200 |
1755 |
0.117951475 |
0.111260823 |
Road Tire Tube |
1588 |
0.106727603 |
0.101229538 |
Cycling Cap |
1473 |
0.098998589 |
0.094256014 |
Fender Set - Mountain |
1415 |
0.095100477 |
0.090718432 |
Mountain Bottle Cage |
1367 |
0.091874454 |
0.087780332 |
Road Bottle Cage |
1195 |
0.080314537 |
0.077173962 |
TopCount 関数は、このクエリの結果を受け取り、最小値の行から順に、指定された数の行を返します。
SELECT
TopCount
(
Predict ([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,10),
$SUPPORT,
3)
FROM
[Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Women''s Mountain Shorts' as [Model]) AS [v Assoc Seq Line Items]) AS t
TopCount 関数の最初の引数はテーブル列の名前です。この例では、Predict 関数を呼び出して INCLUDE_STATISTICS 引数を使用することで、入れ子になったテーブルが返されます。
TopCount 関数の 2 番目の引数は、結果の並べ替えに使用する、入れ子になったテーブルの列です。この例では、INCLUDE_STATISTICS オプションによって $SUPPORT 列、$PROBABILTY 列、および $ADJUSTED PROBABILITY 列が返されます。この例では、$SUPPORT を使用して結果に順位を付けます。
TopCount 関数の 3 番目の引数は、返す行数を整数で指定します。$SUPPORT で順位が付けられた上位 3 製品を取得するには、「3」と入力します。
例の結果 :
モデル |
$SUPPORT |
$PROBABILITY |
$ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 |
4334 |
0.29… |
0.25… |
Water Bottle |
2866 |
0.19… |
0.17… |
Patch kit |
2113 |
0.14… |
0.13… |
ただし、この種のクエリは、実稼働設定でのパフォーマンスに影響する可能性があります。これは、クエリによってアルゴリズムからすべての予測のセットが返され、これらの予測が並べ替えられて上位 3 件が返されるためです。
次の例は、同じ結果を返すが実行時間が大幅に短縮される代替ステートメントを示しています。この例では、[TopCount] を、引数として多数の予測を受け入れる [Predict] 関数に置き換えています。また、$SUPPORT キーワードを使用して、入れ子になったテーブル列を直接取得しています。
SELECT Predict ([Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 3, $SUPPORT)
結果には、サポート値に基づいて並べ替えられた上位 3 件の予測が含まれます。$SUPPORT を $PROBABILITY または $ADJUSTED_PROBABILITY に置き換えると、確率または調整済みの確率で順位付けされた予測を取得できます。詳細については、「Predict (DMX)」を参照してください。