TopCount(DMX)

適用対象: SQL Server Analysis Services

式で指定されたランクの降順で、指定された最上位行数を返します。

構文

  
TopCount(<table expression>, <rank expression>, <count>)  

適用対象

テーブルを返す式 ( <テーブル列参照>テーブルを返す関数など)。

返り値の種類

<table 式>

解説

<rank 式で指定される値>引数は、<テーブル式>引数で指定された行のランクの減少順序を決定し、<count> 引数で指定された最上位の行の数が返されます。

TopCount 関数はもともと連想予測を可能にするために導入され、一般に、SELECT TOP および ORDER BY 句を含むステートメントと同じ結果が生成されます。 返される予測の数の指定をサポートする Predict (DMX) 関数を使用すると、連想予測のパフォーマンスが向上します。

ただし、引き続き TopCount を使用する必要がある場合があります。 たとえば、DMX では、サブ select ステートメントの TOP 修飾子はサポートされません。 PredictHistogram (DMX)関数は、TOPの追加もサポートしていません。

例

次の例は、 Basic データ マイニング チュートリアルを使用して構築したアソシエーション モデルに対する予測クエリです。 クエリは同じ結果を返しますが、最初の例では 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  

Note

この例では、入力として指定された値には単一引用符が含まれているため、別の単一引用符を先頭に付けてエスケープする必要があります。 エスケープ文字を挿入するための構文がわからない場合は、予測クエリ ビルダーを使用してクエリを作成できます。 ドロップダウン リストから値を選択すると、必要なエスケープ文字が挿入されます。 詳細については、「 データ マイニング デザイナーでのシングルトン クエリの作成」を参照してください。

結果の例:

モデル $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY
Sport-100 4,334 0.291283016 0.252695851
水ボトル 2,866 0.192620472 0.175205052
パッチ キット 2113 0.142012232 0.132389356
マウンテンタイヤチューブ 1992 0.133879965 0.125304948
Mountain-200 17:55 0.117951475 0.111260823
ロードタイヤチューブ 1588 0.106727603 0.101229538
サイクリングキャップ 1473 0.098998589 0.094256014
フェンダーセット - マウンテン 1415 0.095100477 0.090718432
マウンテン ボトル ケージ 1367 0.091874454 0.087780332
ロードボトルケージ 1,195 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、$PROBABILITY、$ADJUSTED確率の列を返します。 この例では、$SUPPORTを使用して結果をランク付けします。

TopCount 関数の 3 番目の引数は、返す行数を整数として指定します。 $SUPPORT順に上位 3 つの製品を取得するには、「3」と入力します。

結果の例:

モデル $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY
Sport-100 4,334 0.29... 0.25...
水ボトル 2,866 0.19... 0.17...
パッチ キット 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)」を参照してください。