Logstore 内の時系列データ を SPL インストラクションで処理した後、時系列 SPL 関数で結果を可視化できます。
関数リスト
|
関数 |
説明 |
|
タイムスタンプを秒からナノ秒に変換します。高精度の用途に最適です。 |
|
|
履歴データから将来の傾向を予測します。モニタリング、分析、計画に使用します。 |
|
|
機械学習を用いて、時系列内の異常を特定します。モニタリング、アラート、データ分析に最適です。 |
|
|
時系列を傾向、季節性、残差成分に分解し、統計手法で残差成分を分析して異常を特定します。リアルタイムモニタリング、根本原因分析、データ品質の検出に最適です。 |
|
|
時系列をドリルダウンし、時間単位でグループ化した統計情報に基づいて特定の期間を詳細に分析できるようにします。 |
|
|
複数の時系列またはベクターデータに対して迅速にグループ分析を実行し、形状が類似したメトリック曲線を特定したり、異常パターンを検出したり、データパターンを分類したりします。 |
|
|
データの連続性、データの欠損、安定性、周期性、顕著な傾向など、複数の観点から時系列を分析します。 |
|
|
2 つのオブジェクト間の類似度を計算します。ベクター同士、またはベクターとベクターのグループを比較できます。また、2 つのベクターグループの類似度マトリックスを返すこともできます。 |
second_to_nano
タイムスタンプを秒からナノ秒に変換します。この関数は通常、ログ内の時刻フィールドを処理するために使用され、特に高精度タイムスタンプが必要なシナリオで役立ちます。
-
精度: データベースとアプリケーションが、ナノ秒レベルの時刻データを処理するための十分な精度に対応していることを確認してください。
-
データ型: オーバーフローや精度の損失を防ぐために、
BIGINTなどの適切なデータ型を選択してナノ秒レベルのデータを格納してください。
構文
second_to_nano(seconds)
パラメーター
|
パラメーター |
説明 |
|
seconds |
秒単位のタイムスタンプ。値は整数または浮動小数点数を指定できます。 |
戻り値
ナノ秒単位のタイムスタンプを整数として返します。
例
異なる期間にわたるリクエストを、メソッド別にナノ秒レベルでカウントします。
-
クエリ
* | extend ts = second_to_nano(__time__) | stats count=count(*) by ts,request_method -
出力
クエリは ts、request_method、count の 3 列を返します。例えば、クエリが 7 行を返し、ナノ秒レベルのタイムスタンプとリクエストメソッドごとに集計された各グループのカウントが 5 になることがあります。
series_forecast 関数
この関数は時系列予測を実行します。機械学習アルゴリズムを使用して、過去の時系列データに基づき将来のデータポイントを予測します。この関数は、モニタリング、傾向分析、容量計画で一般的に使用されます。
制限
-
make-series を使用して、データを series 形式で構築する必要があります。時間単位は ナノ秒 である必要があります。
-
各行には少なくとも 31 個のデータポイントが含まれている必要があります。
構文
series_forecast(array(T) field, bigint periods)
または
series_forecast(array(T) field, bigint periods, varchar params)
パラメーター
|
パラメーター |
説明 |
|
field |
入力時系列のメトリクス列です。 |
|
periods |
予測するデータポイント数です。 |
|
params |
オプション。JSON 形式の アルゴリズムパラメーター です。 |
戻り値
row(
time_series array(bigint),
metric_series array(double),
forecast_metric_series array(double),
forecast_metric_upper_series array(double),
forecast_metric_lower_series array(double),
forecast_start_index bigint,
forecast_length bigint,
error_msg varchar)
|
パラメーター |
タイプ |
説明 |
|
time_series |
array(bigint) |
ナノ秒のタイムスタンプ配列です。入力期間と予測期間の両方のタイムスタンプが含まれます。 |
|
metric_series |
array(double) |
time_series と同じ長さのメトリクス配列です。 変更後の入力メトリクス (例:NaN 値を処理したもの) が含まれ、予測期間は NaN 値でパディングされます。 |
|
forecast_metric_series |
array(double) |
time_series と同じ長さの予測結果の配列です。 入力メトリクスのフィッティング値と、予測期間の予測値が含まれます。 |
|
forecast_metric_upper_series |
array(double) |
time_series と同じ長さの予測結果の上限の配列です。 |
|
forecast_metric_lower_series |
array(double) |
time_series と同じ長さの予測結果の下限の配列です。 |
|
forecast_start_index |
bigint |
タイムスタンプ配列における予測期間の開始インデックスです。 |
|
forecast_length |
bigint |
予測期間におけるデータポイント数です。 |
|
error_msg |
varchar |
エラーメッセージです。NULL 値は時系列予測が成功したことを示します。それ以外の場合は、失敗の理由を示します。 |
例
request_method ごとに、次の 10 時点の inflow_avg 値を予測します。
-
SPL 文
* | extend ts = second_to_nano(__time__ - __time__ % 60) | stats latency_avg = max(cast(status as double)), inflow_avg = min(cast (status as double)) by ts, request_method | make-series latency_avg default = 'last', inflow_avg default = 'last' on ts from 'min' to 'max' step '1m' by request_method | extend test=series_forecast(inflow_avg, 10) -
出力
クエリは
request_methodでグループ化された 2 行を返します。GET リクエストの場合、latency_avgは 200.0 です。POST リクエストの場合、latency_avgは 500.0 です。いずれのリクエストタイプでも、inflow_avgは 200.0 です。出力には、タイムスタンプ配列である_ts_列と、予測結果を含むtest列も含まれます。
アルゴリズムパラメーター
|
パラメーター |
説明 |
|
"pred":"10min" |
予測結果におけるデータポイント間の間隔です。サポートされる単位:
|
|
"uncertainty_config": {"interval_width": 0.9999} |
|
|
"seasonality_config": {"seasons": [{"name": "month", "period": 30.5, "fourier_order": 1}]} |
|
series_pattern_anomalies 関数
series_pattern_anomalies 関数は、機械学習アルゴリズムを使用して時系列データ内の異常なパターンを検出します。この関数は、モニタリング、アラート、データ分析に役立ちます。
制限事項
-
make-series を使用して、データをシリーズ形式で構築する必要があります。時間単位はナノ秒である必要があります。
-
各行には少なくとも 11 個のデータポイントが含まれている必要があります。
構文
series_pattern_anomalies(array(T) metric_series)
パラメーター
|
パラメーター |
説明 |
|
metric_series |
入力時系列のメトリック列。数値型のみがサポートされています。 |
戻り値
row(
anomalies_score_series array(double),
anomalies_type_series array(varchar)
error_msg varchar
)
|
列名 |
型 |
説明 |
|
anomalies_score_series |
array(double) |
入力時系列に対応するアノマリースコアの配列。各スコアは [0, 1] の範囲内です。 |
|
anomalies_type_series |
array(varchar) |
入力時系列に対応する異常タイプの説明の配列。正常なデータポイントでは、値は null になります。 |
|
error_msg |
varchar |
null 値は異常検出が成功したことを示します。それ以外の場合、このフィールドには失敗を説明するメッセージが含まれます。 |
例
この例では、series_pattern_anomalies 関数を使用して時系列の異常を検出する方法を示します。
-
SPL 文
* | extend ts = second_to_nano(__time__ - __time__ % 60) | stats latency_avg = max(cast(status as double)), inflow_avg = min(cast (status as double)) by ts, request_method | where request_method is not null | make-series latency_avg default = 'last', inflow_avg default = 'last' on ts from 'min' to 'max' step '1m' by request_method | extend test=series_pattern_anomalies(inflow_avg) -
出力
クエリ結果は request_method でグループ化され、latency_avg、inflow_avg、ts、request_method、test の 5 つの列が含まれます。latency_avg は、POST リクエストでは 500.0、GET リクエストでは 200.0 です。inflow_avg は両方とも 200.0 です。test 列には、series_pattern_anomalies 関数からの構造化された結果が含まれます。
series_decompose_anomalies 関数
series_decompose_anomalies 関数は、時系列をトレンド、季節性、残差の各コンポーネントに分解することで異常を検出します。その後、残差コンポーネントを分析することで異常点を識別します。
制限事項
-
make-series を使用して、データをシリーズ形式で構築する必要があります。時間単位はナノ秒である必要があります。
-
各行には少なくとも 11 個のデータポイントが含まれている必要があります。
構文
series_decompose_anomalies(array(T) metric_series)
または
series_decompose_anomalies(array(T) metric_series, varchar params)
パラメーター
|
パラメーター |
説明 |
|
metric_series |
入力するメトリック値の時系列。 |
|
params |
オプション。JSON 形式で指定するアルゴリズムパラメーター。 |
戻り値
row(
metric_baseline_series array(double)
anomalies_score_series array(double),
anomalies_type_series array(varchar)
error_msg varchar
)
|
列名 |
型 |
説明 |
|
metric_baseline_series |
array(double) |
アルゴリズムが適合させたベースラインメトリックデータ。 |
|
anomalies_score_series |
array(double) |
入力時系列の異常スコアの系列。値は [0, 1] の範囲内です。 |
|
anomalies_type_series |
array(varchar) |
異常タイプの説明からなる系列。正常なデータポイントの場合、値は null です。 |
|
error_msg |
varchar |
エラーメッセージ。値が null の場合は、異常検出が成功したことを示します。それ以外の場合、この値は失敗の理由を示します。 |
例
この例では、すべての時系列で異常を検出し、直近 5 分間の最大異常スコアが 0 以上の系列のみを返します。
-
SPL 文
* | extend ts = second_to_nano(__time__ - __time__ % 60) | stats latency_avg = max(cast(status as double)), inflow_avg = min(cast (status as double)) by ts, request_method | where request_method is not null | make-series latency_avg default = 'last', inflow_avg default = 'last' on ts from 'min' to 'max' step '1m' by request_method | extend test=series_decompose_anomalies(inflow_avg, '{"confidence":"0.005"}') | extend anomalies_score_series = test.anomalies_score_series | where array_max(slice(anomalies_score_series, -5, 5)) >= 0 -
出力
クエリ結果には 5 つの列が含まれます:
latency_avg、inflow_avg、request_method、test(予測値)、anomalies_score_series(異常スコア)。GET および POST リクエストメソッドに対して 2 行が返されます。test列の値は 200 に近いベースライン値の配列です。anomalies_score_series列の値は 0 に近く、異常が検出されなかったことを示しています。
アルゴリズムパラメーター
|
パラメーター |
型 |
例 |
説明 |
|
auto_period |
varchar |
"true" |
時系列の周期を自動的に検出するかどうかを指定します。有効な値は |
|
period_num |
varchar |
"[1440]" |
1 周期あたりのデータポイント数。複数の長さを指定できます。最も長いものだけが使用されます。 |
|
period_unit |
varchar |
"[\"min\"]" |
周期の時間単位。複数の時間単位を指定できます。時間単位の数は、指定した周期の長さの数と同じにする必要があります。 |
|
period_config |
varchar |
"{\"cpu_util\": {\"auto_period\":\"true\", \"period_num\":\"720\", \"period_unit\":\"min\"}}" |
異なる特徴に対して異なる周期を設定します。値は JSON オブジェクトで、各キーは特徴名、各値は |
|
trend_sampling_step |
varchar |
"8" |
時系列分解におけるトレンドコンポーネントのダウンサンプリング率。値は正の整数である必要があります。レートが高いほどトレンドコンポーネントの適合が速くなりますが、精度が低下する可能性があります。デフォルト値は |
|
season_sampling_step |
varchar |
"1" |
時系列分解における季節性コンポーネントのダウンサンプリング率。値は正の整数である必要があります。レートが高いほど季節性コンポーネントの適合が速くなりますが、精度が低下する可能性があります。デフォルト値は |
|
batch_size |
varchar |
"2880" |
異常分析のためのスライディングウィンドウのサイズ。ウィンドウサイズが小さいほど分析速度が向上しますが、精度が低下する可能性があります。デフォルトでは、ウィンドウサイズはシーケンスの長さです。 |
|
confidence |
varchar |
"0.005" |
異常分析の感度。(0, 1.0) の範囲の値で指定します。値が小さいほど感度が低くなり、検出される異常が少なくなります。 |
|
confidence_trend |
varchar |
"0.005" |
トレンドコンポーネントの異常に対する感度。設定した場合、 |
|
confidence_noise |
varchar |
"0.005" |
残差コンポーネントの異常に対する感度。設定した場合、 |
series_drilldown
この関数は、時間でグループ化された統計情報に基づき、時系列のドリルダウンを実行し、特定の期間内のデータをきめ細かく分析します。
構文
series_drilldown(array(varchar) label_name_array, array(varchar) label_0_array,array(varchar) label_1_array,array(varchar) label_2_array, ... ,array(array(bigint)) time_series_array,array(array(double)) metric_series_array,bigint begin_time,bigint end_time)
または
series_drilldown(array(varchar) label_name_array, array(varchar) label_0_array,array(varchar) label_1_array,array(varchar) label_2_array, ... ,array(array(bigint)) time_series_array,array(array(double)) metric_series_array,bigint begin_time,bigint end_time,varchar config)
パラメーター
|
パラメーター |
説明 |
|
label_x_array |
配列内の各要素は、対応する時系列のラベルです。この関数はオーバーロードされており、最大 7 つのラベル配列をサポートします。 |
|
time_series_array |
外側の配列の各要素は時系列です。 |
|
metric_series_array |
外側の配列の各要素はメトリック系列です。 |
|
begin_time |
根本原因のドリルダウンの開始時刻です。通常はアノマリーの開始時刻に設定します。単位はナノ秒です。 |
|
end_time |
根本原因のドリルダウンの終了時刻です。通常はアノマリーの終了時刻に設定します。単位はナノ秒です。 |
|
config |
オプション。JSON 形式で指定する、この関数の アルゴリズムパラメーター です。 |
戻り値
row(drilldown_result varchar, error_msg varchar)
|
列名 |
型 |
説明 |
|
drilldown_result |
varchar |
JSON 形式のドリルダウン結果です。 |
|
error_msg |
varchar |
エラーメッセージです。このフィールドが null の場合、操作は成功しています。それ以外の場合は、失敗の理由が示されます。 |
drilldown_resultフィールド
{
"attrs": [
{
"api": "/ids/ml/annotationdataset",
"resource": "test"
},
{
"api": "/console/logs/getLogs"
}
],
"statistics": {
"relative_ratio": 0.5003007763190033,
"relative_ratio_predict": 1.0000575873881987,
"unexpected_difference": -4.998402840764594,
"relative_unexpected_difference": -0.499660063545782,
"difference": -4.999183856137503,
"predict": 5.005203022057271,
"relative_ratio_real": 1.9987568734256989,
"real": 10.004386878194774,
"support": 50
}
}
attrsフィールド
このフィールドは、統計結果のディメンションフィルターを指定します。各オブジェクト内の条件は AND の関係にあり、配列内のオブジェクト同士は OR の関係にあります。
-
この例では、
apiの値が/ids/ml/annotationdatasetで、resource の値が test の場合、または api の値が/console/logs/getLogsの場合にフィルターが一致します。"attrs": [ { "api": "/ids/ml/annotationdataset", "resource": "test" }, { "api": "/console/logs/getLogs" } ] -
attrsの 1 つ目の要素は、apiの値が/ids/ml/annotationdatasetで、resourceの値がtestであることを示します。{ "api": "/ids/ml/annotationdataset", "resource": "test" }
statisticsフィールド
このフィールドは、時系列に対する統計分析結果を提供します。これらの結果は、根本原因分析またはアノマリー検出に使用できます。
|
メトリック名 |
型 |
説明 |
|
support |
int |
現在の根本原因の範囲内のサンプルサイズ (例:データポイント数) です。 |
|
real |
float |
現在の根本原因の範囲内のメトリックの実際の観測値です。 |
|
predict |
float |
現在の根本原因の範囲内のメトリックの予測値です。 |
|
difference |
float |
現在の根本原因の範囲内の、メトリックの予測値と観測値の差分です。 |
|
unexpected_difference |
float |
通常の変動 (期待される変化) を取り除いた後の、予測値と観測値の差分です。これは、現在の根本原因の範囲内の予期しない変化を表します。 |
|
relative_unexpected_difference |
float |
現在の根本原因の範囲内の、予期しない変化の期待される変化に対する比率です。 |
|
relative_ratio |
float |
現在の根本原因の範囲内の、メトリックの予測値と観測値の比率です。 |
|
relative_ratio_predict |
float |
根本原因の範囲内のメトリックの予測値と、根本原因の範囲外のメトリックの予測値の比率です。 |
|
relative_ratio_real |
float |
根本原因の範囲内のメトリックの観測値と、根本原因の範囲外のメトリックの観測値の比率です。 |
例
-
SPL 文
* | extend ts= (__time__- __time__%60)*1000000000 | stats access_count = count(1) by ts, Method, ProjectName | extend access_count = cast( access_count as double) | make-series access_count = access_count default = 'null' on ts from 'sls_begin_time' to 'sls_end_time' step '1m' by Method, ProjectName | stats m_arr = array_agg(Method), ProjectName = array_agg(ProjectName), ts_arr = array_agg(__ts__), metrics_arr = array_agg(access_count) | extend ret = series_drilldown(ARRAY['Method', 'ProjectName'], m_arr, ProjectName, ts_arr, metrics_arr, 1739192700000000000, 1739193000000000000, '{"fill_na": "1", "gap_size": "3"}') | project ret -
出力
drilldown_result 列には、分析レコードの JSON が含まれます。この構造には、
/ids/ml/annotationdataset、/console/logs/getLogsなどの関連する API パスを一覧表示するattrs配列と、support、real、predict、difference、unexpected_difference、relative_unexpected_difference、relative_ratio、relative_ratio_predict、relative_ratio_realなどの統計メトリックを含むstatisticsオブジェクトが含まれます。error_msg 列は操作のステータスを報告します。たとえば、値がIncompleteの場合、分析が完了していないことを示します。
クラスタリング関数
複数の時系列またはベクトルデータに対して高速なクラスタリング分析を実行し、類似したメトリック曲線の特定、異常なパターンの検出、データパターンの分類などを行います。
構文
cluster(array(array(double)) array_vector, varchar cluster_mode, varchar params)
パラメーター
|
パラメーター |
説明 |
|
array_vector |
ベクトルの 2 次元配列。配列内のすべてのベクトルは、同じ長さである必要があります。 |
|
cluster_mode |
クラスタリングモデルを指定します。Log Service は次の 2 つのモデルを提供します。 |
|
params |
選択したクラスタリングモデルのパラメーターを指定します。 |
クラスタリングモデル
kmeans
{
"n_clusters": "5",
"max_iter": "100",
"tol": "0.0001",
"init_mode": "kmeans++",
"metric": "cosine/euclidean"
}
以下では、k-means アルゴリズムのパラメーターについて説明し、最適化案を提案します。
n_clusters(クラスター数):現在の値は 5 です。エルボー法を使用して、適切なクラスター数を選択できます。そのために、誤差平方和 (SSE) の傾向を観察し、実際の結果に基づいて値を 3、7、または別の値に調整します。-
max_iter(最大反復回数):現在の値は 100 です。大規模なデータセットの場合、収束を確実にするためにこの値を増やす必要がある場合があります。結果が早期に安定する場合は、この値を減らしてコンピューティングリソースを節約できます。値は通常 100 から 300 の範囲です。 -
tol(収束許容度):このパラメーターは、クラスター中心の変化のしきい値を定義することによって、アルゴリズムの収束条件を制御します。高精度が求められる場合は、値を 0.00001 に減らします。大規模なデータセットの場合は、効率を向上させるために 0.001 に増やします。計算効率と精度のバランスを取ってください。 -
init_mode(初期化モード):現在の値はkmeans++です。これは通常、良好な初期クラスター中心を提供します。必要に応じてrandom初期化を試すことができますが、より多くの反復が必要になる場合があります。初期クラスター中心が結果に大きな影響を与える場合は、さまざまな初期化戦略を検討してください。 -
metric(cosine/euclidean):-
cosine(コサイン類似度):ベクトル間の角度のコサインを計算して、方向の類似度を測定します。このメトリックは、テキストの埋め込みや画像特徴ベクトルなどの高次元データや、レコメンデーションシステムなどの類似性マッチングタスクに適しています。データが単位ベクトルに正規化されると、コサイン類似度は内積と等しくなります。 -
euclidean(ユークリッド距離):2 点間の直線距離を計算することで、点間の絶対的な差を測定します。このメトリックは、座標点などの低次元空間における幾何学的問題や、k-means クラスタリングや k-近傍法の分類や回帰などの距離に依存するタスクに適しています。また、データの値の絶対差を保持する必要があるシナリオにも適しています。
-
dbscan
{
"epsilon": "0.1", // 注:イプシロンの値が 0 以下の場合、アルゴリズムはこのパラメーターを自動的に推測します。
"min_samples": "5"
}
DBSCAN (Density-Based Spatial Clustering of Applications with Noise) アルゴリズムは、epsilon (ε) と min_samples の 2 つの主要なパラメーターを使用して、クラスターの密度基準を定義します。
-
epsilon (
ε):点の近傍範囲を定義して、点が隣接しているかどうかを判断します。εの値が小さいとノイズポイントが多くなり、大きいと無関係な点がマージされる可能性があります。k-距離グラフのエルボー点を観察して、適切なεの値を選択してください。 -
min_samples:密なクラスターを形成するために必要な点の最小数を定義します。値が高いほどアルゴリズムが厳密になり、クラスターの数が減り、ノイズポイントの数が増えます。値が低いと、密度の低い領域が含まれる場合があります。データの次元に基づいてこの値を選択してください。たとえば、2 次元データの場合は、値を 4 または 5 に設定できます。
これら 2 つのパラメーターを組み合わせることで、クラスターの形成方法とノイズポイントの特定方法が決まります。DBSCAN の利点は、事前に定義されたクラスター数を必要とせずに、任意の形状のクラスターを特定できることです。ただし、そのパフォーマンスはパラメーターの選択に大きく左右されます。実験とデータ特性に基づいてパラメーターを調整し、最適なクラスタリング結果を実現してください。
戻り値
row(
n_clusters bigint,
cluster_sizes array(bigint),
assignments array(bigint),
error_msg varchar
)
|
列名 |
型 |
説明 |
|
n_clusters |
bigint |
結果のクラスター数。 |
|
cluster_sizes |
array(bigint) |
各クラスターのサンプル数。 |
|
assignments |
array(bigint) |
各入力サンプルに割り当てられたクラスターの ID。 |
|
error_msg |
varchar |
呼び出しが失敗した場合に返されるエラーメッセージ。 |
例
-
SPL ステートメント
* and __tag__:__job__: sql-calculate-metric | extend time = cast(time as bigint) - cast(time as bigint) % 300 | extend time = second_to_nano(time) | stats avg_latency = avg(cast(sum_latency as double)) by time, Method | make-series avg_latency = avg_latency default = '0' on time from 'sls_begin_time' to 'sls_end_time' step '5m' by Method | stats method_array = array_agg(Method), ts_array = array_agg(__ts__), ds_array = array_agg(avg_latency) | extend ret = cluster(ds_array, 'kmeans', '{"n_clusters":"5"}') | extend n_clusters = ret.n_clusters, cluster_sizes = ret.cluster_sizes, assignments = ret.assignments, error_msg = ret.error_msg -
出力
クラスタリングモデルからの出力テーブルには、method_array (API メソッド名の配列)、ts_array (タイムスタンプの配列)、ds_array (特徴データの配列)、ret (クラスタリング結果を含む構造体)、n_clusters (この場合は
5のクラスター数)、cluster_sizes (この場合は[2, 1, 4, 1, 75]の各クラスターのサイズ)、assignments (各データエントリのクラスター割り当てラベルの配列)、および error_msg (エラー情報) のフィールドが含まれます。
series_describe 関数
この関数は、時系列を複数のディメンションで分析し、データの連続性、欠損値、安定性、周期性、トレンドなどの主要な特性を返します。
制限事項
この関数には、make-series 演算子によるシリーズ形式のデータが必要です。タイムスタンプはナノ秒である必要があります。
構文
series_describe(__ts__ array<bigint>, __ds__ array<double>)
または
series_describe(__ts__ array<bigint>, __ds__ array<double>,config varchar)
パラメーター
|
パラメーター |
説明 |
|
__ts__ |
ナノ秒単位で単調増加する UNIX タイムスタンプの配列。 |
|
__ds__ |
各タイムスタンプに対応する値を持つ浮動小数点数の配列。この配列は、 |
|
config |
オプション。アルゴリズムパラメーターを指定します。次のパラメーターをカスタマイズできます:
例: |
戻り値
row(statistic varchar, error_msg varchar)
|
列名 |
型 |
説明 |
|
statistic |
varchar |
時系列の統計情報を含む JSON 文字列。 |
|
error_msg |
varchar |
呼び出しが失敗した場合にエラーメッセージを返します。 |
統計の詳細
結果は JSON 形式の文字列です。
{
"duplicate_count": 0,
"total_count": 1,
"mean": 3.0,
"variance": null,
"min": 3.0,
"max": 3.0,
"median": 3.0,
"interval": null,
"missing_count": 0,
"adf_test": null,
"is_stable": false,
"period": null,
"trend": null
}
|
パラメーター |
説明 |
|
duplicate_count |
重複値の数。 |
|
total_count |
データポイントの総数。 |
|
mean |
系列の平均値。 |
|
variance |
系列の分散です。計算されていない、または適用できない場合は |
|
min |
系列の最小値。 |
|
max |
系列の最大値。 |
|
median |
系列の中央値。 |
|
interval |
時間間隔です。計算されていないか、適用できない場合は |
|
missing_count |
欠損値の数。 |
|
adf_test |
ADF 検定の結果。検定が行われない場合、または該当しない場合は |
|
is_stable |
系列が安定しているかどうかを示すブール値。 |
|
period |
検出された期間を示します。期間が検出されない場合、または該当しない場合は、 |
|
trend |
検出された傾向。傾向が検出されない、または該当しない場合は |
例
-
SPL 文
* and entity.file_name: "239_UCR_Anomaly_taichidbS0715Master.test.csv" | extend time = cast(__time__ as bigint) | extend time = time - time % 60 | stats value = avg(cast(value as double)) by time | extend time = second_to_nano(time) | make-series value = value default = 'nan' on time from 'min' to 'max' step '1m' | extend ret = series_describe(time, value) -
出力
クエリの出力には、系列データを含む列 value と time、および新しいコンテナー列 ret が含まれます。ret 列には、statistic と error_msg の 2 つのフィールドが含まれます。ret 列内の
statisticフィールドには、分析結果の JSON オブジェクトが含まれています。主なフィールドには、duplicate_count(0)、total_count(1440)、mean(-1046.9)、variance(2222880.54)、min(-2047.0)、max(-1592.0)、median(-1591.0)、interval(60000000000.0)、missing_count(0)、adf_test(-1.739)、is_stable(false)、およびtrend(-1.445) が含まれます。error_msg フィールドは、成功するとnullになります。
相関関数
2 つのオブジェクト間の類似度を計算します。この関数の動作は入力によって異なります: 1. 2 つの単一ベクトルの場合、その類似度を返します。 2. ベクトルのグループと単一ベクトルの場合、グループ内の各ベクトルと単一ベクトルの間の類似度を返します。 3. 2 つのベクトルのグループの場合、それらのベクトル間のペアごとの類似度の行列を返します。
制限事項
入力は make-series によって生成された時系列である必要があります。
構文
-
オーバーロード 1
correlation(arr_1 array(double), arr_2 array(double), params varchar) -
オーバーロード 2
correlation(arr_arr_1 array(array(double)), arr_2 array(double), params varchar) -
オーバーロード 3
correlation(arr_arr_1 array(array(double)), arr_arr_2 array(array(double)), params varchar)
パラメーター
-
オーバーロード 1
パラメーター
説明
arr_1
make-series によって生成された時系列。
arr_2
make-series によって生成された時系列。
params
オプション。JSON 形式のアルゴリズムパラメーター。
-
オーバーロード 2
パラメーター
説明
arr_arr_1
make-series によって生成された時系列に array_agg 関数を適用して得られる二次元配列。
arr_2
make-series によって生成された時系列。
params
オプション。JSON 形式のアルゴリズムパラメーター。
-
オーバーロード 3
パラメーター
説明
arr_arr_1
make-series によって生成された時系列に array_agg 関数を適用して得られる二次元配列。
arr_arr_2
make-series によって生成された時系列に array_agg 関数を適用して得られる二次元配列。
params
オプション。JSON 形式のアルゴリズムパラメーター。
アルゴリズムパラメーター
|
パラメーター |
説明 |
型 |
必須 |
|
measurement |
相関係数を計算するために使用されるメソッド。ほとんどの場合、「Pearson」 を使用できます。 有効な値:
|
varchar |
はい |
|
max_shift |
最初の変数 (最初のパラメーターからのベクトル) を左にシフトできる最大の時点数。負の値は右へのシフトを示します。出力は、許可されているすべてのシフトで見つかった最大の相関係数です。 |
integer |
いいえ。デフォルト値は 0 で、シフトが無効であることを意味します。 |
|
flag_shift_both_direction |
有効な値:
|
ブール値 |
いいえ。デフォルト値は "false" です。 |
戻り値
-
オーバーロード 1
row(result double)列名
型
説明
result
double
arr_1とarr_2の間の相関係数。 -
オーバーロード 2
row(result array(double))列名
型
説明
result
array(double)
arr_arr_1の各ベクトルとベクトルarr_2の間の相関係数の配列。配列の長さは、arr_arr_1のベクトル数と等しくなります。 -
オーバーロード 3
row(result array(array(double)))列名
型
説明
result
array(array(double))
[i][j]の要素がarr_arr_1[i]とarr_arr_2[j]の間の相関係数である行列。
例
例 1
-
SPL 文
* | where Method != 'GetProjectQuery' | extend ts = second_to_nano(__time__ - __time__ % 60) | stats latency_avg = max(cast(avg_latency as double)), inflow_avg = min(cast (sum_inflow as double)) by ts, Method | make-series latency_avg default = 'next', inflow_avg default = 'next' on ts from 'sls_begin_time' to 'sls_end_time' step '1m' by Method | extend correlation_scores = correlation( latency_avg, inflow_avg ) -
出力
出力には、各
Methodごとに計算された相関係数を含むcorrelation_scores列が含まれます。
例 2
-
SPL 文
* | where Method='GetProjectQuery' | extend ts = second_to_nano(__time__ - __time__ % 60) | stats latency_avg = max(cast(avg_latency as double)), inflow_avg = min(cast (sum_inflow as double)) by ts, Method | make-series latency_avg default = 'last', inflow_avg default = 'last' on ts from 'min' to 'max' step '1m' by Method | extend scores = correlation( latency_avg, inflow_avg, '{"measurement": "SpearmanRank", "max_shift": 4}' ) -
出力
出力には、
SpearmanRankメソッドを使用して計算された相関係数を含むscores列が含まれます。
例 3
-
SPL 文
* | where Method='GetProjectQuery' | extend ts = second_to_nano(__time__ - __time__ % 60) | stats latency_avg = max(cast(avg_latency as double)), inflow_avg = min(cast (sum_inflow as double)) by ts, Method | make-series latency_avg default = 'last', inflow_avg default = 'last' on ts from 'min' to 'max' step '1m' by Method | extend scores = correlation( latency_avg, inflow_avg, '{"measurement": "KendallTau", "max_shift": 5, "flag_shift_both_direction": true}') -
出力
出力には、指定されたパラメーターを使用して
KendallTauメソッドで計算された相関係数を含むscores列が含まれます。