如何用SQL从雪花中提取数据的可观察性指标

你的团队 迁移到雪花. 你的首席技术官全在这个“现代数据栈”上,或者用她的话说:企业数据发现.但任何一个数据工程师都会告诉你, 即使是最好的工具也不能将您从破损的管道中拯救出来. 

事实上, 您可能一直处于模式更改变坏的接收端, 复制表, 在您不希望记住的情况下,有太多的空值.  

好消息? 在雪花环境中管理数据质量时, 数据团队可以采取很少的步骤来了解您的数据从摄入到消费的健康状况.

以下是一个从Snowflake提取数据可观察性指标的五步方法, ,反过来, 离…又近了一步 信任你的数据

地图你的雪花库存

出于本教程的目的, 让推荐一个正规滚球网站假设您在Snowflake上有一个名为ANALYTICS的数据库(尽管, 与大多数数据栈一样, 这种情况很少发生). 在您的环境中运行下面的查询, 只需将ANALYTICS替换为您要跟踪的数据库的名称. 要列出帐户中的数据库,可以运行“SHOW databases”.  

您的第一步将是映射仓库中的所有表,这样您就知道需要首先跟踪哪些内容. 当你这么做的时候, 在理解每个表中有什么内容时,映射模式是一个强大的工具, 以及它是如何随着时间变化的.

下面是如何使用Snowflake:

这个查询将获取所有表的列表以及关于表设置的有用元数据. 的 评论 属性对于勤于记录数据的人来说特别有用 评论.

要获取你的表的模式——理解它是如何演变的,可以真正帮助防止和排除数据故障——你可以使用这个查询:

请注意,上面的代码片段将有助于处理表格, 但是推荐一个正规滚球网站故意忽略了视图和外部表. 为了获取这些元数据,推荐一个正规滚球网站建议使用以下查询:

虽然这可能会增加实现的复杂性, 这些查询将获取在查询时不可用的有价值的信息 information_schema.表. 例如, 您将拥有视图的text属性——它将为您的视图提供关于底层SQL查询的见解.

监控雪花数据的新鲜度和容量

为您的桌子追踪容量和新鲜度 是非常重要的 了解管道和数据的整体运行状况. 幸运的是,Snowflake在向仓库中的表进行写操作时跟踪这些信息. 您可以获取表有多少字节和行, 以及他们最近使用这个查询被更新的时间:

通过存储这些指标并观察它们如何随时间变化, 您可以映射表更新的频率, 在每次更新中需要多少数据,最重要的是——识别丢失的或异常的更新.

测量视野的新鲜度和容量并不简单, 因为它是底层查询中包含的表的函数. 至于外部表,推荐一个正规滚球网站建议使用“显示外部表……”.

构建您的雪花查询历史记录

在进行故障排除时,拥有snow环境中运行的所有查询的可靠历史记录是非常宝贵的工具——它可以让您确切地看到最近一次写入表的方式和时间. 更广泛地说, 对查询日志的分析可以帮助映射沿袭(表之间的依赖关系), 了解哪些用户使用哪些资产, 甚至优化您的雪花实例的性能和成本.

这是推荐一个正规滚球网站用来提取查询日志的查询——注意,推荐一个正规滚球网站将过滤掉系统和错误的查询,以减少噪音:

你可能还会发现,看看复制和加载操作的历史,以理解数据是如何加载和移动的,这是有价值的:

检查雪花中最重要数据的运行状况

最后, 你的一些关键表格, 您可能希望运行数据质量检查,以确保所有字段都被正确填充并具有健康的值. 通过跟踪一段时间内的运行状况指标并与过去的批次进行比较, 您可以在数据中发现一系列数据质量问题

你可以这样做:

在本例中,推荐一个正规滚球网站收集的两个字段的运行状况指标 client_hub table. 为字段 account_id, 一个字符串, 推荐一个正规滚球网站跟踪像完整性(非空值的%)这样的指标, 区别度(唯一值的百分比)和UUID率(匹配UUID格式的记录的百分比). 随着时间的推移,跟踪这些信息将有助于识别常见问题,比如没有id的账户, 有错误格式的重复记录和id. 

对于数值字段 num_of_users 推荐一个正规滚球网站跟踪其他类型的指标,如零率(值为0的记录的百分比),平均值和分位数. 这些指标——随着时间的推移观察——可以帮助推荐一个正规滚球网站识别常见的问题,比如丢失导致计数变为0的数据, 或者会导致用户数量大大减少的漏洞.

可伸缩性, 注意,推荐一个正规滚球网站只跟踪最近的数据(在本例中为1天),并假设过去的数据已经被查询和存储. 这种做法——如果有必要的话,还可以进行抽样——可以让您高效地跟踪一些相当大的数据集,而且成本也很低.

将其投入生产

当提到在生产中使用这种方法时,需要注意以下几点: 

可伸缩性 

跟踪大量的表和大数据集可能会变得棘手. 你得考虑一下分批处理你的电话, 优化查询的规模, 彻底删除, 规范化各种模式,并将所有这些信息存储在可伸缩的存储中,这样您就可以理解这些信息. 这需要构建一个专用的数据管道,您可以随时操作、更新和维护它. 

Pro-tip: 别忘了记录你的雪花信用卡消费记录(你可不想接到你首席财务官的电话……).

覆盖堆栈的其他部分

构建真正可靠的数据管道并实现数据的可观察性需要的不仅仅是收集Snowflake指标. 事实上, 随着现代数据栈的发展, 密切关注实时流数据的可靠性将变得至关重要, 数据的湖泊, 指示板, 毫升模型, 和其他资产. 

使此方法可扩展到Snowflake之外, 特别是当您的数据堆栈增加到包含额外的技术和数据源时, 是一个根本性的挑战. 因为数据在管道的任何地方都可能被破坏, 您将需要一种不仅从仓库提取指标和元数据的方法, 还有其他资产. 

投资解决方案,使这些集成能够相互配合,与您的最终用户配合良好, 不管是你的数据工程师, 分析工程师, 毫升团队, 或数据科学家, 应该优先考虑吗. 真正的数据可观察性可以扩展到仓库之外,提供对湖泊中数据健康状况的洞察, ETL, 商业智能仪表盘, 在此之前,破碎的数据会滚雪球般地变成更大的问题.

建立工作流程

您获取的信息需要能够随时为团队的其他成员所用, 特别是当事情坏了或者你在指挥的阵痛中 对数据管道进行根本原因分析. 检测到问题时自动通知,以及更好地处理这些工作流的集中式(且易于导航的)UI,可以区分快速解决方案和数天的数据灾难. 

它不是星际飞船企业号(或发现号), ), 但推荐一个正规滚球网站希望本教程为您提供数据信任的构建模块.

现在,开始使用SQL! 

有兴趣了解更多? 接触 伊塔Bleier 剩下的 蒙特C奥尔罗团队.