У меня есть таблица MYSCHEMA.TEST_SNOWFLAKE_ROLE_T
в Snowflake, созданная с использованием роли CONSOLE_USER.
MYSCHEMA
, с которой связан FUTURE GRANTS
, который предоставляет следующие привилегии роли BATCH_USER
для любоготаблица, созданная по схеме MYSCHEMA - DELETE, INSERT, REFERENCES, SELECT, TRUNCATE, UPDATE.
Роль BATCH_USER
также имеет привилегии CREATE STAGE
и USAGE
для схемы MYSCHEMA
.
Второй пользователь, принадлежащий к роли BATCH_USER
, пытается вставить данные в ту же таблицу из кадра данных, используя следующий Spark SQL (блоки данных), но завершается неудачно с сообщением об ошибке недостаточных привилегий.
df.write.mode(op_mode) \
.format("snowflake") \
.options(**self.sfoptions) \
.option("dbtable", snowflake_tbl_name) \
.option("truncate_table", "on") \
.save
Появляется следующее сообщение об ошибке:
Py4JJavaError: An error occurred while calling o908.save.
: net.snowflake.client.jdbc.SnowflakeSQLException: SQL access control error
: Insufficient privileges to operate on table 'TEST_SNOWFLAKE_ROLE_T')
Роль CONSOLE_USER
имеет права владения на таблицу, поэтому роль BATCH_USER
не сможет удалить таблицу, но при добавленииопция option("truncate_table", "on")
должна была предотвратить автоматическую перезапись схемы таблицы.
Я несколько раз просматривал доступную документацию Snowflake и Databricks, но не могу понять, что является причиной проблемы с недостаточными привилегиями.
Любая помощь очень ценится!