lokin
08/20/2025, 2:38 AMkapa.ai
08/20/2025, 2:38 AMkapa.ai
08/20/2025, 2:38 AMyaml 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) --- ### 配置示例 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)lokin
08/20/2025, 2:45 AMkapa.ai
08/20/2025, 2:46 AMkapa.ai
08/20/2025, 2:46 AMlokin
08/20/2025, 2:55 AMkapa.ai
08/20/2025, 2:55 AMkapa.ai
08/20/2025, 2:55 AMelementary.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) --- #### 配置示例 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)。 如有参数未在此列出,说明知识库中暂无相关信息。lokin
08/20/2025, 3:00 AMkapa.ai
08/20/2025, 3:00 AMkapa.ai
08/20/2025, 3:00 AMelementary.volume_anomalies 是用于**数据量异常检测**(Volume Anomalies Detection),它会监控表的行数随时间的变化,检测是否存在行数的异常波动(如突增或骤减)。官方文档称其为“Volume anomalies”检测。[详细说明见官方文档](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/volume-anomalies)。lokin
08/20/2025, 3:01 AMkapa.ai
08/20/2025, 3:01 AMkapa.ai
08/20/2025, 3:01 AMelementary.freshness_anomalies 是用于**新鲜度异常检测**(Freshness Anomalies Detection)。它会监控表的最新时间戳(如数据更新时间),检测数据是否存在延迟或不按预期频率更新的异常情况。该测试通过分析时间分桶内的更新时间,自动识别数据更新的异常延迟。[详细说明见官方文档](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/freshness-anomalies)。lokin
08/20/2025, 3:24 AMkapa.ai
08/20/2025, 3:24 AMkapa.ai
08/20/2025, 3:25 AMyaml 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 既有表级测试,也有列级测试,并且两者可以结合使用。lokin
08/20/2025, 3:27 AMkapa.ai
08/20/2025, 3:27 AMkapa.ai
08/20/2025, 3:27 AMelementary.column_anomalies 仅支持**列级**(column-level)异常检测。它用于在单个字段(列)上配置和检测数据质量指标的异常,如 null 比例、最小/最大值、长度、方差等。配置时需要在模型的 columns 下为具体列添加该测试,而不是直接在表级别使用。 示例配置如下: 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)。lokin
08/20/2025, 3:30 AMkapa.ai
08/20/2025, 3:30 AMkapa.ai
08/20/2025, 3:31 AMelementary.column_anomalies 支持的全部配置参数及详细说明,均基于官方文档内容整理: --- ### 1. column_anomalies 要监控的指标列表(如 null_count, average, min, max 等)。如果不指定,则使用默认监控项。 示例: yaml column_anomalies: - null_count - average [详细说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/column-anomalies) --- ### 2. dimensions 可选。指定一个或多个维度,对每个维度值分别进行异常检测。 示例: 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) --- #### 配置示例 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) --- 如有参数未在此列出,说明知识库中暂无相关信息。lokin
08/20/2025, 3:35 AMkapa.ai
08/20/2025, 3:35 AMkapa.ai
08/20/2025, 3:35 AMelementary.column_anomalies 这个检测用于对单个字段(列)进行数据质量异常监控。它会根据你配置的监控指标(如 null 比例、最小值、最大值、平均值、长度、方差等),结合历史数据和时间分桶,自动检测该列在最新数据中的异常变化。例如,如果某一列的 null 值比例突然异常升高,或者数值分布出现异常波动,都会被检测出来并触发告警。 该检测可以灵活配置监控哪些指标、分桶方式、敏感度、过滤条件等,适用于需要对关键字段进行细粒度数据质量监控的场景。[官方文档说明](https://docs.elementary-data.com/data-tests/anomaly-detection-tests/column-anomalies)lokin
08/20/2025, 3:40 AMkapa.ai
08/20/2025, 3:40 AMkapa.ai
08/20/2025, 3:40 AMelementary.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 参数中选择上述任意一项或多项进行配置。例如: yaml column_anomalies: - null_count - average - sum 详细内容可参考[官方文档](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/column-anomalies)。lokin
08/20/2025, 3:55 AMkapa.ai
08/20/2025, 3:55 AMkapa.ai
08/20/2025, 3:55 AMelementary.column_anomalies 的 dimensions 配置项用于**将异常检测按指定的一个或多个维度(字段或 SQL 表达式)进行分组**。也就是说,Elementary 会对每个维度组合分别计算并监控你配置的指标(如 null_rate、sum、average 等),从而可以发现某些特定分组下的异常,而不是只看整体。 举例: 如果你有一个收入(revenue)字段,并且你的数据中有 app_name 和 country 两个字段,你可以这样配置: 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) 如果你有更多具体的配置需求,可以参考上述链接中的详细示例。lokin
08/20/2025, 3:58 AMkapa.ai
08/20/2025, 3:59 AMkapa.ai
08/20/2025, 3:59 AMdimensions 配置项**可以是 SQL 表达式**。官方文档明确说明,`dimensions` 支持填写一个或多个字段名,也可以是有效的 select SQL 表达式。这样可以实现更灵活的分组和细粒度的异常检测,例如可以用 case when、cast、函数等表达式作为分组依据。 文档原文示例: 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 表达式。lokin
08/20/2025, 4:00 AMkapa.ai
08/20/2025, 4:00 AMkapa.ai
08/20/2025, 4:00 AMelementary.column_anomalies 的 dimensions 配置项中使用 SQL 表达式的实际例子: 假设你有一个订单表,里面有 order_amount 字段,你想要按照“是否大额订单”这个逻辑分组,监控每组的订单金额异常。你可以这样写: 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 列表中。例如: yaml dimensions: - "substr(user_email, strpos(user_email, '@') + 1)" # 按邮箱域名分组 请注意,具体 SQL 表达式的写法要符合你的数据仓库(如 BigQuery、Snowflake 等)的 SQL 语法。