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)」を参照してください。