すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:多変量パターン識別機能

最終更新日:Jun 23, 2026

Simple Log Service (SLS) は、異常検出機能を使用して、サービスシステムの異常状態とその根本原因を自動的に特定します。この機能は、機械学習とメトリックの現在のパターンを組み合わせ、正常な動作からの逸脱を検出します。多変量パターン識別機能は、相関のあるメトリックにまたがる多次元の異常検出をサポートします。

多変量パターン認識機能 一覧

関数名

構文

説明

戻り値のデータ型

summarize 関数

  • summarize(array(array(double)) data_samples)

  • summarize(array(array(double)) data_samples, array(double) weights)

指定されたサンプルとサンプルの重みに基づいて多変量パターンを識別し、返します。サンプルの重みは任意です。統計的パターンには、平均、標準偏差、共分散行列など、さまざまな統計量および結合統計量が含まれます。

varchar

merge_summary 関数

  • merge_summary(varchar summary1, varchar summary2)

  • merge_summary(varchar summary1, double weight1, varchar summary2, double weight2)

summarize 関数によって返された多変量パターンをマージします。多変量パターンは、同じデータセットの異なる段階での学習によって取得されたパターン、または 2 つの独立したデータセットからの学習によって取得されたパターンのいずれかです。詳細については、「summarize 関数」をご参照ください。

varchar

normalize_vector 関数

normalize_vector(varchar summary, array(double) x_vector)

summary パラメータで指定されたパターンに基づき、x_vector パラメータで指定された新しいサンプルベクトルを正規化します。ベクトルの各成分が [0, 1] 区間にマッピングされるようにします。summary パラメータには、summarize 関数によって返されたパターンを設定できます。詳細については、「summarize 関数」をご参照ください。

array(double)

standardize_vector 関数

standardize_vector(varchar summary, array(double) x_vector)

summary パラメータで指定されたパターンに基づき、x_vector パラメータで指定された新しいサンプルベクトルを標準化します。ベクトルの成分が平均 0、標準偏差 1 になるようにします。summary パラメータには、summarize 関数によって返されたパターンを設定できます。詳細については、「summarize 関数」をご参照ください。

array(double)

mah_distance 関数

mah_distance(varchar summary, array(double) x_vector)

summary パラメータで指定されたパターンに基づき、x_vector パラメータで指定された新しいサンプルベクトルのマハラノビス距離を計算します。summary パラメータには、summarize 関数によって返されたパターンを設定できます。詳細については、「summarize 関数」をご参照ください。マハラノビス距離を使用すると、異なる変数間のスケールの違いを効果的に処理できます。マハラノビス距離は、x_vector パラメータで指定されたサンプルベクトルを標準化した後の、そのベクトルとベクトルの重心との間の距離を測定します。マハラノビス距離が 1 の場合、サンプルベクトルとベクトルの重心との間の距離は、すべてのベクトルとベクトルの重心との間の平均距離と等しくなります。

double

standard_distance 関数

standard_distance(varchar summary, double metric_value, int element_index)

summary パラメータで指定されたパターンに基づき、metric_value パラメータで指定されたメトリックの標準化された距離を計算します。summary パラメータには、summarize 関数によって返されたパターンを設定できます。詳細については、「summarize 関数」をご参照ください。標準化された距離は、マハラノビス距離と類似しています。マハラノビス距離は、複数のメトリックで構成されるベクトルとベクトルの重心との間の標準化された距離を測定します。標準化された距離は、ベクトルのメトリックとベクトルの重心との間の距離を測定します。element_index パラメータは、メトリックのインデックスを指定します。metric_value パラメータは、メトリックの値を指定します。

double

anomaly_level 関数

  • anomaly_level(varchar summary, array(double) x_vector)

  • anomaly_level(varchar summary, array(double) x_vector, int element_index)

summary パラメータで指定されたパターンに基づき、x_vector パラメータで指定された新しいサンプルベクトルの各成分の異常確率を計算します。この関数は、各成分に対応する異常確率の配列を返します。summary パラメータには、summarize 関数によって返されたパターンを設定できます。詳細については、「summarize 関数」をご参照ください。返される配列内の値は異常のレベルを示します。たとえば、ある成分に対応する値が 0.1 の場合、その成分が異常である確率は 10% であり、これはレベル 1 の異常を示します。同様に、値が 0.01 であればレベル 2 (1%)、0.001 であればレベル 3 (0.1%)、0.0001 であればレベル 4 (0.01%) の異常を示します。異常レベルが高いほど、その成分が異常である確率は低くなりますが、疑わしさはより高くなります。ほとんどの場合、異常検知の結果をフィルタリングするためのしきい値を設定できます。たとえば、レベル 4 以上の異常のみを保持する、といった設定が可能です。

element_index が指定されている場合、関数は指定されたインデックスを持つ単一の成分に対する異常確率のみを計算し、その値を要素とする配列を返します。element_index が指定されていない場合、関数は x_vector のすべての成分に対する異常確率を計算し、それらを配列として返します。

array(double)

summarize 関数

summarize 関数は、指定したサンプルとサンプル重みに基づいて、多変量パターンを識別して返します。サンプル重みは任意です。統計パターンには、平均値、標準偏差、共分散行列など、さまざまな統計量と結合統計が含まれます。

varchar summarize(array(array(double)) data_samples)

または

varchar summarize(array(array(double)) data_samples, array(double) weights)

パラメーター

説明

data_samples

2 次元配列です。この配列は 2 次元テーブルとして使用できます。各列は変数を指定します。各行はサンプルの変数値を指定します。

weights

任意です。data_samples の第 1 次元と同じ長さの 1 次元配列です。各サンプルの重みを指定します。指定しない場合、すべてのサンプルの重みは等しくなります。

  • クエリ文

    * | with data_table as
    (
        select 1 as entity_id, 'A' as entity_group, cast(array[1, 2, 3, 0] as array(double)) as features union all
        select 2 as entity_id, 'A' as entity_group, cast(array[4, 5, 6, 0] as array(double)) as features union all
        select 3 as entity_id, 'A' as entity_group, cast(array[7, 8, 9, 0] as array(double)) as features union all
        select 4 as entity_id, 'A' as entity_group, cast(array[10, 11, 1, 0] as array(double)) as features union all
        select 5 as entity_id, 'A' as entity_group, cast(array[13, 14, 15, 0] as array(double)) as features union all
        select 6 as entity_id, 'A' as entity_group, cast(array[16, 17, 18, 0] as array(double)) as features union all
        select 7 as entity_id, 'A' as entity_group, cast(array[19, 20, 21, 0] as array(double)) as features union all
        select 8 as entity_id, 'A' as entity_group, cast(array[22, 23, 1, 0] as array(double)) as features
    )
        select entity_group,
            summarize(array_agg(features)) as statistical_summary
        from data_table
        group by entity_group
  • 戻り値

    entity_group

    statistical_summary

    A

    {
      "sampleCount": 8,
      "vectorSize": 4,
      "means": [
        11.5,
        12.5,
        9.25,
        0.0
      ],
      "stdDevs": [
        6.87386354243376,
        6.87386354243376,
        7.361215932167728,
        0.0
      ],
      "variances": [
        47.25,
        47.25,
        54.1875,
        0.0
      ],
      "mins": [
        1.0,
        2.0,
        1.0,
        0.0
      ],
      "maxs": [
        22.0,
        23.0,
        21.0,
        0.0
      ],
      "covariance": [
        [
          47.25,
          47.25,
          19.125,
          0.0
        ],
        [
          47.25,
          47.25,
          19.125,
          0.0
        ],
        [
          19.125,
          19.125,
          54.1875,
          0.0
        ],
        [
          0.0,
          0.0,
          0.0,
          0.0
        ]
      ],
      "correlations": [
        [
          1.0,
          1.0,
          0.37796447300922725,
          0.0
        ],
        [
          1.0,
          1.0,
          0.37796447300922725,
          0.0
        ],
        [
          0.37796447300922725,
          0.37796447300922725,
          1.0,
          0.0
        ],
        [
          0.0,
          0.0,
          0.0,
          1.0
        ]
      ],
      "sums": [
        92.0,
        100.0,
        74.0,
        0.0
      ],
      "weightSum": 8.0,
      "sumProducts": [
        [
          1436.0,
          1528.0,
          1004.0,
          0.0
        ],
        [
          1528.0,
          1628.0,
          1078.0,
          0.0
        ],
        [
          1004.0,
          1078.0,
          1118.0,
          0.0
        ],
        [
          0.0,
          0.0,
          0.0,
          0.0
        ]
      ],
      "isSummarized": true
    }
    

    応答パラメーター

    パラメーター

    説明

    sampleCount

    サンプル数です。

    vectorSize

    ベクターの長さです。

    means

    すべてのベクターの各成分の平均値です。

    stdDevs

    すべてのベクターの各成分の標準偏差です。

    variances

    すべてのベクターの各成分の分散です。

    mins

    すべてのベクターの各成分の最小値です。

    maxs

    すべてのベクターの各成分の最大値です。

    covariance

    すべてのベクターの成分間の共分散行列です。

    correlations

    すべてのベクターの成分間の相関係数行列です。

    sums

    すべてのベクターの各成分の合計です。

    weightSum

    すべてのサンプルの重みの合計です。

    sumProducts

    統計パターンのマージ時に使用される中間結果です。

    isSummarized

    統計パターンの計算が正常に完了したかどうかを示します。

    • true:リクエストは成功です。

    • false:リクエストは失敗です。

merge_summary 関数

summarize 関数 を使用すると、異なる段階で学習したパターンをマージできます。たとえば、同じデータセットを異なるタイミングで学習して得られたパターンや、2 つの独立したデータセットから得られたパターンをマージできます。

varchar merge_summary(varchar summary1, varchar summary2)

または

varchar merge_summary(varchar summary1, double weight1, varchar summary2, double weight2)

パラメーター

説明

summary1

summarize 関数によって返される多変量パターンです。詳細については、「summarize 関数」をご参照ください。

weight1

summary1 パターンの全体の重みです。

summary2

summarize 関数 が返すパターンです。

weight2

summary2 パターンの全体の重みを指定します。

  • クエリ文

    * | with data_table_01 as
    (
        select 1 as entity_id, 'A' as entity_group, cast(array[1, 2, 3, 0] as array(double)) as features union all
        select 2 as entity_id, 'A' as entity_group, cast(array[4, 5, 6, 0] as array(double)) as features union all
        select 3 as entity_id, 'A' as entity_group, cast(array[7, 8, 9, 0] as array(double)) as features union all
        select 4 as entity_id, 'A' as entity_group, cast(array[10, 11, 1, 0] as array(double)) as features
    ),
    
    summaries_01 as
    (
        select entity_group,
            summarize(array_agg(features)) as statistical_summary
        from data_table_01
        group by entity_group
    ),
    
    data_table_02 as
    (
        select 5 as entity_id, 'A' as entity_group, cast(array[13, 14, 15, 0] as array(double)) as features union all
        select 6 as entity_id, 'A' as entity_group, cast(array[16, 17, 18, 0] as array(double)) as features union all
        select 7 as entity_id, 'A' as entity_group, cast(array[19, 20, 21, 0] as array(double)) as features union all
        select 8 as entity_id, 'A' as entity_group, cast(array[22, 23, 1, 0] as array(double)) as features
    ),
    
    summaries_02 as
    (
        select entity_group,
            summarize(array_agg(features)) as statistical_summary
        from data_table_02
        group by entity_group
    )
    select s1.entity_group,
        merge_summary(s1.statistical_summary, s2.statistical_summary) as statistical_summary
    from summaries_01 as s1
        join summaries_02 as s2
        on s1.entity_group = s2.entity_group
  • クエリと分析の結果

    statistical_summary は集約パターンです。

    entity_group

    statistical_summary

    'A'

    {
      "sampleCount": 8,
      "vectorSize": 4,
      "means": [
        11.5,
        12.5,
        9.25,
        0.0
      ],
      "stdDevs": [
        6.87386354243376,
        6.87386354243376,
        7.361215932167728,
        0.0
      ],
      "variances": [
        47.25,
        47.25,
        54.1875,
        0.0
      ],
      "mins": [
        1.0,
        2.0,
        1.0,
        0.0
      ],
      "maxs": [
        22.0,
        23.0,
        21.0,
        0.0
      ],
      "covariance": [
        [
          47.25,
          47.25,
          19.125,
          0.0
        ],
        [
          47.25,
          47.25,
          19.125,
          0.0
        ],
        [
          19.125,
          19.125,
          54.1875,
          0.0
        ],
        [
          0.0,
          0.0,
          0.0,
          0.0
        ]
      ],
      "correlations": [
        [
          1.0,
          1.0,
          0.37796447300922725,
          0.0
        ],
        [
          1.0,
          1.0,
          0.37796447300922725,
          0.0
        ],
        [
          0.37796447300922725,
          0.37796447300922725,
          1.0,
          0.0
        ],
        [
          0.0,
          0.0,
          0.0,
          1.0
        ]
      ],
      "sums": [
        92.0,
        100.0,
        74.0,
        0.0
      ],
      "weightSum": 8.0,
      "sumProducts": [
        [
          1436.0,
          1528.0,
          1004.0,
          0.0
        ],
        [
          1528.0,
          1628.0,
          1078.0,
          0.0
        ],
        [
          1004.0,
          1078.0,
          1118.0,
          0.0
        ],
        [
          0.0,
          0.0,
          0.0,
          0.0
        ]
      ],
      "isSummarized": true
    }

    戻り値:

    パラメーター

    説明

    sampleCount

    サンプル数です。

    vectorSize

    ベクターの長さです。

    means

    すべてのベクターの各成分の平均値です。

    stdDevs

    すべてのベクターの各成分の標準偏差です。

    variances

    すべてのベクターの各成分の分散です。

    mins

    すべてのベクターの各成分の最小値です。

    maxs

    すべてのベクターの各成分の最大値です。

    covariance

    すべてのベクターの成分間の共分散行列です。

    correlations

    すべてのベクターの成分間の相関係数行列です。

    sums

    すべてのベクターの各成分の合計です。

    weightSum

    すべてのサンプルの重みの合計です。

    sumProducts

    統計パターンのマージ時に使用される中間結果です。

    isSummarized

    統計パターンの計算が正常に完了したかどうかを示します。

    • true:リクエストは成功です。

    • false:リクエストは失敗です。

normalize_vector 関数

summarize 関数で取得した多変量パターンの要約を使用して、新しいサンプルベクトル x_vector を正規化し、各成分を区間 [0, 1] にマッピングします。

array(double) normalize_vector(varchar summary, array(double) x_vector)

パラメーター

説明

summary

summarize 関数の学習プロセスから得られた要約です。

x_vector

新しいサンプルデータです。

  • クエリ文

    * | with data_table as
    (
        select 1 as entity_id, 'A' as entity_group, cast(array[1, 2, 3, 0] as array(double)) as features union all
        select 2 as entity_id, 'A' as entity_group, cast(array[4, 5, 6, 0] as array(double)) as features union all
        select 3 as entity_id, 'A' as entity_group, cast(array[7, 8, 9, 0] as array(double)) as features union all
        select 4 as entity_id, 'A' as entity_group, cast(array[10, 11, 1, 0] as array(double)) as features union all
        select 5 as entity_id, 'A' as entity_group, cast(array[13, 14, 15, 0] as array(double)) as features union all
        select 6 as entity_id, 'A' as entity_group, cast(array[16, 17, 18, 0] as array(double)) as features union all
        select 7 as entity_id, 'A' as entity_group, cast(array[19, 20, 21, 0] as array(double)) as features union all
        select 8 as entity_id, 'A' as entity_group, cast(array[22, 23, 1, 0] as array(double)) as features
    ),
    
    summaries as
    (
        select entity_group,
            summarize(array_agg(features)) as statistical_summary
        from data_table
        group by entity_group
    )
    
    select t1.entity_id,
        t1.entity_group,
        normalize_vector(t2.statistical_summary, t1.features) as normalized_features
    from data_table as t1
        join summaries as t2
        on t1.entity_group = t2.entity_group
  • クエリと分析結果

    normalized_features パラメーターは、x_vector で指定したサンプルベクトルの正規化結果を示します。

    entity_id

    entity_group

    normalized_features

    2

    A

    [0.14285714285714286,0.14285714285714286,0.25,0.5]

    4

    A

    [0.42857142857142857,0.42857142857142857,0.0,0.5]

    3

    A

    [0.2857142857142857,0.2857142857142857,0.4,0.5]

    ...

    ...

    ...

standardize_vector 関数

summarize 関数の多変量パターンのサマリーを使用して、各成分の平均が 0、標準偏差が 1 になるように新しいサンプルベクトル x_vector を標準化します。

array(double) standardize_vector(varchar summary, array(double) x_vector)

パラメーター

説明

summary

summarize 関数の学習プロセスから得られた要約です。

x_vector

新しいサンプルデータです。

  • クエリ文

    * | with data_table as
    (
        select 1 as entity_id, 'A' as entity_group, cast(array[1, 2, 3, 0] as array(double)) as features union all
        select 2 as entity_id, 'A' as entity_group, cast(array[4, 5, 6, 0] as array(double)) as features union all
        select 3 as entity_id, 'A' as entity_group, cast(array[7, 8, 9, 0] as array(double)) as features union all
        select 4 as entity_id, 'A' as entity_group, cast(array[10, 11, 1, 0] as array(double)) as features union all
        select 5 as entity_id, 'A' as entity_group, cast(array[13, 14, 15, 0] as array(double)) as features union all
        select 6 as entity_id, 'A' as entity_group, cast(array[16, 17, 18, 0] as array(double)) as features union all
        select 7 as entity_id, 'A' as entity_group, cast(array[19, 20, 21, 0] as array(double)) as features union all
        select 8 as entity_id, 'A' as entity_group, cast(array[22, 23, 1, 0] as array(double)) as features
    ),
    
    summaries as
    (
        select entity_group,
            summarize(array_agg(features)) as statistical_summary
        from data_table
        group by entity_group
    )
    
    select t1.entity_id,
        t1.entity_group,
        standardize_vector(t2.statistical_summary, t1.features) as standardized_features
    from data_table as t1
        join summaries as t2
        on t1.entity_group = t2.entity_group
  • クエリと分析結果

    standardized_features は、x_vector パラメーターで指定したサンプルベクトルの標準化結果です。

    エンティティ ID

    エンティティグループ

    standardized_features

    2

    A

    [-1.0910894511799619,-1.0910894511799619,-0.4415031470273609,0.0]

    4

    A

    [-0.21821789023599237,-0.21821789023599237,-1.1207387578386854,0.0]

    3

    A

    [-0.6546536707079771,-0.6546536707079771,-0.03396178054056622,0.0]

    ...

    ...

    ...

mah_distance 関数

mah_distance 関数は、summary パラメーターで指定されたパターンに基づき、 x_vector パラメーターで指定された新しいサンプルベクトルのマハラノビス距離を計算します。summary パラメーターには、summarize 関数が返すパターンを設定できます。詳細については、「summarize 関数」をご参照ください。マハラノビス距離は、変数間のスケールの違いを考慮し、標準化されたサンプルベクトルとセントロイドとの間の距離を測定します。マハラノビス距離が 1 の場合、サンプルベクトルが、全ベクトルにおけるセントロイドからの平均的な距離にあることを意味します。

double mah_distance(varchar summary, array(double) x_vector)

パラメーター

説明

summary

summarize 関数の学習プロセスから得られた要約です。

x_vector

新しいサンプルデータです。

  • クエリ文

    * | with data_table as
    (
        select 1 as entity_id, 'A' as entity_group, cast(array[1, 2, 3, 0] as array(double)) as features union all
        select 2 as entity_id, 'A' as entity_group, cast(array[4, 5, 6, 0] as array(double)) as features union all
        select 3 as entity_id, 'A' as entity_group, cast(array[7, 8, 9, 0] as array(double)) as features union all
        select 4 as entity_id, 'A' as entity_group, cast(array[10, 11, 1, 0] as array(double)) as features union all
        select 5 as entity_id, 'A' as entity_group, cast(array[13, 14, 15, 0] as array(double)) as features union all
        select 6 as entity_id, 'A' as entity_group, cast(array[16, 17, 18, 0] as array(double)) as features union all
        select 7 as entity_id, 'A' as entity_group, cast(array[19, 20, 21, 0] as array(double)) as features union all
        select 8 as entity_id, 'A' as entity_group, cast(array[22, 23, 1, 0] as array(double)) as features
    ),
    
    summaries as
    (
        select entity_group,
            summarize(array_agg(features)) as statistical_summary
        from data_table
        group by entity_group
    )
    
    select t1.entity_id,
        t1.entity_group,
        mah_distance(t2.statistical_summary, t1.features) as std_distance
    from data_table as t1
        join summaries as t2
        on t1.entity_group = t2.entity_group
  • 戻り値

    std_distance 列は、 x_vector パラメーターで指定されたサンプルベクトルのマハラノビス距離です。

    entity_id

    entity_group

    std_distance

    8

    A

    2.386927730244857

    7

    A

    1.6809080087793125

    1

    A

    1.5554594371997328

    ...

    ...

    ...

standard_distance 関数

standard_distance 関数は、summary パラメーターで指定したパターンに基づいて、metric_value パラメーターで指定したメトリックの標準化距離を計算します。summary パラメーターには、summarize 関数が返すパターンをセットできます。詳細については、「summarize 関数」をご参照ください。マハラノビス距離 (Mahalanobis distance) がマルチメトリックベクターとその重心の間の標準化距離を測定するのに対し、この関数が計算する標準化距離は、ベクター内の単一メトリックの距離を測定します。element_index パラメーターはメトリックのインデックス (0 から始まる) を指定します。metric_value パラメーターはメトリックの値を指定します。

double standard_distance(varchar summary, double metric_value, int element_index)

パラメーター

説明

summary

summarize 関数で学習したパターンです。

metric_value

新しいサンプルデータです。

element_index

サマリー配列内の指定した要素のインデックスです。最初の要素のインデックスは 0 です。

  • クエリ文

    * | with data_table as
    (
        select 1 as entity_id, 'A' as entity_group, cast(array[1, 2, 3, 0] as array(double)) as features union all
        select 2 as entity_id, 'A' as entity_group, cast(array[4, 5, 6, 0] as array(double)) as features union all
        select 3 as entity_id, 'A' as entity_group, cast(array[7, 8, 9, 0] as array(double)) as features union all
        select 4 as entity_id, 'A' as entity_group, cast(array[10, 11, 1, 0] as array(double)) as features union all
        select 5 as entity_id, 'A' as entity_group, cast(array[13, 14, 15, 0] as array(double)) as features union all
        select 6 as entity_id, 'A' as entity_group, cast(array[16, 17, 18, 0] as array(double)) as features union all
        select 7 as entity_id, 'A' as entity_group, cast(array[19, 20, 21, 0] as array(double)) as features union all
        select 8 as entity_id, 'A' as entity_group, cast(array[22, 23, 1, 0] as array(double)) as features
    ),
    
    summaries as
    (
        select entity_group,
            summarize(array_agg(features)) as statistical_summary
        from data_table
        group by entity_group
    )
    
    select t1.entity_id,
        t1.entity_group,
        standard_distance(t2.statistical_summary, 30, 1) as std_distance
    from data_table as t1
        join summaries as t2
        on t1.entity_group = t2.entity_group
    
  • クエリと分析結果

    std_distance は、指定したインデックスにおける metric_value の標準化距離です。

    entity_id

    entity_group

    std_distance

    8

    A

    2.386927730244857

    7

    A

    1.6809080087793125

    1

    A

    1.5554594371997328

    ...

    ...

    ...

anomaly_level 関数

anomaly_level 関数は、サマリーパラメーターで指定されたパターンに基づき、x_vector パラメーターで指定された新しいサンプルベクトルのマハラノビス距離を計算し、その結果からアノマリーレベルを導き出します。サマリーパラメーターには、summarize 関数によって返されるパターンを設定できます。詳細については、「summarize 関数」をご参照ください。アノマリーレベルは、値が大きいほど、アノマリーである疑いが強くなることを示します。たとえば、特定のアノマリーレベルをしきい値として設定し、その値を超える結果のみを保持するようにフィルタリングできます。

element_index パラメーターを指定した場合、この関数は、そのインデックスにある要素のアノマリーレベルのみを計算します。指定しない場合は、ベクトル全体のアノマリーレベルを計算します。

double anomaly_level(varchar summary, array(double) x_vector)

または

double anomaly_level(varchar summary, array(double) x_vector, int element_index)

パラメーター

説明

summary

summarize 関数は、学習プロセスを使用してパターンを生成します。

x_vector

新しいサンプルデータです。

element_index

オプション。x_vector 配列内の指定されたインデックスにある要素。

  • クエリ文

    * |
    with dummy as
    (
        select sequence(1, 1000) as seq_data,
            count(*) as record_count from log
    ),
    
    sample_data as
    (
        select 'G1' as group_id,
            s.seq_num,
             -- (100, 5000) を中心に分布する2次元のランダムベクトルを1,000個生成します。2つのコンポーネントの標準偏差は、それぞれ20と500です。
            inverse_normal_cdf(100, 20, random()) as x1,
            inverse_normal_cdf(5000, 500, rand()) as x2
        from dummy,
            unnest(seq_data) as s(seq_num)
    ),
    
    data_summary as
    (
        select group_id,
            summarize(array_agg(array[x1, x2])) as metric_summary
        from sample_data
        group by group_id
    ),
    
    new_data as
    (
        select 'G1' as group_id, 1001 as object_id, 100.0 as x1, 5000.0 as x2
        union all select 'G1' as group_id, 1002 as object_id, 118.0 as x1, 5450.0 as x2
        union all select 'G1' as group_id, 1003 as object_id, 138.0 as x1, 5950.0 as x2
        union all select 'G1' as group_id, 1004 as object_id, 158.0 as x1, 6450.0 as x2
        union all select 'G1' as group_id, 1005 as object_id, 178.0 as x1, 6950.0 as x2
        union all select 'G1' as group_id, 1006 as object_id, 198.0 as x1, 7450.0 as x2
        union all select 'G1' as group_id, 1007 as object_id, 318.0 as x1, 10000.0 as x2
    )
    
    select n.group_id,
        json_extract(s.metric_summary, '$.means') as metric_vector_mean,
        json_extract(s.metric_summary, '$.covariance') as metric_covariance,
        n.object_id,
        n.x1,
        n.x2,
        anomaly_level(s.metric_summary, array[x1, x2]) as anomaly_level
    from data_summary as s
        join new_data as n
            on s.group_id = n.group_id
    order by n.group_id, n.object_id
    limit 100000
    
  • クエリと分析結果

    anomaly_level は、x_vector パラメーターで指定されたサンプルベクトルのアノマリーレベルを示します。

    group_id

    object_id

    anomaly_level

    G1

    1007

    13.0

    G1

    1006

    5.0

    G1

    1005

    4.0

    ...

    ...

    ...