Chevron Left

查看所有社区故事

如何确保您的数据模型更改不会导致世界崩溃

2021 年 10 月 13 日

贡献者

Kim Streich

Infused Insight

photo of Kim Streich

Kim 是一位技术营销人员、数据分析师,也是 Infused Insight 的创始人。Infused Insight 是一家通过数据洞察帮助企业获得更多潜在客户和销售额的公司。

当我的手指颤抖着移到按钮上时,一滴汗水从我的额头流了下来。

我不是即将发射核弹的陆军将军,也不是 Space X 中即将向太空发射火箭的指挥官。

我只是一位商业智能分析师,正在将数据模型更改合并到生产环境中。然而,我猜想我们的压力水平是相当的。

当然,我是在夸大其词。

但是,任何从事数据专业工作足够长时间的人都知道,更改现有模型会带来多大的压力。特别是,如果您曾经发布过导致不准确、错误数据或错误结论的更改。

在进行数据模型更改时,避免失去对数据的信任

作为一名数据分析师,最糟糕的事情莫过于利益相关者注意到生产环境中的数据不准确。

看到他们失去对您的数据的信任,是我最不希望发生在敌人身上的事情。这就是为什么您可能总是仔细检查数据,甚至运行自动化测试,以确保没有潜入重大错误。

确保您的数据模型更改正确

但是,您可能仍然经常感到挥之不去的焦虑和担忧,担心自己遗漏了某些东西。

幸运的是,简单的解决方案是在数据模型更改中比较新旧版本

这是我们在 Infused Insight 采用的众多政策之一,旨在确保始终如一的高质量和准确的数据。Infused Insight 是一家帮助使用 Infusionsoft 的企业通过数据洞察获得更多潜在客户和销售额的公司。事实证明,这个解决方案非常有帮助。

在我们应用此政策的第一次,我们就注意到数据中存在意外更改。此后,它一次又一次地被证明非常有用。

从理论上讲,解决方案很简单

在更改模型的查询后,分析师应写下他们期望结果数据如何更改的假设,例如

“以前为 NULL 的广告号召性用语 URL 现在应包含有效的 URL。”

接下来,他们应该对新旧查询的结果运行比较,该比较会比较所有列值,并检测所有新的和已删除的行。

然后,他们检查是否只有预期的更改应用于数据。看起来这似乎是一项非常常见的任务,并且应该有很多工具(最好是开源工具)可以实现它。

选择正确的工具来支持您的数据模型更改

现实情况看起来有所不同。

有一些工具可以完全满足我的需求并提供用户友好的 UI,但它们是闭源的,相当昂贵,而且最重要的是,仅在 Windows 上可用。

我们的最终解决方案是创建一个 Jupyter 笔记本,该笔记本使用 python、pandas 和 datacompy 来比较表的旧版本和新版本。您可以将其与 pandas 支持的任何数据库甚至 CSV 文件一起使用。

结果是一个 .txt 文件,其中包含更改摘要,以及一个 SQLite 数据库,可让您详细查询所有已更改的列和行。

SQLite 数据看起来像这样

a screenshot with a query on the rows with differences table

在屏幕截图中,您可以看到对 rows_with_differences 表的查询。该表包括在两个版本之间发现差异的所有行。

对于确实有更改的列(例如 cta_link 列),您将获得三列(_match_df1_df2),这些列可让您查看更改的内容并轻松过滤数据。但是,对于所有行都没有更改的列(例如 ad_namead_status),则没有这些附加列。

这样,您可以一目了然地看到更改的内容,还可以将更改的数据与该行其余数据放在上下文中。

我已将代码作为 github 上的 Jupyter 笔记本发布,您可以按照下面的步骤进行学习。

如何为您的数据模型更改进行相同类型的比较

首先,您需要下载代码并安装 python 依赖项。

git clone [email protected]:Infused-Insight/sql_data_compare.git
cd sql_data_compare
pip install -r requirements.txt

接下来,您将需要打开 data_compare.ipynb 文件。您可以使用 jupyter 服务器打开它……

jupyter notebook data_compare.ipynb

或者您可以下载 VSCode 并在其中运行它。这是我首选的方法。打开 jupyter 笔记本后,您需要调整设置。

an image with code

该解决方案使用 python 的 SQLAlchemy 模块从 SQL 数据库加载数据,然后使用 pandas 和 datacompy 对其进行比较,最后将结果写入 SQLite 数据库。

因此,第一步是配置 SQL 数据库设置和 SQLAlchemy 连接字符串。

在上面的示例中,它配置为连接到 MS SQL 服务器,但您可以将其更改为 SQLAlchemy 支持的任何数据库。

您可以参考 他们的数据库 URL 文档了解更多详细信息。

之后,您可以在第二个 jupyter 单元格中开始比较。

an image with code

只需调整设置并运行即可。

您将在 ./comparison/ 目录中找到结果报告和包含更改的 SQLite 数据库。

结论:数据模型更改

我希望这个简单的解决方案能帮助您避免错误,并让您有信心改进现有模型,而不用担心破坏某些东西。

贡献者

Kim Streich

Infused Insight

photo of Kim Streich

Kim 是一位技术营销人员、数据分析师,也是 Infused Insight 的创始人。Infused Insight 是一家通过数据洞察帮助企业获得更多潜在客户和销售额的公司。

您可能还会喜欢

撰写社区故事的技巧

Metabot

Metabase

预测下一次点击

Ukrit Wattanavaekin

Metabase

基于规则的推荐

Conor Dewey

Metabase

数据分析师的职业建议

Rob Glickman

Cledara

您可能还会喜欢

撰写社区故事的技巧

Metabot

Metabase

预测下一次点击

Ukrit Wattanavaekin

Metabase

基于规则的推荐

Conor Dewey

Metabase

数据分析师的职业建议

Rob Glickman

Cledara