TopCount (DMX)

適用於:SQL Server Analysis Services

傳回指定數目的最上層數據列,依運算式所指定的順序遞減。

語法

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

套用至

傳回數據表的表示式,例如 <數據表數據行參考>,或傳回數據表的函式。

傳回類型

<數據表表達式>

備註

排名表達式自變數提供<的值會決定數據表運算式><自變數中提供之數據列的遞減順序,以及傳回 count> 自變數中指定的<>最上層數據列數目。

TopCount 函式原本是為了啟用關聯預測而引進的,一般會產生與包含 SELECT TOP 和 ORDER BY 子句的語句相同的結果。 如果您使用 Predict (DMX) 函式,支援一些要傳回的預測規格,您將取得更理想的關聯預測效能。

不過,在某些情況下,您可能仍然需要使用 TopCount。 例如,DMX 不支援 子選取語句中的 TOP 限定符。 PredictHistogram (DMX) 函式也不支援新增 TOP。

範例

下列範例是針對您使用 基本數據採礦教學課程所建置之關聯模型的預測查詢。 查詢會傳回相同的結果,但第一個範例使用 TopCount,而第二個範例則使用 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  

注意

在此範例中,提供做為輸入的值包含單引號,因此必須以另一個單引號開頭加以逸出。 如果您不確定插入逸出字元的語法,您可以使用預測查詢產生器來建立查詢。 當您從下拉式清單中選取值時,會為您插入必要的逸出字元。 如需詳細資訊,請參閱 在數據採礦設計師中建立單一查詢。

範例結果︰

Model $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY
運動-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
公路輪胎管 1,588 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 函式的第二個自變數是您用來排序結果之巢狀數據表中的數據行。 在此範例中,INCLUDE_STATISTICS選項回傳$SUPPORT、$PROBABILITY和$ADJUSTED機率欄位。 此範例會使用$SUPPORT來排名結果。

TopCount 函式的第三個自變數會指定要傳回的數據列數目,做為整數。 若要取得前三個產品,如依$SUPPORT排序,請輸入 3。

範例結果︰

Model $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY
運動-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 個預測。 您可以使用 $PROBABILITY 或 $ADJUSTED_PROBABILITY 取代$SUPPORT,以傳回依機率或調整的機率排名的預測。 如需詳細資訊,請參閱 Predict (DMX)。