#sql #snowflake-cloud-data-platform
#sql #snowflake-cloud-data-platform
Вопрос:
Я хочу запустить несколько запросов в Snowflake и извлечь результаты за один раз … т.е. Запустить весь SQL для первых десяти строк в каждой таблице. Должен ли я запускать и загружать каждый из них отдельно, или это можно сделать за один раз?
Комментарии:
1. Вы можете попросить хранимую процедуру скопировать 10 строк из каждой таблицы в stage в виде файла с разделителями, Parquet или JSON. Это было бы ближе всего к «one go», потому что DDL для каждой таблицы будет отличаться.
Ответ №1:
Вы можете использовать объединение для объединения таблиц в один и тот же результирующий набор. Объединения требуют, чтобы у вас было одинаковое количество столбцов, поэтому мы можем просто вставить пустые столбцы в select.
Вам нужно будет добавить столько «поддельных» столбцов, необходимых для каждой последующей таблицы, пока это не будет равно количеству столбцов в таблице с большинством столбцов.
Select TOP 10 Col1, Col2, Col3, Col4, Col5
FROM Table1
Union
Select TOP 10 Col1, Col2, Col3, Null as Col4, Null as Col5
FROM Table2
Select TOP 10 Col1, Col2, Null as col3, Null as Col4, Null as Col5
FROM Table3
Вы также можете заменить реальные столбцы на * и перечислить только поддельные столбцы
Select TOP 10 Col1, Col2, Col3, Null as Col4, Null as Col5
FROM Table2
Select TOP 10 *, Null as col3, Null as Col4, Null as Col5
FROM Table3
Not sure if this will work in your specific SQL DB dialect.
Ответ №2:
Оператор объединения SQL Оператор ОБЪЕДИНЕНИЯ используется для объединения результирующего набора из двух или более операторов SELECT.
Каждый оператор SELECT в UNION должен иметь одинаковое количество столбцов Столбцы также должны иметь похожие типы данных Столбцы в каждом операторе SELECT также должны иметь одинаковый порядок Синтаксиса объединения
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
Сложите несколько таблиц, используя ОБЪЕДИНЕНИЕ ВСЕХ
A. Синтаксис для объединения таблиц в SQL Server
Синтаксис довольно прост, мы объединяем запросы select отдельных таблиц с ОБЪЕДИНЕНИЕМ или ОБЪЕДИНЕНИЕМ ВСЕХ:
SELECT [EmpID]
,[Name]
,[LocationID]
,[Location]
,[Year]
,[Target]
FROM [TargetShire]
UNION
SELECT [EmpID]
,[Name]
,[LocationID]
,[Location]
,[Year]
,[Target]
FROM [TargetCentralMiddleEarth]
В результате мы получаем объединенные таблицы:
Обработка повторяющихся записей в SQL Server
Если вы обратили внимание, дублирующая запись сотрудника «Фродо Б.» отсутствует в приведенном выше примере. Это связано с тем, что команда «ОБЪЕДИНЕНИЕ» удаляет повторяющиеся значения.
Если мы также хотим иметь повторяющиеся записи, мы должны использовать «ОБЪЕДИНИТЬ ВСЕ». Синтаксис аналогичен приведенному выше примеру:
SELECT [EmpID]
,[Name]
,[LocationID]
,[Location]
,[Year]
,[Target]
FROM [TargetShire]
UNION ALL
SELECT [EmpID]
,[Name]
,[LocationID]
,[Location]
,[Year]
,[Target]
FROM [TargetCentralMiddleEarth]