Хеш / контрольная сумма Presto, вычисленные по всей таблице - PullRequest
0 голосов
/ 12 октября 2018

Работа (впервые, я должен признать) с AWS Athena и попытка проверить целостность данных таблиц QA, которые должны быть идентичны Production.Обе среды полностью изолированы, поэтому нет никакого способа использовать какие-либо традиционные методы SQL, включающие объединения, объединения, исключения, и т. Д. Я думаю, что сравнение контрольных сумм - моя лучшая ставка.Однако, хотя документация Presto включает в себя несколько функций хеширования и контрольной суммы, ни одна из них, по-видимому, не применима для всей таблицы.Ваши рекомендации будут с благодарностью.

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете 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)
...