Как загрузить несколько результирующих наборов за один раз

#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]
 

введите описание изображения здесь

ссылка:
https://community.powerbi.com/t5/Community-Blog/Combine-multiple-tables-with-UNION-UNION-ALL-in-SQL-Server/ba-p/1696694