Как отфильтровать таблицы показа

Я хочу отфильтровать вывод show tables. В документации есть один пример того, как это сделать. используя result_scan(last_query_id()), но для меня пример не работает:

show tables;
select  "schema_name", "name" as "table_name", "rows"
    from table(result_scan(last_query_id()))
    where "rows" = 0;
-- SQL compilation error: error line 1 at position 8 invalid identifier 'SCHEMA_NAME'

Столбец SCHEMA_NAME фактически находится в выводе show tables, поэтому я не понимаю, что не так.

Лучший,

Давиде


person user2148414    schedule 20.02.2020    source источник
comment
Ваш код у меня работает. Вы всегда запускаете эти два оператора последовательно?   -  person waldente    schedule 20.02.2020
comment
Можете ли вы сообщить, где находится ваша учетная запись (например, AWS-West)? Вышеупомянутый запрос должен работать для вас, как и для других, но, возможно, есть проблема, о которой необходимо сообщить в службу поддержки Snowflake.   -  person Mike Walton    schedule 20.02.2020
comment
@waldente да, я запускаю два оператора последовательно. @MikeWalton, аккаунт находится в us-east-1. Ваше решение установить QUOTED_IDENTIFIERS_IGNORE_CASE = False; сработало как шарм. Спасибо!   -  person user2148414    schedule 21.02.2020


Ответы (2)


Запустите в своей учетной записи следующее и посмотрите, на что он настроен:

show parameters like 'QUOTED_IDENTIFIERS_IGNORE_CASE';

Если для него установлено значение TRUE, то он игнорирует кавычки в вашем запросе, которые затем будут заглавными буквами имен столбцов, которые не будут совпадать с именами в нижнем регистре вывода SHOW.

Чтобы разрешить для вашего собственного сеанса, вы можете запустить следующее:

ALTER SESSION SET QUOTED_IDENTIFIERS_IGNORE_CASE = False;

Вы также можете изменить это на уровне пользователя или учетной записи, если хотите. Установка этого значения в TRUE не рекомендуется по той причине, с которой вы столкнулись.

person Mike Walton    schedule 20.02.2020

Вы можете ссылаться на столбец фильтра, используя синтаксис $<col_n> (# 8 для строк).

Пример:

show tables;
select *
from table(result_scan())
where $8 > 5

При этом ваш запрос сработал для меня.

person tmesis    schedule 20.02.2020