Запрос таблицы Sys для snowflake

#sql #snowflake-cloud-data-platform

#sql #snowflake-облачная платформа данных

Вопрос:

Как мне найти имя таблицы в хранимой процедуре просмотр в snowflake с помощью snowsql?

Оператор SQL в эквиваленте SQL Sever является:

 select distinct 
    [Table Name] = o.Name, [Found In] = sp.Name, sp.type_desc
from 
    sys.objects o 
inner join 
    sys.sql_expression_dependencies sd on o.object_id = sd.referenced_id
inner join 
    sys.objects sp on sd.referencing_id = sp.object_id
                   and sp.type in ('P', 'FN')
where
    o.name = 'YourTableName'
order by 
    sp.Name
 

Комментарии:

1. Можете ли вы добавить больше контекста? Я не знаю SQL server, но я хочу знать, что вы подразумеваете под «поиском имени таблицы в хранимой процедуре»

2. В настоящее время у Snowflake нет подобных ссылок в INFORMATION_SCHEMA . @FelipeHoffa — Я полагаю, что вопрос заключается в том, как найти хранимые процедуры, которые ссылаются на определенную таблицу.

3. Я пытаюсь найти код snowsql, чтобы увидеть, какие сохраненные процедуры ссылаются на определенную таблицу.

Ответ №1:

Определения хранимых процедур Snowflake хранятся в объекте в общей базе данных Snowfalke, в схеме Account_Usage и в табличных функциях.

выберите * из функций, где верхнее значение (function_definition) похоже на ‘% TABLENAME%’ и function_language = ‘JAVASCRIPT’;

Это не точно, но должно приблизить вас к тому, где вы хотите быть.

Ответ №2:

Как упоминалось в других ответах, прямого эквивалента не существует. Ниже приведен простой и подверженный ошибкам способ добиться чего-то подобного.

 SELECT procedure_schema,procedure_name, procedure_definition
 

из information_schema.procedures
, где rlike(procedure_definition,’.bTABLE_NAMEb.‘,’si’);

Очень похоже на предыдущий ответ, но здесь я использую information_schema.procedures . Я также использую регулярное выражение, чтобы сопоставлять только имя таблицы и избегать частичных совпадений. Также обратите внимание на параметры s и i в r, например, s используется для разрешения . в регулярном выражении сопоставление новых строк и i — это просто сделать шаблон нечувствительным к регистру.