使用 Elementary 实现开源数据可观测性 — 从零到精通(第一部分)

news2024/9/20 0:53:01

欢迎来到雲闪世界。我希望在我还是初学者时能有一份循序渐进的实践指南

数据可观测性及其重要性经常被讨论和撰写为现代数据和分析工程的一个重要方面。市场上有许多工具,具有各种功能和价格。在这篇由两部分组成的文章中,我们将重点介绍 Elementary 的开源版本,它是这些数据可观测性平台之一,专为 dbt 量身定制并旨在与 dbt 无缝协作。我们将从零开始设置,并力求在第 2 部分结束时了解它的工作原理以及在不同数据场景中可能实现的功能。在开始之前,我还想透露一下,我与 Elementary 没有任何关系,所有表达的观点均为我个人观点。 在第 1 部分中,我们将设置 Elementary 并检查如何读取 Elementary 的每日报告。

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

  • 如何安装 Elementary

安装 Elementary 与在 dbt 项目中安装任何其他包一样简单。只需将以下内容添加到您的packages.yml文件中即可。如果您还没有,您可以创建一个packages.yml与您的文件同级的文件dbt_project.yml。包本质上是另一个 dbt 项目,由可合并到您的 dbt 项目中的附加 SQL 和 Jinja 代码组成。

 
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,我们在模型下为 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: 0
      threads: 4
    pp:
      type: bigquery
      method: oauth # / service-account
      # keyfile : [full path to your keyfile]
      project: prod # project_id
      dataset: elementary # elementary dataset, usually [dataset name]_elementary
      location: EU # [dataset location]
      priority: interactive
      retries: 0
      threads: 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 step
pip install 'elementary-data[bigquery]' 

  • 基本工作原理如何?

现在,希望 Elementary 能够处理您的 dbt 项目,了解 Elementary 的运作方式也很有用。本质上,Elementary 通过利用 dbt 运行期间生成的 dbt 工件来运行。这些工件(例如manifest.json、run_results.json和其他日志)用于收集详细的模型元数据、跟踪模型执行和评估测试结果。Elementary 集中这些数据以提供管道性能的全面视图。然后,它会根据分析生成报告并生成警报。

  • 如何使用基本

简单来说,如果您想创建一份通用的基本报告,以下代码将生成一份 HTML 文件形式的报告: edr 报告 在您的 CLI 上,这将使用我们在前面步骤中提供的连接配置文件访问您的数据仓库。如果基本配置文件没有定义默认目标名称,它将抛出一个错误,为了避免错误,您也可以--profile-target <target_name>在终端上运行时将其作为变量提供。 一旦 Elementary 运行完成,它会自动将基本报告以 HTML 文件形式打开。

添加图片注释,不超过 140 字(可选)

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

  • 如何阅读本报告?

在此示例报告中,我特意为本文预先创建了警告和错误。总共运行了 67 个测试,其中 3 个失败,5 个发出警告。我监控了 24 个表,所有配置和检查的测试都是 dbt 测试,如果配置了 Elementary 的新鲜度或容量测试,它们将显示在第一个视觉效果的第二行中。 正如您在模型运行视图中看到的,我已经运行了 158 个模型,没有任何错误或跳过。在过去的几天里,运行模型时出现的错误越来越多。我可以轻松看到从 09/7 开始发生的错误并相应地对其进行故障排除。 您可以在生产中托管此仪表板并将其发送到您的通信/警报渠道。下面是来自 Argo 工作流程的一个示例,但您也可以在此处查看适合您的设置/您想要在生产中托管它的位置的不同方法。

 
 名称: generate-elementary-report
    容器:
      图像: “ {{inputs.parameters.elementary_image}} “  ## configmap.yaml 中预定义的元素图像
      命令: [ “edr” ] ## 运行元素报告的命令
      参数: [ “report”,“--profile-target= {{inputs.parameters.target}} “ ] 
      workingDir: workdir  ## 工作目录
    输入:
      参数:
        - 名称: target 
        - 名称: elementary_image 
        - 名称: bucket
      工件:
        - 名称: 源
          路径: workdir  ## 工作目录
    输出:
      工件:
        - 名称: 状态
          路径: /workdir/edr_target 
          gcs:
            bucket: “ {{inputs.parameters.bucket}} “  ## 这是您想要托管仪表板输出的存储桶
            键: path_to_key
          存档:
            无: {}

通过在 Argo 工作流中使用上述模板,我们将创建 Elementary HTML 报告并将其保存在定义的存储桶中。我们稍后可以从您的存储桶中获取此报告并将其与您的警报一起发送。 现在我们知道了如何设置报告,并且希望了解 Elementary 的基础知识,接下来,我们将检查不同类型的测试,以及哪种测试最适合哪种场景。

感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2125403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(k8s)kubernetes 挂载 minio csi 的方式

一、安装Minio&#xff08;Minio分布式集群搭建部署_minio集群最少几台-CSDN博客&#xff09; 生成accessKeyID和secretAccessKey&#xff1a; 二、安装csi-s3插件(在k8s集群上) 首先我们把插件的yaml文件都下载下来&#xff0c;为了保证版本测试的一致性&#xff0c;我们下载…

论文阅读:RGBD GS-ICP SLAM

目录 概要 Motivation 整体框架流程 技术细节 小结 论文地址&#xff1a;[2403.12550] RGBD GS-ICP SLAM (arxiv.org) 代码地址&#xff1a;https://github.com/Lab-of-AI-and-Robotics/GS-ICP-SLAM 概要 RGBD GS-ICP SLAM 是一种结合通用迭代最近点算法&#xff08;Ge…

【基础算法总结】前缀和

目录 一&#xff0c;前缀和算法介绍二&#xff0c;算法原理和代码实现【模板】前缀和【模板】二维前缀和724.寻找数组的中心下标238.除自身以外数组的乘积560.和为k的子数组974.和可被k整除的子数组525.连续数组1314.矩阵区域和 三&#xff0c;算法总结 一&#xff0c;前缀和算…

可能一拆为二,英特尔为何走到今天这一步?

【科技明说 &#xff5c; 科技热点关注】 近来看到外媒消息说&#xff0c;英特尔迫于经营压力&#xff0c;也不得不铤而走险&#xff0c;欲将英特尔一分为二&#xff0c;即芯片制造与芯片设计分离开&#xff0c;互相剥离&#xff0c;独立发展。 于是乎&#xff0c;英特尔将分拆…

图卷积神经网络GNN(一)

图卷积神经网络GNN 研究学习的背景 对于图神经网络&#xff08;GNN&#xff09;来输入的数据是图。&#xff08;解决输入数据不规则情况&#xff09;输入的格式不是固定的 研究涵盖&#xff1a;节点分类&#xff08;nodeclassification&#xff09;、边预测&#xff08;link…

​ArcGIS Pro和ArcGIS的10大区别

本文来源&#xff1a;水经注GIS公众号 如果你经常使用ArcGIS 进行制图和分析&#xff0c;那么你一定听说过ArcGIS Pro&#xff0c;这款软件是Esri未来主打的一款桌面GIS软件&#xff0c;那么这款软件和ArcGIS相比有什么不同呢&#xff0c;这里为你列举了两款软件的10大区别&am…

海康威视相机在QTcreate上的环境配置教程(qt+opencv+海康SDK)

环境配置教程 前言&#xff1a;环境配置&#xff1a;1.海康SDK2.opencv 参考导入文件 前言&#xff1a; 配置环境是编程的第一步&#xff0c;所以写这篇文章来指导环境的配置。如果已经配置好了&#xff0c;想在qt上使用海康的摄像头&#xff0c;可以参考这篇文章&#xff1a;…

骨传导耳机哪个品牌好用?良心测评推荐5大高分骨传导耳机!

在快节奏、数字化的生活时代&#xff0c;耳机成为连接外界与个人世界的桥梁&#xff0c;尤其在户外运动和健身场景中更是不可或缺。传统入耳式耳机虽然携带方便、音质优秀&#xff0c;但长时间佩戴会对耳道和鼓膜造成压力&#xff0c;甚至引发耳部不适。为解决这一痛点&#xf…

windows下自启springboot项目(jar+nginx)

1、将springboot项目打包为jar 2、新建文本文档 test.txt&#xff0c;并输入 java -jar D:\test\test.jar&#xff08;修改为自己的jar包位置&#xff09; 保存 然后修将后缀名改为 .bat 3、在同一目录再新建 文本文档test.txt&#xff0c;输入以下内容&#xff0c;&…

Meme“淘金”热潮下:Meme发射平台的安全风险分析

2023年&#xff0c;Meme赛道成为加密市场和各大公链生态的重点关注板块之一&#xff0c;尤其是在Solana等公链上&#xff0c;Meme代币迎来了爆发。许多Meme代币的交易量飙升&#xff0c;年初Solana生态中的Meme代币交易额甚至达到百亿美元。乘着Meme代币的东风&#xff0c;Meme…

VSCode配置 C/C++ 开发环境

目录 1.概述 2. 安装 C/C 扩展 3. 安装编译器 3.1.Windows 3.2.macOS 3.3.Linux 4. 配置 VSCode 5. 构建和运行 1.概述 在 Visual Studio Code (VSCode) 中配置 C/C 开发环境&#xff0c;需要安装一些扩展和正确配置编译器。以下是详细的步骤&#xff1a; 2. 安装 C/C…

Agilent MSO7104A安捷伦示波器1G 4通道

Agilent MSO7104A安捷伦示波器1G 4通道 附加功能&#xff1a; 带宽&#xff1a;1 GHz 通道&#xff1a;4 个模拟和 16 个数字 采样率&#xff1a;4 GSa/s 记录长度&#xff1a;标准 8 Mpts MegaZoom III 深存储器 垂直分辨率&#xff1a;8位 自动缩放和峰值检测 有见地的…

数据分类:成功DLP的基本要求

现如今我们存储数据的方式发生了巨大变化&#xff0c;从优质硬盘到今天的云存储解决方案&#xff0c;存储技术的进步大幅削减了成本&#xff0c;并使组织能够呈指数级增长的数据&#xff0c;我们都在利用这一点。 事实上&#xff0c;数据每年以惊人的 25% 的速度增长&#xff…

顶级PCVR头显具备什么配置?清晰度如何?

头戴式显示器是VR体验中用户与虚拟现实环境交互不可或缺的一部分。高端的头显通常可为使用者提供具有超高分辨率的高清画面&#xff0c;因此当你拥有一部高端的VR头显&#xff0c;虚拟世界将如真实世界一样呈现在你眼前。 说到顶级头显我们就不得不提到Varjo&#xff0c;Varjo是…

最全的性能测试性能诊断工具清单

给做性能问题的诊断需要用到的工具分一下类的话&#xff0c;主要有以下类&#xff0c;网络通信报文抓取工具、基础软件监控工具、第三方资源监控工具、专业性能诊断工具和反编译工具。 接下来我们就分别说说&#xff0c;每类里面都有哪些工具。首先第一类是网络通信报文抓取工…

【CanMV K230 AI视觉】人脸3D网格

【CanMV K230 AI视觉】人脸3D网格 人脸3D网格 &#xff08;动态测试效果可以去下面网站自己看。&#xff09; B站视频链接&#xff1a;已做成合集 抖音链接&#xff1a;已做成合集 人脸3D网格 人脸3D网格&#xff0c;在检测到人脸后用多个点描绘整个脸&#xff0c;从而把人脸…

Java导入、导出excel保姆级教程(附封装好的工具类)

前言 我们在日常开发中&#xff0c;一定遇到过要将数据导出为Excel的需求&#xff0c;那么怎么做呢&#xff1f;在做之前&#xff0c;我们需要思考下Excel的组成。Excel是由四个元素组成的分别是&#xff1a;WorkBook(工作簿)、Sheet(工作表)、Row(行)、Cell(单元格)&#xff…

深度学习-目标检测(四)-Faster R-CNN

目录 一.模型框架 二&#xff1a;步骤详细 1.conv layers 2.RPN 3.anchors 4.cls layer分类 5.reg layer回归 6.Proprosal 7.Rol pooling 8.Classification 三.训练 1.训练RPN网络 2.全连接层部分训练&#xff1a; 都看到这里了&#xff0c;点个赞把&#xff01;&a…

adb有线连接正常,adb connect失败

adb connect失败 1. 确认两个设备在同一个局域网 2. 确认此网络是否有adb连接的权限(有的公司网络不允许adb) 3. 确认防火墙设置 如果前面3步都确认没问题&#xff0c;Ping ip也能成功&#xff0c;那么有可能就是端口的问题: step1&#xff1a; 先用有线连接设备&#xff0…

DBeaver连接数据库报连接错误:Public Key Retrieval is not allowed

问题描述 使用DBeaver软件连接mysql数据库的时候&#xff0c;有如下提示信息&#xff1a; 解决办法 点击驱动属性->找到allowPublicKeyRetrieval这项&#xff0c;把值设置为TRUE,再点击连接测试 可以成功连接到mysql数据库&#xff0c;问题解决~