在整个表中计算的Presto哈希/校验和

时间:2018-10-12 00:52:04

标签: sql presto

(我必须承认,这是我第一次承认)使用AWS Athena,并尝试验证应该与Production相同的QA表的数据完整性。两种环境是完全隔离的,因此无法使用任何涉及联接,联合,Except子句等的常规SQL技术。 我猜比较校验和是我最好的选择。但是,尽管Presto文档包含许多哈希和校验和函数,但似乎没有一个适用于整个表。您的建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以checksum可以计算每列的不区分顺序的校验和。再次使用UNNEST + checksum,您可以将此列级校验和合并为单个表级校验和。

工作示例:

presto> with column_checksums as (
     ->     select array[
     ->         checksum(nationkey),
     ->         checksum(name),
     ->         checksum(regionkey) ] checksums
     ->     from tpch.tiny.nation
     -> )
     -> select checksum(cs) as table_checksum
     -> from column_checksums
     -> cross join unnest(column_checksums.checksums) as x(cs);

     table_checksum
-------------------------
 64 ce 66 7a 9a 78 9a 7b
(1 row)