LIMIT 句は、返された検索結果に制限を適用します。LIMIT は、非集約クエリと集約クエリでは動作が異なります。

構文は次のとおりです。

[LIMIT integer [, integer]...]

integer は一連の数字です。ORDER BY がクエリで指定されていない場合、結果は降順のタイムスタンプ順にソートされます。Analytics 検索 UI では、1 万件のレコードで検索結果の数に上限が適用されます。

非集約クエリ

非集約クエリで最初の N 件のドキュメントを返すには、LIMIT N を指定します。 

SELECT * FROM transactions LIMIT 10

非集約クエリの場合、Analytics クエリ API を使用して最大 1 万件の結果を返すことができます。1 万よりも高い制限値が指定されている場合、値は最大値で上書きされます。

集約クエリ

集約クエリの場合、LIMIT 句で値のリストを使用できます。各値は、クエリの 1 つの「group by」用語またはバケット関数に適用されます。「group by」という用語は、集約クエリのフィールド名です。次の例では、field1 と field3 が group by 用語で、series(field2, '1m') がバケット関数です。

SELECT field1series(field2, '1m'), field3count(*) …

バケット関数は、LIMIT 句の値リストの値を使用しますが、その値は、このような関数には適用されないため、無視されます。デフォルトの制限は 10 であるため、ユーザ指定の制限よりも多くのバケット関数がある場合、LIMIT 句では 10 個のバケットが使用されます。たとえば、2 つの制限値が指定されていても、制限値を使用する可能性のある 3 つの関数または用語がある場合、最後の値はデフォルトの 10 に制限されます。

バケットの最大数は、最初の group by 用語またはバケット関数に対して 1000 です。後続の用語は 100 個のバケットに制限されます。これより大きい値は上書きされ、最大値に置き換えられます。集約クエリは、最大で 1 万件の結果を返すことができます。

制限用の REST API の使用方法は若干異なります。「分析イベント API」を参照してください。

集約の例

クエリ結果
SELECT transactionName, avg(responseTime) FROM transactions

制限が指定されていない場合、最大で上位 10 件の結果が表示されます。

SELECT DISTINCT requestGUID FROM transactions

制限が指定されていない場合、上位 10 件の結果が表示されます。

SELECT transactionName, avg(responseTime)
FROM transactions LIMIT 50

上位 50 件の結果が返されます。

SELECT application, transactionName, avg(responseTime)
FROM transactions LIMIT 500, 50

上位 500 件の application が返されます。
これらの各バケット内には、上位 50 件の transactionName があります。

SELECT application, transactionName, avg(responseTime)
FROM transactions LIMIT 2000, 500

制限が適用されているため、このクエリでは上位 1000 件の application が返されます。
これらの各バケット内には、上位 100 件の transactionName があります。

SELECT application, transactionName, avg(responseTime) 
FROM transactions LIMIT 20

上位 20 件の application が返されます。これらの各バケット内には上位 10 件
(デフォルトを使用)の transactionName があります。

SELECT application, series(eventTimestamp, '1m'), transactionName, avg(responseTime)
FROM transactions LIMIT 20, 25, 30

上位 20 件の application が返されます。
これらの内部には、すべてのデータを含む date-time series が含まれます。
各 date-time series バケット内では、上位 30 件の transactionName が示されます。
値 25 は series 関数に適用されますが、series はバケット関数であるため、実際にはこの制限を使用しません。

SELECT application, series(eventTimestamp, '1m'), transactionName, avg(responseTime)
FROM transactions LIMIT 20, 25

上位 20 件の application が返されます。
これらの内部では、すべてのデータを含む date-time series が示されます。
各 date-time series バケット内では、上位 10 件(デフォルトを使用)の transactionName が示されます。
値 25 は series 関数に適用されますが、series はバケット関数であるため、実際にはこの制限を使用しません。

SELECT series(eventTimestamp, '1m'), avg(responseTime)
FROM transactions LIMIT 20

LIMIT は関数には適用されず、group by 用語にのみ適用されます。したがって、このクエリでは、制限値は影響せず、クエリにより series 関数のすべてのデータが返されます。