lokin
08/19/2025, 2:02 AMkapa.ai
08/19/2025, 2:02 AMkapa.ai
08/19/2025, 2:03 AMtest_sample_row_count 参数调整),以及测试的详细信息。例如,`result_rows` 字段会保存失败样本的原始数据(JSON 格式),`failed_row_count` 字段保存失败的行数总数【elementary_test_results 相关说明】[Slack Q&A about test failures](https://slack.com/archives/C02CTC89LAX/p1709061533176029)。 2. test_result_rows 这张表会将每个失败样本单独存为一行,便于查询和分析。你可以通过 elementary_test_results_id 字段将其与 elementary_test_results 关联起来。注意,这里同样只保存样本数据,默认5行,可以通过参数调整【test_result_rows 相关说明】[Slack Q&A about storing all failures](https://slack.com/archives/C02CTC89LAX/p1678288875135819)。 3. data_monitoring_metrics 如果你关注的是异常检测(anomaly detection)相关的数据,这张表会保存每个异常测试的度量值(metrics),但不包含异常分数的计算结果。异常分数和相关信息可以在 Elementary 的报告和其他视图中找到【anomaly 相关说明】[Slack Q&A about anomaly graph info](https://slack.com/archives/C02CTC89LAX/p1692873553144229)。 4. alerts_data_monitoring 这张表会保存所有检测到的异常(anomalies),包括异常的描述和相关信息【anomaly 相关说明】[Slack Q&A about all_columns_anomalies](https://slack.com/archives/C02CTC89LAX/p1655124255428199)。 总结: - 测试失败的样本数据主要在 elementary_test_results 和 test_result_rows 表中。 - 异常检测相关的度量和告警信息在 data_monitoring_metrics 和 alerts_data_monitoring 表中。 如果你需要所有失败的原始数据,Elementary 默认只保存样本(不是全部),可以通过调整 test_sample_row_count 参数来增加样本数量,但并不会保存所有失败行【采样说明】[Elementary data collection FAQ](https://docs.elementary-data.com/cloud/general/security-and-privacy#what-information-does-elementary-collect%3F)。lokin
08/19/2025, 2:08 AMkapa.ai
08/19/2025, 2:08 AMkapa.ai
08/19/2025, 2:08 AMlokin
08/19/2025, 2:13 AMkapa.ai
08/19/2025, 2:14 AMkapa.ai
08/19/2025, 2:14 AMstatus 字段(如 fail),并结合 `result_description`、`test_results_query` 等字段来分析失败原因。例如: sql SELECT test_name, status, result_description, test_results_query FROM <your_schema>.elementary_test_results WHERE status = 'fail' ORDER BY detected_at DESC; 此外,Elementary 的 UI 也提供了测试失败的详细面板,可以直接查看失败原因、测试配置、执行历史和相关的错误信息【UI 侧边栏说明】[A better way to triage test and model failures](https://docs.elementary-data.com/changelog#a-better-way-to-triage-test-and-model-failures)。 如果你需要查看失败样本数据,可以结合 elementary_test_results 和 test_result_rows 表,通过 elementary_test_results_id 进行关联,进一步定位具体的失败行和原因【失败样本说明】[Slack Q&A about test failures](https://slack.com/archives/C02CTC89LAX/p1709061533176029)。 总结: - 失败原因主要在 elementary_test_results 表的描述和查询字段中。 - 也可以通过 UI 侧边栏直接查看详细失败信息。lokin
08/19/2025, 2:19 AMkapa.ai
08/19/2025, 2:19 AMkapa.ai
08/19/2025, 2:19 AMlokin
08/19/2025, 6:22 AMkapa.ai
08/19/2025, 6:22 AMkapa.ai
08/19/2025, 6:22 AMlokin
08/19/2025, 6:32 AMversion: 2
models:
- name: dwd_shopee_order
description: shopee订单明细模型
tests:
- elementary.table_anomalies:
table_anomalies:
- row_count
- column_count
anomaly_sensitivity: 1
config:
severity: warnkapa.ai
08/19/2025, 6:32 AMkapa.ai
08/19/2025, 6:33 AMyaml version: 2 models: - name: dwd_shopee_order description: shopee订单明细模型 tests: - elementary.table_anomalies: table_anomalies: - row_count - column_count anomaly_sensitivity: 1 config: severity: warn 解读: - 针对名为 dwd_shopee_order 的模型(shopee订单明细表),配置了 Elementary 的表级异常检测(anomaly detection)测试。 - `elementary.table_anomalies`:这是 Elementary 的表级异常检测测试,可以监控表的多个指标。 - `table_anomalies`: - `row_count`:监控表的行数变化,检测是否有异常的行数波动。 - `column_count`:监控表的列数变化,检测是否有异常的列数变动。 - `anomaly_sensitivity: 1`:设置异常检测的灵敏度,数值越低,检测越敏感(更容易触发异常告警)。具体灵敏度参数的作用可以参考[anomaly_sensitivity 配置说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-sensitivity)。 - `config.severity: warn`:当检测到异常时,测试结果为“警告”(warn),而不是“错误”(error),不会阻断下游流程。这是通过 dbt 的标准 severity 配置实现的【severity 配置说明】[Slack Q&A about severity](https://slack.com/archives/C02CTC89LAX/p1665067912877829)。 **总结**: 该配置会对 dwd_shopee_order 表的行数和列数进行异常检测,灵敏度较高,发现异常时只发出警告,不会导致 dbt 流程失败。lokin
08/19/2025, 7:10 AMkapa.ai
08/19/2025, 7:10 AMkapa.ai
08/19/2025, 7:10 AManomaly_sensitivity 参数: anomaly_sensitivity 用来控制异常检测的“灵敏度”,它决定了 Elementary 检测数据异常时的阈值范围。 具体来说,这个参数的数值代表“标准差的倍数”(Z-score),也就是数据点距离历史平均值多少个标准差才会被认为是异常。 - **数值越小,检测越敏感**,更容易被判定为异常。 - **数值越大,检测越宽松**,只有非常极端的变化才会被判定为异常。 ### 举例说明 假设你有一张表,每天的订单数(row_count)大致在 1000 左右,历史数据的标准差是 50。 - 如果设置 `anomaly_sensitivity: 3`(默认值),只有当天订单数超过 1000±150(即 3×50)才会被判定为异常。也就是说,订单数低于 850 或高于 1150 才会报警。 - 如果设置 `anomaly_sensitivity: 1`,只要当天订单数超过 1000±50(即 1×50)就会被判定为异常。也就是说,订单数低于 950 或高于 1050 就会报警。 这样,**anomaly_sensitivity 越小,越容易报警;越大,只有极端变化才报警**。 官网原文也有类似解释:“A sensitivity of 3 means that the expected range is within 3 standard deviations from the average of the training set. Smaller sensitivity means this range will be reduced and more values will be potentially flagged as anomalies. Larger values will have the opposite effect and will reduce the number of anomalies as the expected range will be larger.” [anomaly_sensitivity 配置说明](https://docs.elementary-data.com/data-tests/anomaly-detection-configuration/anomaly-sensitivity) 希望这个例子能帮助你理解!lokin
08/19/2025, 7:13 AMkapa.ai
08/19/2025, 7:13 AMkapa.ai
08/19/2025, 7:13 AMlokin
08/19/2025, 7:16 AMkapa.ai
08/19/2025, 7:16 AMkapa.ai
08/19/2025, 7:16 AM