DoltHub上的单元格历史检查

2020-06-09 06:52:32

Dot和DoltHub是用于数据的Git和GitHub。拥有版本化的数据库使数据协作更加流畅和可靠,就像Git改进软件工程师的源代码协作一样。使用Git和GitHub,工程师们能够检查每一行代码,并深入了解谁在一段时间内进行了更改。

Dot对数据做了同样的事情。您可以检查每个表中每个单元格的版本之间的更改。我们已经通过Dolt上的命令行界面公开了此功能,但我们希望让用户更容易熟悉使Dolt独一无二的功能。

为了充分利用版本控制对数据的作用,我们通过DOLT系统表提供了生成的元数据和数据。您可以使用与查询表相同的方式使用SQL查询此信息。

我们的新单元历史特性使用dot_diff系统表,因此我将使用它作为示例。您可以在我们的文档中看到所有DOLT系统表的说明。

dot_diff系统表是一个可查询的表,它显示行的不同版本之间的更改。Dolt中的每个表都有一个对应的dot_diff_[tablename]系统表。例如,我们有一个名为Liquidata/Corona-Virus的存储库,其中有一个名为Places的表,其中列出了所有有冠状病毒病例的地方。使用Dolt时,dot_diff_places表的前15行如下所示:

$dot SQL-Q";SELECT*FROM DOLT_DIFF_PLACES LIMIT 15";+-。-+。-+|到经度|到省/州|到国家/地区|到纬度|到地点id|到提交。|结束提交日期|起始经度|起始省/州|起始国家/地区|起始纬度|起始位置id|起始提交|起始提交日期|差异类型|+-+。-+。-+。-+-+|<;NULL>;|<;NULL>;|0sieej4vrv3lnh8bu87n35les82piq7M|2020-05-14 18:59:35.053+0000UTC|0|已恢复|加拿大|0|569|qp2kccaqt3e7hdc3fcebm18tq5j9dhm|2020-05-14 17:38:34.042+0000UTC|已删除||28.2336|莱索托。<;null>;|<;null>;|1u96d6g0h99ai7a8j4jl2a2jarff4dpu|2020-05-14 16:32:36.568+0000UTC|新增|43.3333||科摩罗|-11.6455|588|kg3tr9s7k9832j7it9gbnrafb3n1rmkk|2020年-。|ha2t0c6f5cfm9t4lnlaf4ak979jqiphc|2020-05-01 20:26:18.34+0000utc|新增|71.2761||塔吉克斯坦|38.861|589|kg3tr9s7k9832j7it9gbnrafb3n1rmkk|2020-05-01 20:47:29.907+0000utc|<;null>;|<;null>。|ha2t0c6f5cfm9t4lnlaf4ak979jqiphc|2020-05-01 20:26:18.34+0000UTC|新增|112.2707|湖北|中国|30.9756|1|m15v3hh1oemcoh2b6d1sctervmm7j4os|2020-04-15 10:23:41.946+0000UTC|112.2707|湖北|中国|30.9756|1|7ur100o0i77m2085c。|中国|113.614|2|7ur10o0i77m2085c4omdo8qbjhq17dki|23.3417-04-15 09:47:05.476+0000UTC|修改||113.614|河南|33.882|3|m15v3h1oemcoh2b6d1sctervmm7j4os|2020-04-15 10:23:41.946+0000UTC|113.614|河南|33.882|3|7ur100o0i77m20.。+000UTC|111.7088|湖南|中国|27.6104|4|7ur10o0i77m2085c4omdo8qbjhq17dki|2020-04-15 09:47:05.476+0000UTC|修改|115.7221|江西|中国|27.614|5|m15v3h1oemcoh2b6d1sctervmm7j4os|2020-04-15 10:23:41.946+0000UTC|115.7221|江西|中国|27.614|5|。15 10:23:41.946+0000UTC|117.2264|安徽|中国|31.8257|6|7ur10o0i77m2085c4omdo8qbjhq17dki|2020-04-15 09:47:05.476+0000UTC|修改|107.874|重庆|30.0572|7|m15v3hh1oemcoh2b6d1sctervmm7j4os|2020-04-15 10:23:41.946+0000UTC

注意:DoltHub上的查询限制为200行。要获得无限的查询结果,您可以通过安装Dolt并运行Dolt clone Liquidata/corona-virus来克隆此存储库。

使用该表,我们能够构造一个查询,只需单击一下即可显示行或单元格中更改的历史记录。

虽然可以通过SQL查询在DoltHub上查看表更改,但我们让它变得更加简单。介绍单元格检查:现在可以单击表格单元格并复制值,获取行或单元格历史记录,然后根据该单元格值进行筛选。单击列标题还可以选择按该列排序。

这不仅使探索数据集变得更容易,而且还教授了SQL并提高了对系统表的认识。

我们的表使用唯一的主键来判断行何时发生更改。单击主键列中的单元格将生成一个DOLT_DIFF查询,该查询显示完整的行历史记录,因为主键不能更改。

单击非主键列中的单元格将生成一个dot_diff查询,该查询仅显示该特定单元格中的更改。

这是一项非常有用的功能,可用于查看随时间发生的更改,并可帮助用户审核数据以确定信息何时何地发生了更改。

我们的许多Liquidata数据集都是从ETL作业生成的,该作业在有更新时自动从其源获取数据,转换数据以匹配Dolt表架构,并将新转换的数据推送到DoltHub。具体地说,我们的Liquidata/Corona-Virus repo运行在ETL作业上,该作业每小时从各种资源获取数据。您可以在此处看到此数据集的导入脚本。

这个数据集的创建者和维护者Tim在检查Places表的diff时,发现了纬度和经度列的浮点导入错误。使用单元格历史记录,他可以通过查看这些单元格的更改历史记录,轻松准确地识别是什么提交更改了这些值。

您可以通过单击dolt_diff表底部的链接来查看DOLT_HISTORY表,从而更深入地了解更改单元格的提交时间和提交者,该表获取与该行相关联的每个提交,以及提交的作者和时间。

Tim能够返回到他的导入脚本并修复浮点错误。如果没有类似Git的特性(如Diffs和单元检查),Tim很容易错过由他的导入脚本造成的数据不一致。

在过去的几个月里,我们一直在向DoltHub添加更多的功能,以便更好地展示版本控制数据库的好处。其中一部分是以用户友好的方式向用户传授Dolt系统表的强大功能,以及公开存储库信息,如文件系统大小和上次更新repo的时间。以下是DoltHub最近新增的一些功能,它们有助于实现这一目标:

DORT是一个使用版本控制的数据库,这使得版本之间的调试数据很容易跟踪。在DoltHub上公开此功能是改进我们用户的数据发现界面的重要一步。可以使用DoltHub上的新单元格历史记录功能审计数据,该功能显示每个表、行和单元格的更改历史记录。

这只是我们为Dolt和DoltHub重新构建的功能的开始。如果您对此感兴趣,并且您想了解此类新功能的最新信息,请注册DoltHub或加入右侧的邮件列表。