SNOWFLAKE.INFORMATION_SCHEMA не показывает ни одной записи - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь выполнить приведенный ниже запрос к SNOWFLAKE.INFORMATION_SCHEMA от администратора аккаунта, но он возвращает ошибку.

Запрос :

Select 
   'databases' as category,
   count(*) as found, 
   '3' as expected
from SNOWFLAKE.INFORMATION_SCHEMA.DATABASES
where DATABASE_NAME IN ('USDA_NUTRIENT_STDREF','LIBRARY_CARD_CATALOG','SOCIAL_MEDIA_FLOODGATES')

Ошибка :

SQL ошибка компиляции: База данных 'SNOWFLAKE' не существует или не авторизована.

Проверено База данных SNOWFLAKE существует, но не имеет никакой схемы, включая INFORMATION_SCHEMA

1 Ответ

1 голос
/ 26 января 2020

Базы данных живут под вашей учетной записью. Account - это объект верхнего уровня в иерархии объектов Snowflake. Базы данных живут под аккаунтом. См. эту ссылку и найдите текст, в котором говорится: «Самый верхний контейнер - это учетная запись клиента ...». Там есть симпатичный маленький график c.

Когда вы запрашиваете information_schema в базе данных Snowflake, вы получаете information_schema только для базы данных снежинок, а не для всего вашего аккаунта. Snowflake.information_schema довольно бесполезна b / c, она просто показывает информационную схему базы данных (Snowflake), которую вы не можете контролировать - Snowflake контролирует ее.

Если вы хотите видеть все базы данных в вашем аккаунт, вы можете сделать следующее:

use role accountadmin;
show databases;
select count(*) from table(result_scan(last_query_id())) where "name" in ('USDA_NUTRIENT_STDREF','LIBRARY_CARD_CATALOG','SOCIAL_MEDIA_FLOODGATES');

Теперь, отдельно, если вы обеспокоены ошибкой, которую вы получаете - что у вас нет доступа к базе данных снежинки, то я бы скажем, вы либо не используете роль accountadmin, либо не используете роль, которая имеет нужные привилегии. Если вы хотите дать привилегии роли для базы данных Snowlfake, вы можете выполнить следующее:

GRANT IMPORTED PRIVILEGES
    ON DATABASE SNOWFLAKE TO ROLE {SOME_ROLE_OF_YOURS};

Удачи!

...