Fel*_*ffa 5 sql snowflake-cloud-data-platform
在讨论如何阻止 Snowflake 用户在表上运行时,我们遇到了一个select *相关问题:“如果有一种方法可以执行类似的操作,在日期/时间戳列上强制执行 where 子句”
那么,如何强制 Snowflake 用户在查询表时使用一定范围的日期呢?
注意:使用表 UDFS 检查更干净的解决方案
解决此问题的一种方法是在表上创建视图。该视图的第一行应该充满无效计算,以及正常日期范围之外的日期/时间戳:
create or replace table mytable3(i number, s string, d date);
insert into mytable3 values (1, 2, '2020-01-01');
create or replace secure view mytable3_view
as
select 'you need to add a date filter'::int i, 'you need to add a date filter'::int s, '1-1-1'::date d
union all
select *
from mytable3
;
Run Code Online (Sandbox Code Playgroud)
现在,每当有人查询该视图时,只要他们没有过滤掉不适当的日期,它就会抛出一个描述性错误:
select i, s
from mytable3_view
--where d > '2000-01-01'
;
-- Numeric value 'you need to add a date filter' is not recognized
Run Code Online (Sandbox Code Playgroud)
请注意,通过a,secure view我们可以管理权限,以便分析师只能通过视图获取数据,而无需授予他们访问基础表的权限。
额外学分:
| 归档时间: |
|
| 查看次数: |
454 次 |
| 最近记录: |