このトピックでは、近似関数の構文について説明します。 このトピックでは、関数の使用方法の例も示します。

次の表に、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 の値を昇順でリストし、ほぼpercentage01percentage02の位置にあるx値を返します。
approx_percentile( x重量パーセンテージ)x値と値の重みの積を計算し、すべての値を計算された積の昇順に並べ替えてから、ほぼパーセンテージの位置にあるx値を返します。
approx_percentile(x, weight, array[ percentage01, percentage02 ...])x値と値の重みの積を計算し、計算された積の昇順にすべての値を並べ替えてから、おおよそpercentage01percentage02の位置にある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
    • クエリと分析結果approx_distinct
  • 例2: count関数を使用してPVの数を計算します。 次に、approx_distinct関数を使用して、client_ipフィールドの一意の値をUVの数として推定します。 標準エラーは10% です。
    • クエリ文
      * | SELECTカウント (*) AS PV、approx_distinct(client_ip、0.1) AS UV
    • クエリと分析結果approx_distinct

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)
    • クエリと分析結果approx_percentile
  • 例2: request_time列の値を昇順でソートし、request_timeフィールドの10% 、20% 、および70% 位置の値を返します。
    • クエリ文
      * | SELECT approx_percentile(request_time,array[0.1,0.2,0.7])
    • クエリと分析結果approx_percentile
  • 例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
        )
    • クエリと分析結果approx_percentile
  • 例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]
        )
    • クエリと分析結果approx_percentile
  • 例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
        )
    • クエリと分析結果approx_percentile

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)
    • クエリと分析結果numeric_histogram
  • 例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

numeric_histogram_u関数

numeric_histogram_u関数は、ヒストグラム列の数に基づいてxの近似ヒストグラムを計算するために使用されます。 数はバケットパラメーターで指定されます。 複数の行と列を含むテーブルが返されます。

構文

numeric_histogram_u( バケットx)

パラメーター

パラメーター説明
バケットヒストグラムの列数。 このパラメーターの値はbigint型です。
xこのパラメーターの値はdouble型です。

戻り値のデータ型

ダブルタイプ。

POSTメソッドのリクエスト期間の近似ヒストグラムを計算します。

  • クエリ文
    request_method:POST | numeric_histogram_u(10,request_time) を選択
  • クエリと分析結果numeric_histogram_u