All Products
Search
Document Center

Simple Log Service:Fungsi identifikasi pola multivariat

Last Updated:Jun 23, 2026

Layanan Log Sederhana menggunakan fitur deteksi anomali untuk secara otomatis mengidentifikasi kondisi abnormal pada sistem layanan beserta akar penyebabnya. Fitur ini menggabungkan pembelajaran mesin dengan pola metrik saat ini guna mendeteksi penyimpangan dari perilaku normal. Fungsi identifikasi pola multivariat mendukung deteksi anomali multidimensi pada metrik yang saling berkorelasi.

Daftar fungsi pengenalan pola multivariat

Nama fungsi

Sintaksis

Deskripsi

Tipe data nilai kembali

fungsi summarize

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

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

Mengidentifikasi dan mengembalikan pola multivariat berdasarkan sampel dan bobot sampel yang ditentukan. Bobot sampel bersifat opsional. Pola statistik mencakup berbagai statistik dan statistik gabungan, seperti rata-rata, deviasi standar, dan matriks kovarians.

varchar

fungsi merge_summary

  • merge_summary(varchar summary1, varchar summary2)

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

Menggabungkan pola multivariat yang dikembalikan oleh fungsi summarize. Pola multivariat tersebut dapat berupa pola yang diperoleh dari pembelajaran terhadap dataset yang sama pada tahap berbeda atau pola yang diperoleh dari dua dataset independen. Untuk informasi selengkapnya, lihat fungsi summarize.

varchar

fungsi normalize_vector

normalize_vector(varchar summary, array(double) x_vector)

Menormalisasi vektor sampel baru yang ditentukan oleh parameter x_vector berdasarkan pola yang ditentukan oleh parameter summary. Pastikan setiap komponen vektor dipetakan ke interval [0, 1]. Anda dapat mengatur parameter summary ke pola yang dikembalikan oleh fungsi summarize. Untuk informasi selengkapnya, lihat fungsi summarize.

array(double)

fungsi standardize_vector

standardize_vector(varchar summary, array(double) x_vector)

Menstandarisasi vektor sampel baru yang ditentukan oleh parameter x_vector berdasarkan pola yang ditentukan oleh parameter summary. Pastikan komponen-komponen vektor memiliki rata-rata 0 dan deviasi standar 1. Anda dapat mengatur parameter summary ke pola yang dikembalikan oleh fungsi summarize. Untuk informasi selengkapnya, lihat fungsi summarize.

array(double)

fungsi mah_distance

mah_distance(varchar summary, array(double) x_vector)

Menghitung jarak Mahalanobis untuk vektor sampel baru yang ditentukan oleh parameter x_vector berdasarkan pola yang ditentukan oleh parameter summary. Anda dapat mengatur parameter summary ke pola yang dikembalikan oleh fungsi summarize. Untuk informasi selengkapnya, lihat fungsi summarize. Anda dapat menggunakan jarak Mahalanobis untuk menangani perbedaan skala antar variabel secara efektif. Jarak Mahalanobis mengukur jarak antara vektor sampel yang ditentukan oleh parameter x_vector setelah distandarisasi dan pusat vektor tersebut. Jika jarak Mahalanobis bernilai 1, jarak antara vektor sampel dan pusat vektor sama dengan jarak rata-rata antara semua vektor dan pusat vektor.

double

fungsi standard_distance

standard_distance(varchar summary, double metric_value, int element_index)

Menghitung jarak terstandarisasi untuk metrik yang ditentukan oleh parameter metric_value berdasarkan pola yang ditentukan oleh parameter summary. Anda dapat mengatur parameter summary ke pola yang dikembalikan oleh fungsi summarize. Untuk informasi selengkapnya, lihat fungsi summarize. Jarak terstandarisasi mirip dengan jarak Mahalanobis. Jarak Mahalanobis mengukur jarak terstandarisasi antara vektor yang terdiri dari beberapa metrik dan pusat vektor tersebut. Jarak terstandarisasi mengukur jarak antara satu metrik dalam vektor dan pusat vektor tersebut. Parameter element_index menentukan indeks metrik tersebut. Parameter metric_value menentukan nilai metrik tersebut.

double

fungsi anomaly_level

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

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

Menghitung jarak Mahalanobis untuk vektor sampel baru yang ditentukan oleh parameter x_vector berdasarkan pola yang ditentukan oleh parameter summary, lalu membulatkan ke bawah setiap nilai jarak untuk memperoleh tingkat probabilitas anomali yang berbeda. Anda dapat mengatur parameter summary ke pola yang dikembalikan oleh fungsi summarize. Untuk informasi selengkapnya, lihat fungsi summarize. Jika nilai kembali adalah 0,1, probabilitas bahwa vektor sampel baru bersifat abnormal adalah 10%. Nilai ini menunjukkan anomali tingkat pertama. Jika nilai kembali adalah 0,01, probabilitas bahwa vektor sampel baru bersifat abnormal adalah 1%. Nilai ini menunjukkan anomali tingkat kedua. Jika nilai kembali adalah 0,001, probabilitas bahwa vektor sampel baru bersifat abnormal adalah 0,1%. Nilai ini menunjukkan anomali tingkat ketiga. Jika nilai kembali adalah 0,0001, probabilitas bahwa vektor sampel baru bersifat abnormal adalah 0,01%. Nilai ini menunjukkan anomali tingkat keempat. Peningkatan tingkat anomali menunjukkan penurunan probabilitas anomali vektor sampel baru dan peningkatan kecurigaan terhadap vektor tersebut. Dalam sebagian besar kasus, Anda dapat mengonfigurasi ambang batas untuk menyaring anomali berdasarkan hasil deteksi anomali. Misalnya, Anda dapat mengonfigurasi ambang batas untuk hanya menyimpan anomali tingkat keempat dan lebih tinggi.

Jika element_index ditentukan, fungsi hanya menghitung probabilitas anomali untuk komponen pada indeks yang ditentukan. Jika tidak ditentukan, fungsi menghitung probabilitas anomali untuk semua komponen.

array(double)

Fungsi summarize

Fungsi summarize mengidentifikasi dan mengembalikan pola multivariat berdasarkan sampel dan bobot sampel yang ditentukan. Bobot sampel bersifat opsional. Pola statistik mencakup berbagai statistik dan statistik gabungan, seperti rata-rata, deviasi standar, dan matriks kovarians.

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

Atau

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

Parameter

Deskripsi

data_samples

Array dua dimensi. Array ini dapat digunakan sebagai tabel dua dimensi. Setiap kolom menentukan sebuah variabel. Setiap baris menentukan nilai variabel dari suatu sampel.

weights

Opsional. Array satu dimensi dengan panjang yang sama dengan dimensi pertama data_samples. Menentukan bobot setiap sampel. Jika tidak ditentukan, semua sampel memiliki bobot yang sama.

Contoh

  • Pernyataan kueri

    * | 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
  • Nilai kembali

    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
    }
    

    Parameter respons

    Parameter

    Deskripsi

    sampleCount

    Jumlah sampel.

    vectorSize

    Panjang vektor.

    means

    Nilai rata-rata setiap komponen di seluruh vektor.

    stdDevs

    Deviasi standar setiap komponen di seluruh vektor.

    variances

    Variansi setiap komponen di seluruh vektor.

    mins

    Nilai minimum setiap komponen di seluruh vektor.

    maxs

    Nilai maksimum setiap komponen di seluruh vektor.

    covariance

    Matriks kovarians antar komponen semua vektor.

    correlations

    Matriks koefisien korelasi antar komponen semua vektor.

    sums

    Jumlah setiap komponen di seluruh vektor.

    weightSum

    Jumlah semua bobot sampel.

    sumProducts

    Hasil antara yang digunakan saat menggabungkan pola statistik.

    isSummarized

    Menunjukkan apakah perhitungan pola statistik berhasil dilakukan.

    • true: Permintaan berhasil.

    • false: Permintaan gagal.

fungsi merge_summary

Anda dapat menggunakan fungsi summarize untuk menggabungkan pola yang dipelajari pada tahap berbeda, seperti pola yang dipelajari dari dataset yang sama pada waktu berbeda atau pola dari dua dataset independen.

varchar merge_summary(varchar summary1, varchar summary2)

Atau

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

Parameter

Deskripsi

summary1

Pola multivariat yang dikembalikan oleh fungsi summarize. Untuk informasi selengkapnya, lihat fungsi summarize.

weight1

Bobot keseluruhan untuk pola summary1.

summary2

Pola ini diperoleh dari fungsi summarize.

weight2

Menentukan bobot keseluruhan untuk pola summary2.

Contoh

  • Pernyataan kueri

    * | 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
  • Hasil kueri dan analisis

    statistical_summary adalah pola agregasi.

    entity_group

    statistical_summary

    2

    {
      "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
    }

    Parameter kembali:

    Parameter

    Deskripsi

    sampleCount

    Jumlah sampel.

    vectorSize

    Panjang vektor.

    means

    Nilai rata-rata setiap komponen di seluruh vektor.

    stdDevs

    Deviasi standar setiap komponen di seluruh vektor.

    variances

    Variansi setiap komponen di seluruh vektor.

    mins

    Nilai minimum setiap komponen di seluruh vektor.

    maxs

    Nilai maksimum setiap komponen di seluruh vektor.

    covariance

    Matriks kovarians antar komponen semua vektor.

    correlations

    Matriks koefisien korelasi antar komponen semua vektor.

    sums

    Jumlah setiap komponen di seluruh vektor.

    weightSum

    Jumlah semua bobot sampel.

    sumProducts

    Hasil antara yang digunakan saat menggabungkan pola statistik.

    isSummarized

    Menunjukkan apakah perhitungan pola statistik berhasil dilakukan.

    • true: Permintaan berhasil.

    • false: Permintaan gagal.

fungsi normalize_vector

Anda dapat menggunakan ringkasan pola multivariat yang diperoleh dari fungsi summarize untuk menormalisasi vektor sampel baru x_vector, yang memetakan setiap komponennya ke interval [0, 1].

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

Parameter

Deskripsi

summary

Pola ini diperoleh dari proses pembelajaran fungsi summarize.

x_vector

Data sampel baru.

Contoh

  • Pernyataan kueri

    * | 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
  • Hasil kueri dan analisis

    Parameter normalized_features menunjukkan hasil normalisasi vektor sampel yang ditentukan oleh parameter 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]

    ...

    ...

    ...

fungsi standardize_vector

Gunakan ringkasan pola multivariat dari fungsi summarize untuk menstandarisasi vektor sampel baru x_vector sehingga komponen-komponennya memiliki rata-rata 0 dan deviasi standar 1.

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

Parameter

Deskripsi

summary

Pola ini diperoleh dari proses pembelajaran fungsi summarize.

x_vector

Data sampel baru.

Contoh

  • Pernyataan kueri

    * | 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
  • Hasil kueri dan analisis

    Parameter standardized_features menunjukkan hasil standarisasi vektor sampel yang ditentukan oleh parameter x_vector.

    entity_id

    entity_group

    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]

    ...

    ...

    ...

fungsi mah_distance

Fungsi mah_distance menghitung jarak Mahalanobis untuk vektor sampel baru yang ditentukan oleh parameter x_vector berdasarkan pola yang ditentukan oleh parameter summary. Anda dapat mengatur parameter summary ke pola yang dikembalikan oleh fungsi summarize. Untuk informasi selengkapnya, lihat fungsi summarize. Jarak Mahalanobis memperhitungkan perbedaan skala antar variabel dan mengukur jarak antara vektor sampel yang telah distandarisasi dan pusatnya. Jarak Mahalanobis sebesar 1 berarti vektor sampel berada pada jarak rata-rata dari pusat dibandingkan semua vektor.

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

Parameter

Deskripsi

summary

Pola ini diperoleh dari proses pembelajaran fungsi summarize.

x_vector

Data sampel baru.

Contoh

  • Pernyataan kueri

    * | 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
  • Nilai kembali

    Parameter std_distance menunjukkan jarak Mahalanobis dari vektor sampel yang ditentukan oleh parameter x_vector.

    entity_id

    entity_group

    std_distance

    8

    A

    2.386927730244857

    7

    A

    1.6809080087793125

    1

    A

    1.5554594371997328

    ...

    ...

    ...

fungsi standard_distance

Fungsi standard_distance menghitung jarak terstandarisasi untuk metrik yang ditentukan oleh parameter metric_value berdasarkan pola yang ditentukan oleh parameter summary. Anda dapat mengatur parameter summary ke pola yang dikembalikan oleh fungsi summarize. Untuk informasi selengkapnya, lihat fungsi summarize. Berbeda dengan jarak Mahalanobis yang mengukur jarak terstandarisasi antara vektor multi-metrik dan pusatnya, jarak terstandarisasi mengukur jarak untuk satu metrik tunggal dalam vektor tersebut. Parameter element_index menentukan indeks metrik (dimulai dari 0). Parameter metric_value menentukan nilai metrik tersebut.

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

Parameter

Deskripsi

summary

Pola yang dipelajari oleh fungsi summarize.

metric_value

Data sampel baru

element_index

Indeks elemen tertentu dalam array summary. Elemen pertama memiliki indeks 0.

Contoh

  • Pernyataan kueri

    * | 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
    
  • Hasil kueri dan analisis

    std_distance adalah jarak terstandarisasi dari sampel input metric_value pada indeks yang ditentukan.

    entity_id

    entity_group

    std_distance

    8

    A

    2.386927730244857

    7

    A

    1.6809080087793125

    1

    A

    1.5554594371997328

    ...

    ...

    ...

fungsi anomaly_level

Fungsi anomaly_level menghitung jarak Mahalanobis untuk vektor sampel baru yang ditentukan oleh parameter x_vector berdasarkan pola yang ditentukan oleh parameter summary, lalu membulatkan ke bawah setiap nilai jarak untuk memperoleh tingkat probabilitas anomali yang berbeda. Anda dapat mengatur parameter summary ke pola yang dikembalikan oleh fungsi summarize. Untuk informasi selengkapnya, lihat fungsi summarize. Nilai kembali 0,1 menunjukkan probabilitas abnormal 10% (anomali tingkat pertama). Nilai kembali 0,01 menunjukkan probabilitas 1% (tingkat kedua). Nilai kembali 0,001 menunjukkan 0,1% (tingkat ketiga). Nilai kembali 0,0001 menunjukkan 0,01% (tingkat keempat). Tingkat anomali yang lebih tinggi berarti probabilitas yang lebih rendah dan kecurigaan anomali yang lebih besar. Anda dapat mengonfigurasi ambang batas untuk menyaring hasil, misalnya hanya menyimpan anomali tingkat keempat dan di atasnya.

Jika Anda menentukan parameter element_index, fungsi hanya menghitung probabilitas anomali untuk komponen pada indeks tersebut. Jika tidak, fungsi menghitung probabilitas anomali untuk seluruh vektor.

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

Atau

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

Parameter

Deskripsi

summary

Fungsi summarize menggunakan proses pembelajaran untuk menghasilkan pola.

x_vector

Data sampel baru.

element_index

Opsional. Elemen pada indeks tertentu dalam array x_vector.

Contoh

  • Pernyataan kueri

    * |
    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,
             -- Menghasilkan 1.000 vektor acak dua dimensi yang tersebar di sekitar rentang (100, 5000). Nilai deviasi standar kedua komponen adalah 20 dan 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
    
  • Hasil kueri dan analisis

    Parameter anomaly_level menunjukkan probabilitas abnormal dari vektor sampel yang ditentukan oleh parameter x_vector.

    group_id

    object_id

    anomaly_level

    G1

    1007

    13.0

    G1

    1006

    5.0

    G1

    1005

    4.0

    ...

    ...

    ...