#sql #snowflake-cloud-data-platform
#sql #snowflake-cloud-data-platform
Вопрос:
Я устанавливаю переменную в приведенном ниже фрагменте. Хотя в некоторых случаях он работает, в других он выдает недопустимое значение.
SET VAR_TOKEN='';
// a.
SELECT $VAR_TOKEN;
// b.
CREATE OR REPLACE STAGE
STG_TABLE
WITH
URL = 'azure://stgtableurl'
CREDENTIALS = (azure_sas_token=$VAR_TOKEN)
Я вижу, что переменная печатается с использованием метода a, но когда я использую тот же синтаксис в методе b, я получаю следующую ошибку.
SQL compilation error: invalid value [$VAR_TOKEN] for parameter 'azure_sas_token'
Любые идеи относительно того, использую ли я недопустимый синтаксис во втором случае или невозможно использовать переменные в некоторых настройках.
Комментарии:
1. это кажется действительно странным вариантом использования переменных, поскольку смысл этапов заключается в том, чтобы действовать как уровень безопасности. Авторизованная учетная запись пользователя создает этап, и более низкие привилегии могут получить к ним доступ, но не восстановить учетные данные. Где-как ввод ваших учетных данных в переменную, позволяет любому запущенному SQL восстановить их.. Итак, если вы хотите использовать их именно так, это кажется очень неправильным и опасным. Если, однако, это всего лишь пример, продолжайте.
2. Я думаю, что переменные просто разрешены только в некоторых определенных местах, и, вероятно, это один из случаев, когда они СЕГОДНЯ НЕ разрешены. Если это важно, не стесняйтесь обращаться в службу поддержки Snowflake, возможно, они смогут выяснить, можно ли это изменить.