このトピックでは、近似関数の構文について説明します。 このトピックでは、関数の使用方法の例も示します。
次の表に、Log Serviceでサポートされているおおよその機能を示します。
重要 分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。
機能 | 構文 | 説明 |
---|---|---|
approx_distinct関数 | approx_distinct(x) | x 内の一意の値の数を推定します。 デフォルトの標準エラーは2.3% です。 |
approx_distinct(x, e) | x 内の一意の値の数を推定します。 カスタム標準エラーを指定できます。 | |
approx_percentile関数 | approx_percentile( x 、パーセンテージ) | x の値を昇順でリストし、ほぼパーセンテージの位置にあるx値を返します。 |
approx_percentile(x, array[ percentage01, percentage02 ...]) | x の値を昇順でリストし、ほぼpercentage01とpercentage02の位置にあるx値を返します。 | |
approx_percentile( x 、重量、パーセンテージ) | 各x値と値の重みの積を計算し、すべての値を計算された積の昇順に並べ替えてから、ほぼパーセンテージの位置にあるx値を返します。 | |
approx_percentile(x, weight, array[ percentage01, percentage02 ...]) | 各x値と値の重みの積を計算し、計算された積の昇順にすべての値を並べ替えてから、おおよそpercentage01とpercentage02の位置にあるx値を返します。 | |
approx_percentile( x 、重量、パーセンテージ、精度) | 各x値と値の重みの積を計算し、すべての値を計算された積の昇順に並べ替えてから、ほぼパーセンテージの位置にあるx値を返します。 戻り値の精度を指定できます。 | |
numeric_histogram関数 | numeric_histogram( バケット、x) | ヒストグラムの列数に基づいて、xのおおよそのヒストグラムを計算します。 数はバケットパラメーターで指定されます。 戻り値はJSON型です。 |
numeric_histogram( バケット、x、重み) | ヒストグラムの列数に基づいて、xのおおよそのヒストグラムを計算します。 数はバケットパラメーターで指定されます。 戻り値はJSON型です。 x の値の重みを指定できます。 | |
numeric_histogram_u関数 | numeric_histogram_u( バケット、x) | ヒストグラムの列数に基づいて、xのおおよそのヒストグラムを計算します。 数はバケットパラメーターで指定されます。 複数の行と列を含むテーブルが返されます。 |
approx_distinct関数
approx_distinct関数は、x内の一意の値の数を推定するために使用されます。
構文
- 次の構文のapprox_distinct関数を使用して、x内の一意の値の数を推定します。 デフォルトの標準エラーは2.3% です。
approx_distinct(x)
- 次の構文のapprox_distinct関数を使用して、x内の一意の値の数を推定します。 カスタム標準エラーを指定できます。
approx_distinct(x, e)
パラメーター
パラメーター | 説明 |
---|---|
x | このパラメーターの値は任意のデータ型です。 |
e | カスタム標準エラー。 有効な値: 0.0115〜0.26。 |
戻り値のデータ型
bigint型。
例
- 例1: カウント関数を使用して、ページビュー (PV) の数を計算します。 次に、approx_distinct関数を使用して、client_ipフィールドの一意の値を一意の訪問者 (UV) の数として推定します。 標準エラーは2.3% です。
- クエリ文
* | SELECTカウント (*) AS PV、approx_distinct(client_ip) AS UV
- クエリと分析結果
- クエリ文
- 例2: count関数を使用してPVの数を計算します。 次に、approx_distinct関数を使用して、client_ipフィールドの一意の値をUVの数として推定します。 標準エラーは10% です。
- クエリ文
* | SELECTカウント (*) AS PV、approx_distinct(client_ip、0.1) AS UV
- クエリと分析結果
- クエリ文
approx_percentile関数
approx_percentile関数を使用して、xの値を昇順でリストし、約パーセンテージの位置にある値を返します。
構文
- 次の構文のapprox_percentile関数を使用して、xの値を昇順でリストし、ほぼパーセンテージの位置にあるx値を返します。 戻り値はdouble型です。
approx_percentile( x 、パーセンテージ)
- 次の構文のapprox_percentile関数を使用して、xの値を昇順にリストし、ほぼpercentage01とpercentage02の位置にあるx値を返します。 戻り値は配列 (double,double) 型です。
approx_percentile(x, array[ percentage01, percentage02 ...])
- 次の構文のapprox_percentile関数を使用して、各x値と値の重みの積を計算し、計算された積の昇順にすべての値を並べ替えてから、ほぼパーセンテージの位置にあるx値を返します。 戻り値はdouble型です。
approx_percentile( x 、重量、パーセンテージ)
- 次の構文のapprox_percentile関数を使用して、各x値の積と値の重みを計算し、計算された積の昇順にすべての値を並べ替えてから、ほぼpercentage01およびpercentage02の位置にあるx値を返します。 戻り値は配列 (double,double) 型です。
approx_percentile(x, weight, array[ percentage01, percentage02 ...])
- 次の構文のapprox_percentile関数を使用して、各x値と値の重みの積を計算し、計算された積の昇順にすべての値を並べ替えてから、ほぼパーセンテージの位置にあるx値を返します。 戻り値はdouble型です。 戻り値の精度を指定できます。
approx_percentile( x 、重量、パーセンテージ、精度)
パラメーター
パラメーター | 説明 |
---|---|
x | このパラメーターの値はdouble型です。 |
パーセンテージ | パーセント値。 値の範囲: [0 , 1] |
精度 | 精度。 値の範囲: (0,1) |
重量 | 体重。 重みは1より大きい整数でなければなりません。 重みを指定すると、システムは各x値の積と値の重みを計算し、計算された積の昇順にすべての値をソートします。 |
戻り値のデータ型
doubleまたはarray(double、double) タイプ。
例
- 例1: request_time列の値を昇順でソートし、request_timeフィールドのほぼ50% の位置にある値を返します。
- クエリ文
* | SELECT approx_percentile(request_time,0.5)
- クエリと分析結果
- クエリ文
- 例2: request_time列の値を昇順でソートし、request_timeフィールドの10% 、20% 、および70% 位置の値を返します。
- クエリ文
* | SELECT approx_percentile(request_time,array[0.1,0.2,0.7])
- クエリと分析結果
- クエリ文
- 例3: 各request_time値の積と値の重みを計算し、すべてのrequest_time値を計算した積の昇順に並べ替えてから、request_timeフィールドのほぼ50% の位置にある値を返します。 request_timeの値が20未満の場合、重みは100である。 それ以外の場合、重量は10です。
- クエリ文
* | 選択 approx_percentile ( request_time,case request_time < 20のときに100 else 10 終了, 0.5 )
- クエリと分析結果
- クエリ文
- 例4: 各request_time値の積と値の重みを計算し、すべてのrequest_time値を計算した積の昇順に並べ替えてから、request_timeフィールドのほぼ80% 位置と90% 位置にある値を返します。 request_timeの値が20未満の場合、重みは100である。 それ以外の場合、重量は10です。
- クエリ文
* | 選択 approx_percentile ( request_time,case request_time < 20のときに100 else 10 終了, array [0.8,0.9] )
- クエリと分析結果
- クエリ文
- 例5: 各request_time値の積と値の重みを計算し、すべてのrequest_time値を計算した積の昇順に並べ替えてから、request_timeフィールドのほぼ50% の位置にある値を返します。 精度は0.2です。 request_timeの値が20未満の場合、重みは100である。 それ以外の場合、重量は10です。
- クエリ文
* | 選択 approx_percentile ( request_time,case request_time < 20のときに100 else 10 終了, 0.5, 0.2 )
- クエリと分析結果
- クエリ文
numeric_histogram関数
numeric_histogram関数は、ヒストグラム列の数に基づいてxの近似ヒストグラムを計算するために使用されます。 数はバケットパラメーターで指定されます。 戻り値はJSON型です。
構文
- 次の構文のnumeric_histogram関数を使用して、ヒストグラム列の数に基づいてxの近似ヒストグラムを計算します。 数はバケットパラメーターで指定されます。
numeric_histogram( バケット、x)
- 次の構文のnumeric_histogram関数を使用して、ヒストグラム列の数に基づいてxの近似ヒストグラムを計算します。 数はバケットパラメーターで指定されます。 x の値の重みを指定できます。
numeric_histogram( バケット、x、重み)
パラメーター
パラメーター | 説明 |
---|---|
バケット | ヒストグラムの列数。 このパラメーターの値はbigint型です。 |
x | このパラメーターの値はdouble型です。 |
重量 | 体重。 重みは0より大きい整数でなければなりません。 重みを指定すると、システムは各x値の積と値の重みを計算し、計算された積に基づいて値をグループ化します。 |
戻り値のデータ型
JSON型。
例
- 例1: POSTメソッドのリクエスト期間のおおよそのヒストグラムを計算します。
- クエリ文
request_method:POST | SELECT numeric_histogram(10,request_time)
- クエリと分析結果
- クエリ文
- 例2: 各request_time値と値の重みの積を計算し、計算された積に基づいて値をグループ化し、POSTメソッドのリクエスト期間の近似ヒストグラムを計算します。
- クエリ文
request_method:POST | SELECT numeric_histogram(10, request_time,case when request_time<20 then then 100 else 10 end)
- クエリと分析結果
- クエリ文
numeric_histogram_u関数
numeric_histogram_u関数は、ヒストグラム列の数に基づいてxの近似ヒストグラムを計算するために使用されます。 数はバケットパラメーターで指定されます。 複数の行と列を含むテーブルが返されます。
構文
numeric_histogram_u( バケット、x)
パラメーター
パラメーター | 説明 |
---|---|
バケット | ヒストグラムの列数。 このパラメーターの値はbigint型です。 |
x | このパラメーターの値はdouble型です。 |
戻り値のデータ型
ダブルタイプ。
例
POSTメソッドのリクエスト期間の近似ヒストグラムを計算します。
- クエリ文
request_method:POST | numeric_histogram_u(10,request_time) を選択
- クエリと分析結果