パターンマイニング関数は、指定された条件に基づいて複数の属性を持つサンプルを分析します。データのパーティション分割に影響を与える明確なパターンのセットを特定します。この関数は、条件間の差異の原因を迅速に診断するのに役立ちます。
diff_patterns
この関数は、同じ構造を持つ 2 つのデータセットを比較して、それらの間で異なる不連続属性 (ディメンション) のパターンを見つけます。この関数は、表形式データ内のテンプレート (頻出アイテムセット) を比較するように設計されています。
構文
diff_patterns($TABLE, $HEADER, $SPLIT_COLUMN, $TEST_VAL, $CONTROL_VAL, $METRIC_COLUMN, $WEIGHT_COLUMN, $PARAM)パラメーター
パターン差分統計関数を使用する場合、$SPLIT_COLUMN に $TEST_VAL と $CONTROL_VAL の両方の行が含まれていることを確認してください。テスト群または対照群のデータが欠落している場合、関数は比較を実行できません。
パラメーター | データ型 | 必須 | 説明 |
$TABLE | row<array<T>, array<E>, ..., array<F>> | はい | diff_patterns 関数の入力テーブル。各列はドリルダウン分析のためのディメンション列です。 |
$HEADER | array<varchar> | はい | 列名。これらの名前は $TABLE の列に対応します。ヘッダー名の数はテーブルの列数と一致する必要があります。 |
$SPLIT_COLUMN | varchar | はい | グループを区別するために使用されるターゲット列の名前。タグカテゴリは現在、文字列型のみをサポートしています。 |
$TEST_VAL | varchar | はい | $SPLIT_COLUMN 内のテスト群に対応する値。 $TEST_VAL が $SPLIT_COLUMN に存在することを確認してください。そうでない場合、2 つのグループを区別できません。通常、$TEST_VAL は異常値に対応します。 |
$CONTROL_VAL | varchar | はい | $SPLIT_COLUMN 内の対照群に対応する値。 $CONTROL_VAL が $SPLIT_COLUMN に存在することを確認してください。そうでない場合、2 つのグループを区別できません。$CONTROL_VAL は正常値に対応します。 |
$METRIC_COLUMN | double/int | いいえ | メトリック列。デフォルト値は データグループに加えて、特定のメトリックに対するディメンションの組み合わせの影響を分析したい場合は、メトリック列を指定します。たとえば、'qps' 列がメトリックを記録する場合、アルゴリズムはさまざまなディメンションの組み合わせについてこのメトリックの差を計算できます。 |
$WEIGHT_COLUMN | varchar | いいえ | 重み列。デフォルト値は '' で、重み列が指定されていないことを意味します。 このパラメーターが設定されていない場合、すべての行は同じ重みを持つと見なされます。重み列が設定されている場合、すべての計算で重みが考慮されます。たとえば、重みが 2 の行は、重みが 1 の行と比較して 2 回出現したものとして扱われます。 |
$PARAM | varchar | いいえ | 詳細については、「param パラメーターの詳細」をご参照ください。 |
param パラメーターの詳細
パラメーター名 | 説明 | 型 | 必須 | デフォルト | 有効な値 |
minimum_support_fraction | テスト群における出力パターンの最小サポート。たとえば、テスト群でパターンが 0.1 の頻度で出現する場合、そのサポートは 0.1 です。このパラメーターは、秘密度を調整して出力パターンの数をコントロールします。 | double | いいえ | 0.05 | (0, 1) |
allow_sample | 計算にサンプリングを許可するかどうかを指定します。 | bool | いいえ | true | [true, false] |
agg_op | パターンは複数行のデータをフィルターします。次に関数は、METRIC_COLUMN 内のこれらの行の集約値を計算します。このパラメーターは、使用する集約操作を指定します。METRIC_COLUMN が指定されていない場合、デフォルト値はテスト群では 1、対照群では 0 です。 | string | いいえ | "avg" | ["sum", "avg", "max", "min", "count", "p95"] |
shapley_value_min_fraction | 条件の最小 Shapley 値の割合。このパラメーターは、パターン内の条件の数をコントロールします。 | double | いいえ | 0.1 | (0, 1) |
例
クエリ分析:
この機能はパブリックプレビュー中のため、set session enable_remote_functions=true フラグが必要です。このフラグは手動で追加する必要があります。この要件は将来のバージョンで削除される予定です。
* | set session enable_remote_functions=true ; with t0 as (select JSON_EXTRACT_SCALAR(entity, '$.platform') AS platform, JSON_EXTRACT_SCALAR(entity, '$.region') AS region, cast(value as double) as value, if((value > 100), 'true', 'false') as anomaly_label from log), t1 as ( select array_agg(platform) as platform, array_agg(region) as region, array_agg(anomaly_label) as anomaly_label, array_agg(value) as value from t0), t2 as (select row(platform, region, anomaly_label, value) as table_row from t1), t3 as (select diff_patterns(table_row, ARRAY['platform', 'region', 'anomaly_label', 'value'],'anomaly_label', 'true', 'false', 'value') as ret from t2) select * from t3出力:
[["\"platform\"='Amazon Prime'","\"platform\"='Console'","\"platform\"='VR'","\"platform\"='Mobile'","\"platform\"='PC'","\"platform\"='Hulu'","\"platform\"='Netflix' AND \"region\"='Asia'","\"platform\"='YouTube'","\"platform\"='Disney+' AND \"region\"='South America'"],[18720,56921,44516,47520,44640,8640,4320,15840,4320],[0,4999,7324,5760,4320,0,0,1440,0],[0.05248902272841978,0.15960083668399478,0.12481844742405635,0.13324136538752713,0.1251661311216164,0.024225702797732206,0.012112851398866103,0.04441378846250904,0.012112851398866103],[0.0,0.0032988991351195829,0.004833194091941553,0.003801092022062172,0.0028508190165466289,0.0,0.0,0.000950273005515543,0.0],[0.05248902272841978,0.1563019375488752,0.1199852533321148,0.12944027336546497,0.12231531210506977,0.024225702797732206,0.012112851398866103,0.0434635154569935,0.012112851398866103],[608.6946996258738,552.6152340898742,501.3011076154948,525.0147121416072,580.8151715760738,409.282718625793,631.6115865793741,603.7699053925991,526.960199868643],[0.0,58.46518308219622,55.396758003518488,49.12926473747681,44.68946999270535,0.0,0.0,20.76262974302821,0.0],null]
戻り値の詳細
パラメーター | 型 | 説明 | 例 |
$RET.patterns | array<varchar> | テーブルテンプレート。頻出アイテムセットです。 |
|
$RET.test_supports | array<bigint> | テスト群における対応するテンプレートの頻度。 |
|
$RET.control_supports | array<bigint> | 対照群における対応するテンプレートの頻度。 比較すると、diff_patterns の出力で先に表示される結果は、対照群 (正常なグループ) よりもテスト群 (異常なグループ) での頻度がはるかに高くなっています。 |
|
$RET.test_ratio | array<double> | テスト群 (label=1) における対応するテンプレートの、テストデータセット全体に対する比率。 |
|
$RET.control_ratio | array<double> | 対照群 (label=0) における対応するテンプレートの、検証セット全体に対する比率。 |
|
$RET.difference | array<double> | テスト群データと対照群データの差。 |
|
$RET.test_average_metric | array<double> | パターンに一致するデータの METRIC_COLUMN の平均値。METRIC_COLUMN が '' の場合、この戻り値は意味がありません。 |
|
$RET.control_average_metric | array<double> | パターンに一致しないデータの METRIC_COLUMN の平均値。METRIC_COLUMN が '' の場合、この戻り値は意味がありません。 |
|
$RET.error_msg | varchar/null | エラーメッセージ。エラーが発生しない場合、戻り値は |
|