Transact-SQL을 사용하여 웨어하우스에 데이터 수집

적용 대상: Microsoft Fabric의 웨어하우스

Transact-SQL 언어는 레이크하우스 및 웨어하우스의 기존 테이블에서 웨어하우스의 새 테이블로 대규모로 데이터를 로드하는 데 사용할 수 있는 옵션을 제공합니다. 이러한 옵션은 집계된 데이터가 있는 테이블의 새 버전, 행의 하위 집합이 있는 테이블 버전을 만들거나 복잡한 쿼리의 결과로 테이블을 만들어야 하는 경우에 편리합니다. 몇 가지 예제를 살펴보겠습니다.

CTAS(CREATE TABLE AS SELECT)를 사용하여 쿼리 결과로 새 테이블 만들기

CTAS(CREATE TABLE AS SELECT) 문을 사용하면 문의 출력 SELECT 에서 웨어하우스에 새 테이블을 만들 수 있습니다. 새 테이블에 대한 수집 작업을 병렬로 실행하여 작업 영역에서 데이터 변환 및 새 테이블을 만드는 데 매우 효율적입니다.

참고 항목

이 문서의 예제에서는 Bing COVID-19 샘플 데이터 세트를 사용합니다. 샘플 데이터 세트를 로드하려면 COPY 문을 사용하여 웨어하우스에 데이터 수집의 단계를 따라 웨어하우스에 샘플 데이터를 만듭니다.

첫 번째 예제에서는 기존 dbo.[bing_covid-19_data_2023] 테이블의 복사본이지만 2023년의 데이터로만 필터링되는 새 테이블을 만드는 방법을 보여 줍니다.

CREATE TABLE [dbo].[bing_covid-19_data_2023]
AS
SELECT * 
FROM [dbo].[bing_covid-19_data] 
WHERE DATEPART(YEAR,[updated]) = '2023';

원본 테이블의 열에서 updated 가져온 값을 사용하여 새 yearmonthdayofmonth 열, 열을 사용하여 새 테이블을 만들 수도 있습니다. 이는 연도별로 감염 데이터를 시각화하거나 가장 많은 COVID-19 사례가 관찰되는 월을 확인하려는 경우에 유용할 수 있습니다.

CREATE TABLE [dbo].[bing_covid-19_data_with_year_month_day]
AS
SELECT DATEPART(YEAR,[updated]) [year], DATEPART(MONTH,[updated]) [month], DATEPART(DAY,[updated]) [dayofmonth], * 
FROM [dbo].[bing_covid-19_data];

또 다른 예로, 연도에 관계없이 매월 관찰되는 사례 수를 요약하여 계절성이 지정된 국가/지역에서 확산되는 영향을 평가하는 새 테이블을 만들 수 있습니다. 이전 예제에서 만든 테이블과 새 month 열을 원본으로 사용합니다.

CREATE TABLE [dbo].[infections_by_month]
AS
SELECT [country_region],[month], SUM(CAST(confirmed as bigint)) [confirmed_sum]
FROM [dbo].[bing_covid-19_data_with_year_month_day]
GROUP BY [country_region],[month];

이 새 표에 따르면 미국 지난 몇 년 January동안 더 확인된 사례를 관찰한 다음, 그 다음에 오는 DecemberOctober것을 볼 수 있습니다. April 는 전체 사례 수가 가장 낮은 월입니다.

SELECT * FROM [dbo].[infections_by_month]
WHERE [country_region] = 'United States'
ORDER BY [confirmed_sum] DESC;

내림차순으로 정렬된 미국 월별 감염 수를 보여 주는 쿼리 결과의 스크린샷 월 번호 1이 맨 위에 표시됩니다.

자세한 예제 및 구문 참조는 CREATE TABLE AS SELECT(Transact-SQL)를 참조하세요.

T-SQL 쿼리를 사용하여 기존 테이블에 데이터 수집

이전 예제에서는 쿼리 결과에 따라 새 테이블을 만듭니다. 예제를 복제본(replica) 기존 테이블에서는 INSERT... SELECT 패턴을 사용할 수 있습니다. 예를 들어 다음 코드는 새 데이터를 기존 테이블에 수집합니다.

INSERT INTO [dbo].[bing_covid-19_data_2023]
SELECT * FROM [dbo].[bing_covid-19_data] 
WHERE [updated] > '2023-02-28';

결과 쿼리 열 형식이 대상 테이블의 SELECT 열과 일치하는 한 문에 대한 쿼리 조건은 유효한 쿼리일 수 있습니다. 열 이름을 지정하고 대상 테이블의 열 하위 집합만 포함하는 경우 다른 모든 열은 로 NULL로드됩니다. 자세한 내용은 INSERT INTO 사용...을 참조하세요 . 최소한의 로깅 및 병렬 처리로 데이터를 대량으로 가져오기 위한 SELECT입니다.

다른 창고 및 레이크하우스의 테이블에서 데이터 수집

CREATE TABLE AS SELECTINSERT 모두... SELECT 문은 SELECT 웨어하우스 간 쿼리를 사용하여 대상 테이블이 저장되는 웨어하우스와 다른 웨어하우스의 테이블을 참조할 수도 있습니다. 이 작업은 세 부분으로 구성된 명명 규칙을 [warehouse_or_lakehouse_name.][schema_name.]table_name사용하여 수행할 수 있습니다. 예를 들어 다음과 같은 작업 영역 자산이 있다고 가정합니다.

  • 최신 사례 데이터로 명명된 cases_lakehouse 레이크하우스입니다.
  • 참조 데이터에 사용되는 테이블로 명명된 reference_warehouse 웨어하우스입니다.
  • research_warehouse 대상 테이블이 만들어지는 웨어하우스입니다.

세 부분으로 구성된 명명을 사용하여 이러한 작업 영역 자산에 있는 테이블의 데이터를 결합하는 새 테이블을 만들 수 있습니다.

CREATE TABLE [research_warehouse].[dbo].[cases_by_continent]
AS
SELECT 
FROM [cases_lakehouse].[dbo].[bing_covid-19_data] cases
INNER JOIN [reference_warehouse].[dbo].[bing_covid-19_data] reference
ON cases.[iso3] = reference.[countrycode];

웨어하우스 간 쿼리에 대한 자세한 내용은 데이터베이스 간 SQL 쿼리 작성을 참조 하세요.