news 2026/2/20 12:20:38

使用 Elementary 的开源数据可观察性 - 从零到英雄(第一部分)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Elementary 的开源数据可观察性 - 从零到英雄(第一部分)

原文:towardsdatascience.com/open-source-data-observability-with-elementary-from-zero-to-hero-part-1-23d5e98b68db

数据可观察性和其重要性经常被讨论和撰写,作为现代数据和分析工程的关键方面。市场上有很多具有各种功能和价格的工具。在这两篇文章中,我们将重点关注 Elementary 的开源版本,这是这些数据可观察性平台之一,专为 dbt 设计,旨在无缝工作。我们将从零开始设置,并旨在通过第二部分的结尾了解它在不同数据场景中的工作方式和可能性。在我们开始之前,我也想透露,我与 Elementary 没有任何关联,所有表达的观点都是我个人的。

在第一部分中,我们将设置 Elementary 并检查如何读取 Elementary 的每日报告。如果你已经熟悉这一部分并且对检查不同类型的数据测试以及哪种最适合哪种场景感兴趣,你可以直接跳转到第二部分:

  • 使用 Elementary 的开源数据可观察性 - 从零到英雄(第二部分)

我已经使用 Elementary 一段时间了,作为数据工程师,我的体验是积极的,关于我的团队如何理解结果。我们的团队使用 Elementary 进行自动化每日监控,并使用自托管的 elementary 仪表板。Elementary 还有一个非常方便的付费云平台,但对我们来说,开源版本已经足够了。如果你想探索两者之间的差异以及开源版本中缺少哪些功能,elementary 在这里比较了这两个产品。让我们先从设置开源版本开始。

  • 如何安装 Elementary

安装 Elementary 和安装任何其他 dbt 项目中的包一样简单。只需将以下内容添加到你的packages.yml文件中。如果你还没有,你可以在与dbt_project.yml文件同一级别的位置创建一个packages.yml文件。一个包本质上是一个 dbt 项目,它包含额外的 SQL 和 Jinja 代码,这些代码可以集成到你的 dbt 项目中。

packages:-package:elementary-data/elementary version:0.15.2## you can also have different minor versions as:## version: [">=0.14.0", "<0.15.0"]## Docs: https://docs.elementary-data.com

我们希望 Elementary 有自己的模式来编写输出。在dbt_project.yml文件中,我们在 models 下定义了 Elementary 的模式名称。如果你使用 dbt Core,默认情况下,所有 dbt 模型都是在你的配置文件的目标指定的模式中构建的。根据你如何定义你的自定义模式,模式将被命名为elementary<target_schema>_elementary。

models:## see docs: https://docs.elementary-data.com/elementary:## elementary models will be created in the schema 'your_schema_elementary'+schema:"elementary"## If you dont want to run Elementary in your Dev Environment Uncomment following:# enabled: "{{ target.name in ['prod','analytics'] }}"

从 dbt 1.8 版本开始,dbt 废弃了安装包覆盖内置物化的能力,除非用户明确选择启用。(查看详情) 由于这个变化,一些基本功能会崩溃,因此需要在 dbt_project.yml 文件中与模型同一级别的标志部分添加一个标志。

flags:require_explicit_package_overrides_for_builtin_materializations:True

最后,为了让 Elementary 正确运行,它需要连接到与你的 dbt 项目使用相同的数据仓库。如果你有多个开发环境,Elementary 确保 dbt 连接到这些仓库的方式与 Elementary 连接的方式保持一致。这就是为什么 Elementary 需要在你的profiles.yml文件中指定配置。

elementary:outputs:dev:type:bigquery method:oauth project:dev dataset:elementary location:EU priority:interactive retries:0threads:4pp:type:bigquery method:oauth# / service-account# keyfile : [full path to your keyfile]project:prod# project_iddataset:elementary# elementary dataset, usually [dataset name]_elementarylocation:EU# [dataset location]priority:interactive retries:0threads:4

以下代码在 dbt 项目中运行后也会为你生成配置文件:

dbt run-operation elementary.generate_elementary_cli_profile

最后,通过运行以下命令安装 Elementary CLI:

pip install elementary-data# you should also run following for your platform too, Postgres does not requiere this steppip install'elementary-data[bigquery]'
  • elementary 的工作原理是什么?

现在你可能已经在你的 dbt 项目中成功运行了 Elementary,了解 Elementary 的工作方式也是有用的。基本上,Elementary 通过利用 dbt 运行期间生成的 dbt 艺术品来运行。这些艺术品,如manifest.jsonrun_results.json和其他日志,用于收集详细的模型元数据,跟踪模型执行,并评估测试结果。Elementary 将这些数据集中起来,以提供对管道性能的全面视图。然后,它根据分析生成报告,并可以生成警报。

  • 如何使用 elementary

以最简单的方式来说,如果你想创建一个通用的 Elementary 报告,以下代码将生成一个 HTML 文件格式的报告:

edr report

在你的 CLI 中,这将通过使用我们在之前步骤中提供的连接配置文件来访问你的数据仓库。如果 elementary 配置文件没有定义默认的目标名称,它将抛出错误,为了避免错误,你还可以在终端运行时提供--profile-target <target_name>作为变量。

一旦 Elementary 运行完成,它将自动以 HTML 文件的形式打开 elementary 报告。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6d45aca13a2a5ca9584b1239c31af97b.png

Elementary 报告仪表板

在仪表板的左侧栏中,你可以看到不同的页面,仪表板页面提供了 dbt 项目的性能和状态的全面概述。目录和测试配置页面仅在 Elementary Cloud 中可用,但这些配置也可以在 OSS 版本中手动实现,在第二部分中会详细解释。

  • 如何阅读这份报告?

在这个示例报告中,我故意提前创建了警告和错误,以便撰写这篇文章。总共运行了 67 个测试,其中 3 个失败,5 个给出警告。我监控了 24 个表,所有配置和检查的测试都是 dbt 测试,如果配置了 Elementary 的新鲜度或体积测试,它们将显示在第一视觉的第二行。

如您在模型运行可视化中看到的,我已成功运行了 158 个模型,没有任何错误或跳过。在之前的几天里,模型运行时错误数量不断增加。我可以轻松地看到 9/7 开始出现的错误,并据此进行故障排除。

您可以将此仪表板托管在您的生产环境中,并将其发送到您的通信/警报渠道。下面是一个来自 Argo 工作流的示例,但您也可以在此处查看适合您设置/您希望在您的生产中托管它的不同方法。

-name:generate-elementary-report container:image:"{{inputs.parameters.elementary_image}}"##pre-defined elemantary image in configmap.yamlcommand:["edr"]##run command for elemantary reportargs:["report","--profile-target={{inputs.parameters.target}}"]workingDir:workdir##working directoryinputs:parameters:-name:target-name:elementary_image-name:bucket artifacts:-name:source path:workdir##working directoryoutputs:artifacts:-name:state path:/workdir/edr_target gcs:bucket:"{{inputs.parameters.bucket}}"##here is the bucket that you would like to host your dashboard outputkey:path_to_key archive:none:{}

通过在我们的 Argo 工作流中使用上述模板,我们将创建 Elementary HTML 报告并将其保存在定义的存储桶中。我们可以在以后从您的存储桶中取出这份报告,并将其与您的警报一起发送。

现在我们已经了解了我们如何设置我们的报告,并且希望我们也了解了 Elementary 的基础知识,接下来,我们将检查不同类型的测试以及哪种测试最适合哪种场景。只需跳转到第二部分。

如果这已经足够满足您的需求,非常感谢您阅读!

本文参考文献

  • Elementary Data 文档. (n.d.).Elementary Data 文档. 2024 年 9 月 5 日检索,来自docs.elementary-data.com

  • dbt Labs. (n.d.).dbt 文档. 2024 年 9 月 5 日检索,来自docs.getdbt.com

  • Elementary Data. (n.d.).GitHub 仓库. 2024 年 9 月 5 日检索,来自github.com/elementary-data

  • dbt Labs. (2024).升级到 dbt v1.8. 2024 年 9 月 5 日检索,来自docs.getdbt.com/docs/dbt-versions/core-upgrade/upgrading-to-v1.8#deprecated-functionality

  • Elementary Data. (n.d.).Elementary 在生产中的使用. 2024 年 9 月 5 日检索,来自docs.elementary-data.com/oss/deployment-and-configuration/elementary-in-production#ways-to-run-elementary-in-production

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/13 13:14:58

Pi0 VLA模型深度体验:机器人动作预测效果实测

Pi0 VLA模型深度体验&#xff1a;机器人动作预测效果实测 《具身智能实践手记》栏目介绍&#xff1a; 在机器人与AI融合的前沿领域&#xff0c;本栏目持续记录真实场景下的技术落地过程——从机械臂抓取、移动底盘导航、多模态交互到端到端动作生成。内容覆盖视觉-语言-动作&am…

作者头像 李华
网站建设 2026/2/14 0:24:49

简单三步:Qwen3-TTS-12Hz-1.7B-CustomVoice语音合成模型部署

简单三步&#xff1a;Qwen3-TTS-12Hz-1.7B-CustomVoice语音合成模型部署 你是否试过把一段文字变成声音&#xff0c;却卡在环境配置、依赖冲突、GPU显存不足这些环节上&#xff1f;是否想快速验证一个语音合成模型的效果&#xff0c;却要花半天时间读文档、改代码、调参数&…

作者头像 李华
网站建设 2026/2/15 9:38:07

手把手教你用vllm部署GLM-4-9B-Chat-1M翻译大模型

手把手教你用vllm部署GLM-4-9B-Chat-1M翻译大模型 1. 引言 如果你正在寻找一个既能处理超长文本&#xff0c;又具备强大翻译能力的大语言模型&#xff0c;那么GLM-4-9B-Chat-1M绝对值得关注。这个模型最吸引人的地方在于它支持1M上下文长度——这意味着它能一次性处理大约200…

作者头像 李华
网站建设 2026/2/15 6:31:11

XCOM 2模组管理一站式解决方案:从踩坑到精通的AML保姆级教程

XCOM 2模组管理一站式解决方案&#xff1a;从踩坑到精通的AML保姆级教程 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mir…

作者头像 李华
网站建设 2026/2/15 11:24:20

开源工具重构电机控制:VESC Tool如何让零基础调试成为现实

开源工具重构电机控制&#xff1a;VESC Tool如何让零基础调试成为现实 【免费下载链接】vesc_tool The source code for VESC Tool. See vesc-project.com 项目地址: https://gitcode.com/gh_mirrors/ve/vesc_tool 在电动交通与机器人技术飞速发展的今天&#xff0c;电机…

作者头像 李华
网站建设 2026/2/19 8:44:14

DeOldify新手必看:Web界面操作指南与效果展示

DeOldify新手必看&#xff1a;Web界面操作指南与效果展示 你是不是也有这样的经历&#xff1f;翻看家里的老相册&#xff0c;看到那些泛黄的黑白照片&#xff0c;心里总想着&#xff1a;要是这些照片是彩色的该多好。那些爷爷奶奶年轻时的模样&#xff0c;那些爸爸妈妈结婚的场…

作者头像 李华