Каковы ограничения на переменные в Snowflake

#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, возможно, они смогут выяснить, можно ли это изменить.