【发布时间】:2021-12-19 19:50:21
【问题描述】:
我想对行进行哈希处理,以确定行的内容是否随时间变化,但我不确定可靠地创建行哈希的最佳方法是什么(不会丢失数据)并且高效。
我目前的解决方案:
SELECT FARM_FINGERPRINT(TO_JSON_STRING(table)), *
FROM project.dataset.table
在我看来:
- 效率低下 - 转换
TO_JSON_STRING相当繁琐 - 可能不可靠 - 转换为 JSON 时是否会丢失更复杂类型(DATETIME、TIMESTAMP、TIME、STRUCT)的数据?
我知道BigQuery provides a snapshot backup system 用于表格,所以该服务是否存在更有效的方法?
我没有选择 BigQuery 快照,因为我需要在单个查询中查询表的所有快照,而该服务似乎无法做到这一点。
【问题讨论】:
-
您可以存储每行 FARM_FINGERPRINT 的结果,而不是使用快照,以便您可以使用它来与未来的数据检查进行比较。关于您关于效率低下和可靠性的问题,我似乎找不到与使用 BigQuery 的人相关的任何内容。
-
我一定会这样做的。这将比每次重新计算历史中每条记录的哈希值要简单得多。谢谢你的建议:)
标签: google-bigquery