雪花在 CTE 中返回一列

时间:2021-03-17 19:16:03

标签: sql snowflake-cloud-data-platform roles

我有 2 个不同的数据库角色。我们称它们为“角色 A”和“角色 B”。

我有以下查询:

with part_1 as (

select col_1
from table
where id  <= 100


)

select p1.col_1
from part_1 as p1;

使用“角色 A”,整个查询失败,但不是 CTE 的内部是我只是突出显示并运行它。

如果我切换到“角色 B”,我做这件事没有任何问题。

有什么建议或意见吗?我不明白 2 个不同的角色会产生不同的结果。

2 个答案:

答案 0 :(得分:0)

大概是因为角色 A 没有对“表”的选择权限,但角色 B 有。

角色的全部意义在于为不同的用户提供不同的访问权限,因此这种行为既是预期的又是期望的

答案 1 :(得分:0)

缺少一些权限差异,正如您所注意到的,它们似乎都在运行

using role role_a;

select col_1
from table
where id  <= 100;

using role role_b;

select col_1
from table
where id  <= 100;

所有工作都意味着两者都可以访问该表..

它是一个表而不是一个视图?

select get_ddl('table','database.schema.table_name');

或者这对两个角色都有效

WITH part_1 AS (
    SLEECT col_1 FROM table
    WHERE id <= 100
)
select p1.*
from part_1 as p1;

在此之后我会问一个支持问题,因为这听起来很像一个错误,但理解为什么需要支持才能深入了解实际情况。