Chevron Left

查看所有社区故事

如何确保您的数据模型更改不会让世界爆炸

2021年10月13日

Kim Streich

Infused Insight

photo of Kim Streich

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

当我颤抖的手指在按钮上移动时,额头上渗出一滴汗珠。

我不是即将发射核弹的军队总司令,也不是即将将火箭射入太空的Space X指挥官。

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

当然,我在夸张。

但任何在数据行业工作过一段时间的人都知道,对现有模型进行更改有多么紧张。尤其是,如果你曾经发布了一个导致不准确、糟糕数据或错误结论的变更。

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

作为一个数据分析师,没有什么比利益相关者注意到生产中的数据不准确更糟糕的了。

看到他们对你数据的信任丧失,是我最不愿意看到的事情。这就是为什么你可能总是要仔细检查数据,甚至运行自动化测试以确保没有重大错误遗漏。

确保你的数据模型变更正确

但很多时候,你仍然可能会感到焦虑和担心,害怕自己遗漏了什么。

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

这是我们采用的许多政策之一,以确保在Infused Insight保持数据质量和准确性的持续高水平,一个帮助使用Infusionsoft的企业通过数据洞察获得更多潜在客户和销售的公司。这个解决方案非常有帮助。

第一次应用这个政策时,我们就注意到数据出现了意料之外的变化。从那时起,它一直证明非常有用。

在理论上,解决方案很简单

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

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

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

然后,他们检查是否只应用了预期的变更到数据。这似乎是一个非常常见的任务,应该有很多工具(最好是开源的)可以实现这一点。

选择正确的工具来支持你的数据模型变更

但现实情况并不一样。

有几个工具可以做到我想要的一切,并且提供了用户友好的UI,但它们是闭源的,相当昂贵,最重要的是,只在Windows上可用。

我们的最终解决方案是创建一个使用python、pandas和datacompy比较表新旧版本的Jupyter笔记本。你可以用它来与任何由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公司的创始人,该公司通过数据洞察帮助业务获得更多潜在客户和销售。

您可能还喜欢

撰写社区故事的技巧

Metabot

Metabase

预测下一击

Ukrit Wattanavaekin

Metabase

基于规则的推荐

Conor Dewey

Metabase

数据分析师职业建议

Rob Glickman

Cledara

您可能还喜欢

撰写社区故事的技巧

Metabot

Metabase

预测下一击

Ukrit Wattanavaekin

Metabase

基于规则的推荐

Conor Dewey

Metabase

数据分析师职业建议

Rob Glickman

Cledara