Chevron Left

查看所有社区故事

如何确保您的数据模型更改不会导致灾难性后果

2021年10月13日

投稿人

Kim Streich

Infused Insight

photo of Kim Streich

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

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

我不是即将发射核弹的陆军上将,也不是 SpaceX 即将把火箭送入太空的指挥官。

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

当然,我有些夸张了。

但是,任何从事数据专业工作足够长时间的人都知道,对现有模型进行更改是多么令人紧张。特别是,如果您曾发布过导致不准确、错误数据或错误结论的更改。

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

作为一名数据分析师,没有什么比利益相关者发现生产环境中的数据不准确更糟糕的了。

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

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

但很多时候,您可能仍然会感到挥之不去的焦虑,担心自己遗漏了什么。

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

这是我们在 Infused Insight 采纳的众多政策之一,该公司旨在帮助使用 Infusionsoft 的企业通过数据洞察获得更多潜在客户和销售额。这个解决方案非常有帮助。

我们第一次应用此政策时就发现了数据中意外的更改。自那以后,它一次又一次地证明了其巨大的实用性。

理论上,这个解决方案很简单

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

“之前为空的广告行动号召 URL,现在应该包含有效的 URL。”

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

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

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

现实情况却大相径庭。

有一些工具可以完全满足我的需求,并提供了用户友好的界面,但它们是闭源的、相当昂贵,而且最重要的是,它们只适用于 Windows 系统。

我们最终的解决方案是创建一个 Jupyter Notebook,它使用 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)则没有这些附加列。

通过这种方式,您可以一目了然地看到哪些内容发生了变化,还可以将更改后的数据与该行的其余数据结合起来理解。

我已将代码作为 Jupyter notebook 发布到 GitHub 上,您可以按照以下步骤学习。

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

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

git clone git@github.com: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 notebook 后,您需要调整设置。

an image with code

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

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

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

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

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

an image with code

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

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

结论:数据模型更改

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

投稿人

Kim Streich

Infused Insight

photo of Kim Streich

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

您可能还喜欢

撰写社区故事的技巧

Metabot

Metabase

预测下一次点击

Ukrit Wattanavaekin

Metabase

数据分析师职业建议

Rob Glickman

Cledara

利用数据提供可靠指标

Frédéric Vion

Subclic

您可能还喜欢

撰写社区故事的技巧

Metabot

Metabase

预测下一次点击

Ukrit Wattanavaekin

Metabase

数据分析师职业建议

Rob Glickman

Cledara

利用数据提供可靠指标

Frédéric Vion

Subclic

© . All rights reserved.