LIMIT 句
LIMIT 句は、返された検索結果に制限を適用します。LIMIT の動作は、非集約クエリと集約クエリで異なります。
構文は次のとおりです。
[LIMIT integer [, integer]...]
integer は一連の数字です。ORDER BY がクエリで指定されていない場合、結果は降順のタイムスタンプ順にソートされます。Analytics 検索 UI では、1 万件のレコードで検索結果の数に上限が適用されます。
非集約クエリ
非集約クエリで最初の N 件のドキュメントを返すには、LIMIT N を指定します。
SELECT * FROM transactions LIMIT 10
非集約クエリの場合、Analytics クエリ API を使用して最大 1 万件の結果を返すことができます。1 万よりも高い制限値が指定されている場合、値は最大値で上書きされます。
Aggregation Queries
For aggregation queries a list of values is allowed in the series LIMIT clause. Each value applies to one "group by" term or bucketing function in the query. A "group by" term is a field name in an aggregation query. In the following example, field1 and field3 are group by terms, and series (field2, '1m') is a bucketing function:
SELECT field1, series (field2, '1m'), field3, count (*) …
Bucketing functions consume a value from the LIMIT clause list of values, but that value is ignored because it doesn't apply to such functions. Because the default limit is 10, if there are more bucketing functions than user-specified limits, the LIMIT clause will use 10 buckets. For example, if there two limit values specified, but three functions or terms that could consume the limit values, the last one defaults to a limit of 10.
The maximum number of buckets is 1000 for the first group by term or bucketing function. Subsequent terms are limited to 100 buckets. A larger value is overridden and replaced with the maximums. Aggregation queries can return a maximum of 1000 results.
集約の例
| クエリ | 結果 |
|---|---|
SELEC TtransactionName, 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 件のアプリケーションが返されます。これらの各バケット内には上位 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 件のアプリケーションが返されます。これらの内部には、すべてのデータを含む 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 件のアプリケーションが返されます。これらの内部では、すべてのデータを含む date-time series が示されます。各 date-time series バケット内では、上位 10 件(デフォルトを使用)の transactionName が示されます。値 25 は series 関数に適用されますが、series はバケット関数であるため、実際にはこの制限を使用しません。 |
SELECT series (eventTimestamp, '1m'), avg (responseTime) FROM transactions LIMIT20 |
LIMIT は関数には適用されず、group by 用語にのみ適用されます。したがって、このクエリでは、制限値は影響せず、クエリにより series 関数のすべてのデータが返されます。 |