问题描述
我想知道是否有人举过一个在SNowflake中使用UDF创建MD5结果的示例?
方案:我想要一个UDF可以根据源设置X列以创建MD5结果。因此表A可能有5列,表B则有10列...并且考虑了各种数据类型。
谢谢
托德
解决方法
雪花已经提供了内置功能的md5。
https://docs.snowflake.com/en/sql-reference/functions/md5.html
select md5('Snowflake');
----------------------------------+
MD5('SNOWFLAKE') |
----------------------------------+
edf1439075a83a447fb8b630ddc9c8de |
----------------------------------+
,
有许多方法可以进行MD5计算。但是我认为最好了解您的用例。我假设您想使用MD5来验证迁移到Snowflake的数据。如果真是这样,那么检查雪花每一行的MD5方法可能会很昂贵。验证的最佳方法是为表标识每个列,并为每个列计算MIN,MAX,COUNT,NULL数,DISTINCT COUNT,然后使用源进行验证。我使用这种方法创建了一个框架,在该框架中,我使用“ SHOW COLUMNS”查询来获取“ COLUMNS”列表。该框架还允许在需要时跳过某些列,还根据动态条件过滤检索到的行数。这种验证数据的方式将更加理想。肯定有助于更好地了解您的用例。
MD5
这对您有用吗
create or replace function md5_calc (column_name varchar)
returns varchar
LANGUAGE SQL
AS $$
select md5(column_name)
$$;
SELECT EMPLID,md5_calc(EMPLID),EMPNAME,md5_calc(EMPNAME) from employee;