(Пользователь Snowflake обратил на это мое внимание ... Любые рекомендации?)
После оператора слияния «набор результатов»может иметь 1, 2 или 3 столбца, возвращаемых в зависимости от потенциала слияния.
Например,
MERGE ... КОГДА СООТВЕТСТВУЕТ ПОСЛЕ ОБНОВЛЕНИЯ ... будет производиться только"число строк обновлено"
MERGE ... КОГДА СООТВЕТСТВУЕТ ДАННОМУ ОБНОВЛЕНИЮ ... КОГДА НЕ СОГЛАСОВАНО С ПОТОКОМ ВСТАВКИ ... будет производить "число обновленных строк" и "количество вставленных строк"
MERGE ... WHEN MATCHED ... THEN DELETE также покажет «количество удаленных строк»
Это означает, что RESULT_SCAN может возвращать разные столбцы в зависимости от возможностей объединения.
Есть ли причина, по которой MERGE не может вернуть все три столбца независимо? В конце концов, даже простой «UPDATE MyTable SET MyColumn = 5
» будет возвращать как «количество обновленных строк», так и «количество обновленных многослойных строк», даже если возможность оператора никогда не приведет к последнему.
Далее,есть ли где-нибудь в документации Snowflake список, показывающий все возможные столбцы в наборе результатов для какой-либо операции? Я знаю, что мог бы «ОПИСАТЬ РЕЗУЛЬТАТ (QueryID)», чтобы получить список имен столбцов, но это дополнительная работа, которую я надеялся избежать.
Мы получили этот ответ на наш первоначальный вопрос:
Когда вы используете метод result_scan, вы используете конкретный идентификатор? Если вы хотите показать все три столбца независимо, вы можете рассмотреть возможность использования
desc result last_query_id();
select * from table(result_scan(last_query_id()));
ссылка: https://docs.snowflake.net/manuals/sql-reference/functions/result_scan.html
... показывает все возможные столбцы в наборе результатов для любой данной операции?
Вы в пользовательском интерфейсе, вы сможете увидеть имена столбцов в обозревателе объектов: https://docs.snowflake.net/manuals/user-guide/snowflake-manager.html#worksheet-page
HOWEVER:
Если у MERGE нет пути, который использует INSERT, то результирующий набор / RESULT_SCAN не возвращает «количество вставленных строк»колонка. Для меня это проблема. Аналогично для путей к ОБНОВЛЕНИЮ или УДАЛЕНИЮ.
Я знаю, как получить все столбцы для таблицы. У меня вопрос, как получить все столбцы для данного запроса через RESULT_SCAN. Поскольку он динамический и зависит от идентификатора запроса, не могли бы вы перечислить все возможные столбцы из оператора INSERT, оператора MERGE, оператора DESCRIBE и т. Д ...?