次の方法で共有


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

参照

関数 (DMX)
一般的な予測関数 (DMX)
BottomCount (DMX)
TopPercent (DMX)
TopSum (DMX)