<@U088WCP3B4P> 過去30日のデータを基準として、最新日の異常検知を行いたいです。対象は...
# ask-elementary-ai
n
@kapa.ai 過去30日のデータを基準として、最新日の異常検知を行いたいです。対象は、モデルのレコード件数および、特定カラムの値です。どのようにテストを記述すればいいですか?
k
A message from kapa.ai
過去30日間をトレーニング期間(基準)として、最新日の異常検知を行いたい場合、Elementaryの異常検知テストで以下のように設定できます。 ### 1. モデルのレコード件数(volume_anomalies)
Copy code
yaml models:   - name: <model名>     tests:       - elementary.volume_anomalies:           timestamp_column: <日付カラム名>           time_bucket:             period: day             count: 1           training_period:             period: day             count: 30           detection_period:             period: day             count: 1
- `timestamp_column`:日付を示すカラム名を指定 - `time_bucket`:1日ごとにバケット化 - `training_period`:過去30日間をトレーニングデータとして使用 - `detection_period`:直近1日(最新日)を異常検知対象にする この設定で、過去30日間のレコード件数を基準に、最新日の件数の異常を検知します [volume_anomalies 設定詳細](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/volume-anomalies#test-configuration) --- ### 2. 特定カラムの値(column_anomalies)
Copy code
yaml models:   - name: <model名>     columns:       - name: <カラム名>         tests:           - elementary.column_anomalies:               timestamp_column: <日付カラム名>               time_bucket:                 period: day                 count: 1               training_period:                 period: day                 count: 30               detection_period:                 period: day                 count: 1
- `column_anomalies`:監視したいカラム名を指定 - 他のパラメータはvolume_anomaliesと同様 この設定で、特定カラムの値に対しても過去30日間を基準に最新日の異常を検知できます [column_anomalies 設定詳細](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/column-anomalies#test-configuration) --- #### 注意点 - `timestamp_column`は必ず日付型で、連続してデータが存在することを確認してください。 - テストは「完了したバケット」に対してのみ実行されるため、当日分は翌日以降に検知対象となります [volume_anomaliesの説明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/volume-anomalies) --- ご参考になれば幸いです。
n
@kapa.ai これらのテストは、View materializationに対しても動作しますか?
k
A message from kapa.ai
はい、Elementaryの異常検知テスト(例:volume_anomaliesやcolumn_anomalies)は、View(view materialization)に対しても動作します。 ただし、Postgres環境で「materialized view」を使った場合、dbtアダプタの制約により、elementary.column_anomaliesテストで「Unable to find column」エラーが発生することが報告されています。これは、Elementaryがカラム情報を取得する際にdbtアダプタの`adapter.get_columns_in_relation`を利用しており、Postgresのmaterialized viewでは空リストが返されるためです。通常のviewやtable materializationではこの問題は発生しません。 詳しくは[こちらのGitHub Issue](https://github.com/elementary-data/elementary/issues/1684)をご参照ください。 まとめると: - 通常のview materializationには対応しています。 - Postgresのmaterialized viewではdbtアダプタの制約により動作しない場合があります(tableやviewなら問題ありません)。 他のデータベースや通常のviewであれば、特に問題なく動作します。