可以使用Snowflake UDF即时创建MD5吗?

问题描述

我想知道是否有人举过一个在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;

enter image description here