Как хешировать данные в Google BigQuery

Google выпустил быстрое хэширование с помощью CityHash64 (64-разрядная версия) и CityHash128 (128-разрядная версия) в 2011 году. В 2014 году Google выпустил Farmhash в качестве преемника CityHash, который имел ряд улучшений [1]. Эту функцию также можно использовать в Google BigQuery.

Функция вычисляет отпечаток ввода STRING или BYTES, используя функцию Fingerprint64 из библиотеки FarmHash с открытым исходным кодом. Выход этой функции для конкретного входа никогда не изменится [2]. Вы можете использовать FARM_FINGERPRINT для простого хеширования данных с помощью BigQuery SQL. Функция тщательно смешивает входные биты, но не рекомендуется для криптографии [3].

Вот пример, как его использовать:

WITH example AS (
 SELECT 1 AS x, “A” AS y, true AS z UNION ALL
 SELECT 2 AS x, “B” AS y, false AS z UNION ALL
 SELECT 3 AS x, “A” AS y, true AS z
)
SELECT *,
 FARM_FINGERPRINT(CONCAT(CAST(x AS STRING), y, CAST(z AS STRING)))
 AS row_fingerprint
FROM example;

Это очень простой способ использования функции для хеширования данных. Где вы хотите применить это, зависит от вас или компании, поскольку Google не рекомендует это как функцию шифрования. Здесь вам, вероятно, придется оценить риск для данных, но в контексте вашей собственной компании эту функцию, вероятно, полезно использовать.

Если вас интересуют другие методы и возможности для защиты ваших данных в Google BigQuery, вам также могут быть интересны эти статьи:





Источники и дополнительная литература

[1] Безопасность site.com, Ферма Хэш (2022)

[2] Google, FARM_FINGERPRINT (2022 г.)

[3] Гитхаб, фармхэш (2022)