<@U088WCP3B4P> 帮我列一下新鲜度检测的所有配置参数,详细点
# ask-elementary-ai
l
@kapa.ai 帮我列一下新鲜度检测的所有配置参数,详细点
k
A message from kapa.ai
以下是 Elementary 新鲜度检测(freshness_anomalies)可用的所有配置参数,包含详细说明: --- ### 必填参数 - timestamp_column 需要指定用于检测新鲜度的时间戳字段。 示例:
Copy code
yaml   tests:     - elementary.freshness_anomalies:         timestamp_column: <timestamp column>
[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/timestamp-column) --- ### 可选参数 - where_expression 用于过滤数据的 SQL 表达式,仅对满足条件的数据进行新鲜度检测。 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/where-expression) - anomaly_sensitivity 敏感度,整数值。数值越低,检测越敏感,更容易触发异常告警。 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-sensitivity) - anomaly_direction 检测异常的方向,可选值:`spike`(默认,仅检测延迟)、`drop`、`both`。 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-direction) - ignore_small_changes 忽略小幅度变化的相关参数,包括: - spike_failure_percent_threshold - drop_failure_percent_threshold [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/ignore_small_changes) - anomaly_exclude_metrics SQL 表达式,排除特定指标不参与异常检测。 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-exclude-metrics) - training_period 训练期,指定用于模型学习的历史时间段。 - period: hour | day | week | month - count: 整数,表示周期数 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/training-period) - detection_period 检测期,指定实际检测异常的时间段。 - period: hour | day | week | month - count: 整数,表示周期数 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/detection-period) - time_bucket 时间分桶方式,决定每个检测周期的粒度。 - period: hour | day | week | month - count: 整数,表示周期数 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/time-bucket) - detection_delay 检测延迟,指定检测时延迟多长时间。 - period: hour | day | week | month - count: 整数,表示周期数 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/detection-delay) - seasonality 季节性参数,目前支持 `day_of_week`,用于处理如工作日/周末等周期性变化。 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/seasonality) --- ### 配置示例
Copy code
yaml models:   - name: your_model     tests:       - elementary.freshness_anomalies:           timestamp_column: updated_at           where_expression: "status = 'active'"           anomaly_sensitivity: 2           anomaly_direction: spike           training_period:             period: day             count: 14           detection_period:             period: day             count: 2           time_bucket:             period: day             count: 1           detection_delay:             period: hour             count: 1           seasonality: day_of_week           ignore_small_changes:             spike_failure_percent_threshold: 10             drop_failure_percent_threshold: 10           anomaly_exclude_metrics: "metric_name = 'some_metric'"
--- 如需进一步了解每个参数的详细用法,可参考 [官方文档](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/freshness-anomalies) 和相关配置说明链接。 上述参数均来自官方文档和配置示例,确保准确无误。[详细参数列表参考](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/freshness-anomalies)
l
@kapa.ai elementary除了这个,还有什么异常检测呢?都给我列举一下吧
k
A message from kapa.ai
除了新鲜度(freshness)异常检测,Elementary 还支持多种异常检测类型,具体包括: 1. Volume Anomalies(数据量异常) 检测表的行数随时间的变化,发现行数的异常波动(如突增或骤减)。 相关测试:`elementary.volume_anomalies` [官方说明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/volume-anomalies) 2. Event Freshness Anomalies(事件新鲜度异常) 检测事件发生时间与数据入库时间之间的延迟,适用于流式或持续更新的数据。 相关测试:`elementary.event_freshness_anomalies` [官方说明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/event-freshness-anomalies) 3. Dimension Anomalies(维度异常) 按指定维度(如 event_name、country 等)分组,检测各分组的行数随时间的异常变化,适合低基数字段。 相关测试:`elementary.dimension_anomalies` [官方说明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/dimension-anomalies) 4. Column Anomalies(单列异常) 针对单个字段,检测如 null 比例、最小/最大值、长度、方差等指标的异常变化。 相关测试:`elementary.column_anomalies` [官方说明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/column-anomalies) 5. All Columns Anomalies(全表字段异常) 对表中所有字段批量执行 column_anomalies 检测,自动根据字段类型选择合适的监控指标。 相关测试:`elementary.all_columns_anomalies` [官方说明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/all-columns-anomalies) 6. Automated Monitors(自动化监控) Elementary Cloud 提供的自动化新鲜度和数据量监控,无需配置,基于元数据自动检测表的更新延迟和行数异常。 [官方说明](https://docs.elementary-data.com/features/anomaly-detection/automated-monitors) --- 每种异常检测都可以通过 dbt 测试进行配置和运行,具体用法和参数详见官方文档。 如需进一步了解每种检测的详细原理和配置方式,可参考上述链接或 Elementary 官方文档中的 [异常检测测试介绍](https://docs.elementary-data.com/data-tests/introduction)。
l
@kapa.ai 列一下elementary.volume_anomalies的所有参数给我,详细解释
k
A message from kapa.ai
以下是
elementary.volume_anomalies
支持的所有参数及详细解释,均基于官方文档内容整理: --- ### 1.
timestamp_column
用于分桶的时间戳字段。建议配置,否则只会统计全表行数,无法按时间分析。[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/timestamp-column) --- ### 2.
where_expression
SQL 过滤表达式,仅对满足条件的数据进行检测。[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/where-expression) --- ### 3.
anomaly_sensitivity
异常检测的敏感度,数值越小越敏感(更容易报警),数值越大越宽松。默认值为 3,表示3个标准差。[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-sensitivity) --- ### 4.
anomaly_direction
异常检测方向,可选值有: - `both`(默认):检测突增和骤减 - `spike`:只检测突增 - `drop`:只检测骤减 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-direction) --- ### 5.
detection_period
检测期,指定实际检测异常的时间段。 - `period`: hour | day | week | month - `count`: 整数,表示周期数 默认是最近2天。[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/detection-period) --- ### 6.
training_period
训练期,指定用于模型学习的历史时间段。 - `period`: hour | day | week | month - `count`: 整数,表示周期数 默认是14天。[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/training-period) --- ### 7.
time_bucket
时间分桶方式,决定每个检测周期的粒度。 - `period`: hour | day | week | month - `count`: 整数,表示周期数 默认是每天。[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/time-bucket) --- ### 8.
seasonality
季节性参数,目前支持 `day_of_week`,用于处理如工作日/周末等周期性变化。[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/seasonality) --- ### 9.
fail_on_zero
当行数为0时是否直接失败。可选值:`true` 或 `false`。[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/fail_on_zero) --- ### 10.
ignore_small_changes
忽略小幅度变化的相关参数,包括: -
spike_failure_percent_threshold
-
drop_failure_percent_threshold
[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/ignore_small_changes) --- ### 11.
detection_delay
检测延迟,指定检测时延迟多长时间。 - `period`: hour | day | week | month - `count`: 整数,表示周期数 [参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/detection-delay) --- ### 12.
anomaly_exclude_metrics
SQL 表达式,排除特定指标不参与异常检测(如排除某些时间段或数值)。[参数说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-exclude-metrics) --- #### 配置示例
Copy code
yaml models:   - name: your_model     tests:       - elementary.volume_anomalies:           timestamp_column: created_at           where_expression: "status = 'active'"           anomaly_sensitivity: 2           anomaly_direction: both           training_period:             period: day             count: 14           detection_period:             period: day             count: 2           time_bucket:             period: day             count: 1           seasonality: day_of_week           fail_on_zero: true           ignore_small_changes:             spike_failure_percent_threshold: 10             drop_failure_percent_threshold: 10           detection_delay:             period: hour             count: 1           anomaly_exclude_metrics: "metric_value < 10"
--- 所有参数均可灵活组合使用,详细说明可参考 [官方文档](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/volume-anomalies#test-configuration)。 如有参数未在此列出,说明知识库中暂无相关信息。
l
@kapa.ai elementary.volume_anomalies是叫什么检测?
k
A message from kapa.ai
elementary.volume_anomalies
是用于**数据量异常检测**(Volume Anomalies Detection),它会监控表的行数随时间的变化,检测是否存在行数的异常波动(如突增或骤减)。官方文档称其为“Volume anomalies”检测。[详细说明见官方文档](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/volume-anomalies)。
l
@kapa.ai那elementary.freshness_anomalies呢
k
A message from kapa.ai
elementary.freshness_anomalies
是用于**新鲜度异常检测**(Freshness Anomalies Detection)。它会监控表的最新时间戳(如数据更新时间),检测数据是否存在延迟或不按预期频率更新的异常情况。该测试通过分析时间分桶内的更新时间,自动识别数据更新的异常延迟。[详细说明见官方文档](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/freshness-anomalies)。
l
@kapa.ai elementary的都是表级测试吗?有列级吗?
k
A message from kapa.ai
Elementary 既支持表级(table-level)测试,也支持列级(column-level)测试。 - **表级测试**:如 `elementary.volume_anomalies`、`elementary.freshness_anomalies`、`elementary.dimension_anomalies`、`elementary.all_columns_anomalies` 等,这些测试通常作用于整个表或按表的某些维度分组进行检测。 - **列级测试**:如 `elementary.column_anomalies`,可以直接在单个字段上配置,检测该字段的 null 比例、最大/最小值、长度、方差等多种指标的异常变化。例如:
Copy code
yaml   models:     - name: your_model       columns:         - name: your_column           tests:             - elementary.column_anomalies:                 column_anomalies: [null_count, average]
[官方文档示例](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/column-anomalies) 此外,`elementary.all_columns_anomalies` 也是一种批量对所有列进行异常检测的表级测试,但其本质上会对每一列分别执行列级的监控指标检测。[相关说明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/all-columns-anomalies) 因此,Elementary 既有表级测试,也有列级测试,并且两者可以结合使用。
l
@kapa.ai elementary.column_anomalies支持表级和列级?
k
A message from kapa.ai
elementary.column_anomalies
仅支持**列级**(column-level)异常检测。它用于在单个字段(列)上配置和检测数据质量指标的异常,如 null 比例、最小/最大值、长度、方差等。配置时需要在模型的 columns 下为具体列添加该测试,而不是直接在表级别使用。 示例配置如下:
Copy code
yaml models:   - name: your_model     columns:       - name: your_column         tests:           - elementary.column_anomalies:               column_anomalies: [null_count, average]
官方文档和配置示例均表明
elementary.column_anomalies
是针对单列的异常检测,不支持直接作为表级测试使用[官方文档示例](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/column-anomalies)。
l
@kapa.ai elementary.column_anomalies那帮我列下这个配置的全部参数吧,详细说明下
k
A message from kapa.ai
以下是
elementary.column_anomalies
支持的全部配置参数及详细说明,均基于官方文档内容整理: --- ### 1.
column_anomalies
要监控的指标列表(如
null_count
,
average
,
min
,
max
等)。如果不指定,则使用默认监控项。 示例:
Copy code
yaml column_anomalies:   - null_count   - average
[详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/column-anomalies) --- ### 2.
dimensions
可选。指定一个或多个维度,对每个维度值分别进行异常检测。 示例:
Copy code
yaml dimensions:   - app_name   - country
[详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/dimensions) --- ### 3.
timestamp_column
可选。用于分桶的时间戳字段。建议配置,否则只会对全量数据检测,无法按时间分析。 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/timestamp-column) --- ### 4.
where_expression
可选。SQL 过滤表达式,仅对满足条件的数据进行检测。 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/where-expression) --- ### 5.
anomaly_sensitivity
可选。异常检测的敏感度,数值越小越敏感(更容易报警),数值越大越宽松。 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-sensitivity) --- ### 6.
anomaly_direction
可选。异常检测方向,可选值有:`both`(默认,检测突增和骤减)、`spike`(只检测突增)、`drop`(只检测骤减)。 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-direction) --- ### 7.
detection_period
可选。检测期,指定实际检测异常的时间段。 - `period`: hour | day | week | month - `count`: 整数,表示周期数 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/detection-period) --- ### 8.
training_period
可选。训练期,指定用于模型学习的历史时间段。 - `period`: hour | day | week | month - `count`: 整数,表示周期数 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/training-period) --- ### 9.
time_bucket
可选。时间分桶方式,决定每个检测周期的粒度。 - `period`: hour | day | week | month - `count`: 整数,表示周期数 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/time-bucket) --- ### 10.
seasonality
可选。季节性参数,目前支持 `day_of_week`,用于处理如工作日/周末等周期性变化。 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/seasonality) --- ### 11.
detection_delay
可选。检测延迟,指定检测时延迟多长时间。 - `period`: hour | day | week | month - `count`: 整数,表示周期数 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/detection-delay) --- ### 12.
ignore_small_changes
可选。忽略小幅度变化的相关参数,包括: -
spike_failure_percent_threshold
-
drop_failure_percent_threshold
[详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/ignore_small_changes) --- ### 13.
anomaly_exclude_metrics
可选。SQL 表达式,排除特定指标不参与异常检测。 [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-exclude-metrics) --- #### 配置示例
Copy code
yaml models:   - name: your_model     columns:       - name: your_column         tests:           - elementary.column_anomalies:               column_anomalies: [null_count, average]               dimensions: [country]               timestamp_column: created_at               where_expression: "status = 'active'"               anomaly_sensitivity: 2               anomaly_direction: spike               training_period:                 period: day                 count: 14               detection_period:                 period: day                 count: 2               time_bucket:                 period: day                 count: 1               seasonality: day_of_week               detection_delay:                 period: hour                 count: 1               ignore_small_changes:                 spike_failure_percent_threshold: 10                 drop_failure_percent_threshold: 10               anomaly_exclude_metrics: "metric_value < 10"
[官方详细配置说明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/column-anomalies#test-configuration) --- 如有参数未在此列出,说明知识库中暂无相关信息。
l
@kapa.ai 这个检测是干什么的
k
A message from kapa.ai
elementary.column_anomalies
这个检测用于对单个字段(列)进行数据质量异常监控。它会根据你配置的监控指标(如 null 比例、最小值、最大值、平均值、长度、方差等),结合历史数据和时间分桶,自动检测该列在最新数据中的异常变化。例如,如果某一列的 null 值比例突然异常升高,或者数值分布出现异常波动,都会被检测出来并触发告警。 该检测可以灵活配置监控哪些指标、分桶方式、敏感度、过滤条件等,适用于需要对关键字段进行细粒度数据质量监控的场景。[官方文档说明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/column-anomalies)
l
@kapa.ai elementary.column_anomalies的*column_anomalies帮我列一下有什么可以配置的,并且说明作用*
k
A message from kapa.ai
elementary.column_anomalies
的
column_anomalies
参数可以配置以下监控项,每项的作用如下: 默认监控项(根据字段类型自动适用): | 监控项 | 适用字段类型 | 作用说明 | |----------------------|-------------|----------------------------------| |
null_count
| 任意类型 | 检测该列的 null 值数量异常 | |
null_percent
| 任意类型 | 检测该列的 null 值比例异常 | |
min_length
| 字符串 | 检测字符串最小长度的异常 | |
max_length
| 字符串 | 检测字符串最大长度的异常 | |
average_length
| 字符串 | 检测字符串平均长度的异常 | |
missing_count
| 字符串 | 检测缺失(空字符串)数量异常 | |
missing_percent
| 字符串 | 检测缺失(空字符串)比例异常 | |
min
| 数值 | 检测最小值的异常 | |
max
| 数值 | 检测最大值的异常 | |
average
| 数值 | 检测平均值的异常 | |
zero_count
| 数值 | 检测零值数量的异常 | |
zero_percent
| 数值 | 检测零值比例的异常 | |
standard_deviation
| 数值 | 检测标准差的异常 | |
variance
| 数值 | 检测方差的异常 | 可选监控项(需手动配置): | 监控项 | 适用字段类型 | 作用说明 | |--------|-------------|------------------| |
sum
| 数值 | 检测总和的异常 | 你可以在
column_anomalies
参数中选择上述任意一项或多项进行配置。例如:
Copy code
yaml column_anomalies:   - null_count   - average   - sum
详细内容可参考[官方文档](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/column-anomalies)。
l
@kapa.ai elementary.column_anomalies的dimensions配置项是什么意思?你说的好像跟官网好像不太一样
k
A message from kapa.ai
elementary.column_anomalies
的
dimensions
配置项用于**将异常检测按指定的一个或多个维度(字段或 SQL 表达式)进行分组**。也就是说,Elementary 会对每个维度组合分别计算并监控你配置的指标(如 null_rate、sum、average 等),从而可以发现某些特定分组下的异常,而不是只看整体。 举例: 如果你有一个收入(revenue)字段,并且你的数据中有
app_name
和
country
两个字段,你可以这样配置:
Copy code
yaml columns:   - name: in_app_purchase_revenue     tests:       - elementary.column_anomalies:           column_anomalies:             - sum           dimensions:             - app_name             - country
这样,系统会分别对每个
app_name
和
country
的组合,监控
in_app_purchase_revenue
的 sum 是否出现异常。 作用总结: - 让你可以对数据的不同分组(如不同国家、不同产品等)分别做异常检测。 - 适合需要细粒度监控的场景,能发现整体数据下隐藏的局部异常。 官方文档原文说明如下: > 你可以为 column anomaly tests 添加
dimensions
参数。这样会为每个时间分桶和表的维度值分别计算列指标,从而可以在数据的特定分段中检测异常。[官方 changelog 说明](https://docs.elementary-data.com/changelog#column-anomalies-by-dimensions) > > 在配置中,`dimensions` 支持一个或多个字段或 SQL 表达式。[官方配置说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/dimensions) 如果你有更多具体的配置需求,可以参考上述链接中的详细示例。
l
@kapa.ai 这个配置项也可以是sql表达式?
k
A message from kapa.ai
是的,`elementary.column_anomalies` 的
dimensions
配置项**可以是 SQL 表达式**。官方文档明确说明,`dimensions` 支持填写一个或多个字段名,也可以是有效的 select SQL 表达式。这样可以实现更灵活的分组和细粒度的异常检测,例如可以用 case when、cast、函数等表达式作为分组依据。 文档原文示例:
Copy code
yaml models:   - name: model_name     config:       elementary:         timestamp_column: updated_at     tests:       - elementary.dimension_anomalies:           dimensions:             - device_os             - device_browser
> “The test will group the results by a given column / columns / valid select sql expression. Under
dimensions
you can configure the group by expression.” [官方说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/dimensions) 虽然文档示例主要展示在
dimension_anomalies
上,但
column_anomalies
的参数说明与其一致,并且 changelog 也明确支持 column_anomalies 的
dimensions
参数为 SQL 表达式:[changelog 说明](https://docs.elementary-data.com/changelog#column-anomalies-by-dimensions)。 因此,你可以放心地在
dimensions
中使用 SQL 表达式。
l
@kapa.ai 那你给我举个例子啊
k
A message from kapa.ai
当然可以,以下是一个在
elementary.column_anomalies
的
dimensions
配置项中使用 SQL 表达式的实际例子: 假设你有一个订单表,里面有
order_amount
字段,你想要按照“是否大额订单”这个逻辑分组,监控每组的订单金额异常。你可以这样写:
Copy code
yaml columns:   - name: order_amount     tests:       - elementary.column_anomalies:           column_anomalies:             - sum           dimensions:             - "case when order_amount > 1000 then '大额' else '普通' end"
这样,Elementary 会分别对“大额订单”和“普通订单”两组,监控
order_amount
的 sum 是否出现异常。 官方文档明确说明,`dimensions` 支持 SQL 表达式(valid select sql expression),你可以用 case when、cast、函数等表达式作为分组依据[官方说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/dimensions)。 如果你需要更复杂的表达式,也可以直接写在
dimensions
列表中。例如:
Copy code
yaml dimensions:   - "substr(user_email, strpos(user_email, '@') + 1)"  # 按邮箱域名分组
请注意,具体 SQL 表达式的写法要符合你的数据仓库(如 BigQuery、Snowflake 等)的 SQL 语法。