Snowflake cloud data platform 对不同的数据类型使用相同的屏蔽策略

Snowflake cloud data platform 对不同的数据类型使用相同的屏蔽策略,snowflake-cloud-data-platform,dynamic-data-masking,Snowflake Cloud Data Platform,Dynamic Data Masking,对于一个项目,我必须在多个列上设置屏蔽策略。这些列具有不同的数据类型(例如,varchar、date、number…)。是否可以在这些不同的列上使用相同的屏蔽策略 到目前为止,您可以在这里看到我的屏蔽策略,但这只适用于varchar类型。我为每种数据类型创建了不同的屏蔽策略,但如果可能,我希望使用1个屏蔽策略 create or replace masking policy name_mask as (val varchar) returns varchar -> case

对于一个项目,我必须在多个列上设置屏蔽策略。这些列具有不同的数据类型(例如,varchar、date、number…)。是否可以在这些不同的列上使用相同的屏蔽策略

到目前为止,您可以在这里看到我的屏蔽策略,但这只适用于varchar类型。我为每种数据类型创建了不同的屏蔽策略,但如果可能,我希望使用1个屏蔽策略

create or replace masking policy name_mask as (val varchar) returns varchar ->
    case
        when current_role() in ('ROLE_1') then val
        when current_role() in ('ROLE_2') then md5(val)
        else '*********'
    end;

应该注意的是,在设置此屏蔽策略之前,我不知道列的数据类型。屏蔽策略必须适用于每种数据类型。

在当前的屏蔽策略实施下,这是不可能的

定义屏蔽策略时,需要声明返回类型。返回类型需要与应用该类型的列的类型匹配:

目前,Snowflake不支持掩蔽策略中的不同输入和输出数据类型,例如定义掩蔽策略以时间戳为目标并返回字符串(例如掩蔽);输入和输出数据类型必须匹配。


这是一个有趣的功能请求tho

返回
'***'
的屏蔽策略只适用于字符串,因为它返回字符串。如何将其应用于数字列?我可以返回空值而不是“****”,这应该适用于每种类型的值。但问题是,您必须在屏蔽策略的第一行定义数据类型(“创建或替换屏蔽策略名称_mask as(val varchar)returns varchar”)。我希望有办法解决这个问题,所以我的屏蔽策略适用于每种数据类型。你能举个例子看看这是什么样子吗?我似乎不能把它放在正确的地方,使它工作。