如何在BigQuery中可靠高效地散列一行



我想对行进行哈希处理,以确定行的内容是否随时间变化,但我不确定可靠(无数据丢失(和高效地创建行哈希的最佳方法。

我目前的解决方案:

SELECT FARM_FINGERPRINT(TO_JSON_STRING(table)), *
FROM project.dataset.table

在我看来:

  1. 效率低下-转换TO_JSON_STRING相当费力
  2. 潜在的不可靠-转换为JSON时,更复杂的类型(DATETIME、TIMESTAMP、TIME、STRUCT(是否可能丢失数据

我知道BigQuery提供了一个表的快照备份系统,所以也许有一种更有效的方法可以用于此服务?

我不选择BigQuery快照,因为我需要在一个查询中查询表的所有快照,这在该服务中似乎是不可能的。

发布评论作为与@PhilippeHebert对话的答案。您可以按行存储FARM_FINGERPRINT的结果,而不是使用快照,这样您就可以使用它来与未来的数据检查进行比较。

最新更新