让dbt运行的唯一方法是作为一个帐户管理员进行连接(很糟糕)。在执行dbt模型时,任何其他角色都会给我“在表xxx上的权限不足”。我正在使用DBT云连接到雪花。我用我想要使用的角色创建了下面的角色,但我的赠款似乎不起作用,允许使用这个新角色来运行我的模型。
我的dbt云"dev“目标配置文件以dbt_user形式连接,并在analytics.dbt_ddumas中创建对象。
下面是我的授予脚本,由一个帐户管理员运行:
一定有比下面这个更简单的方法,它甚至不起作用:
戴夫
use role accountadmin;
CREATE ROLE dbt_role
GRANT ROLE dbt_role TO ROLE sysadmin
GRANT USAGE ON WAREHOUSE transform_wh TO ROLE dbt_role
GRANT ALL ON database analytics TO ROLE dbt_role
grant ALL ON ALL schemas in database analytics to role dbt_role;
grant ALL ON future schemas in database analytics to role dbt_role;
grant ALL ON ALL tables in SCHEMA analytics.dbt_ddumas to role dbt_role;
grant ALL ON future tables in SCHEMA analytics.dbt_ddumas to role dbt_role;
grant ALL ON ALL views in SCHEMA analytics.dbt_ddumas to role dbt_role;
grant ALL ON future views in SCHEMA analytics.dbt_ddumas to role dbt_role;
CREATE USER dbt_user PASSWORD = 'Password123' MUST_CHANGE_PASSWORD = FALSE;
GRANT ROLE dbt_role TO USER dbt_user;发布于 2022-06-15 19:05:45
我建议遵循克莱尔关于dbt语篇的优秀文章,该文章涵盖了这个确切的主题。
确切地知道您无法从哪个表、架构或数据库读取数据,这将是很有帮助的。您说的是my dbt cloud "dev" target profile connects as dbt_user, and creates objects in analytics.dbt_ddumas,但是它从哪些数据库和模式读取?(你的资料来源在哪里)?您的大部分授权将面向读取现有数据,因为dbt将创建您的dbt_ddumas模式,并因此拥有它和它创建的所有其他关系。
假设原始数据位于一个名为raw的数据库中,那么我将将您的脚本更改为:
use role accountadmin;
CREATE ROLE dbt_role
GRANT ROLE dbt_role TO ROLE sysadmin
GRANT USAGE ON WAREHOUSE transform_wh TO ROLE dbt_role
grant usage on database raw to role dbt_role;
grant usage on future schemas in database raw to role dbt_role;
grant select on future tables in database raw to role dbt_role;
grant select on future views in database raw to role dbt_role;
grant usage on all schemas in database raw to role dbt_role;
grant select on all tables in database raw to role dbt_role;
grant select on all views in database raw to role dbt_role;
grant usage ON database analytics TO ROLE dbt_role;
grant create schema ON database analytics TO ROLE dbt_role;
CREATE USER dbt_user PASSWORD = 'Password123' MUST_CHANGE_PASSWORD = FALSE;
GRANT ROLE dbt_role TO USER dbt_user;发布于 2022-06-19 05:13:14
对于那些刚开始使用雪花的DBT的人,您需要做的是设置dbt角色来运行模型、测试、dbt运行、dbt测试等等。
在经历了很多挫折和愿意拯救别人的痛苦之后.
这是为了更低的环境。Ex或测试步骤0:以accountadmin身份登录,或让accountadmin执行以下操作:步骤1:创建一个仓库。例如。transform_wh步骤2:创建数据库Ex。下面运行分析程序,用正确的密码替换dbt_user:
注意:不要将任何架构创建为ACCO对联DO。这是我的主要问题,所以不要犯那个错误。回复这条消息的用户的回复不知道,他的回复也会起作用。在执行dbt_loader_dev时,dbt_run角色将执行此操作。如果这样做,dbt_loader_dev在尝试创建模式、表和视图时将获得“不足特权”错误。
USE ROLE accountadmin;
-- this role is used to load all models in the dev (lower environments) when you do a dbt run, dbt test, etc
CREATE ROLE dbt_loader_dev;-应授予sysadmin自定义角色
grant ROLE dbt_loader_dev TO ROLE sysadmin;--这些授权是您需要运行的全部内容,以便dbt_loader_dev能够完成任何dbt运行、dbt测试等所需的所有任务。
GRANT USAGE ON WAREHOUSE transform_wh TO ROLE dbt_loader_dev;
GRANT all ON database analytics TO ROLE dbt_loader_dev;
GRANT usage ON ALL SCHEMAS IN DATABASE analytics TO dbt_loader_dev;
GRANT usage ON future SCHEMAS IN DATABASE analytics TO dbt_loader_dev;
GRANT Monitor ON ALL SCHEMAS IN database analytics TO dbt_loader_dev;
GRANT Monitor ON future SCHEMAS IN database analytics TO dbt_loader_dev;
GRANT MODIFY ON ALL SCHEMAS IN DATABASE analytics TO dbt_loader_dev;
GRANT MODIFY ON future SCHEMAs IN DATABASE analytics TO dbt_loader_dev;
-- create a user and grant the role
CREATE USER dbt_user PASSWORD = 'Password123' MUST_CHANGE_PASSWORD = FALSE;
GRANT ROLE dbt_loader_dev TO USER dbt_user;就这样!享受吧!戴夫(编辑)
https://stackoverflow.com/questions/72635952
复制相似问题