Azure Synapse Analytics에서 서버리스 SQL 풀을 사용하여 스토리지에 쿼리 결과 저장
이 문서에서는 서버리스 SQL 풀을 사용하여 쿼리 결과를 스토리지에 저장하는 방법을 알아봅니다.
필수 조건
첫 번째 단계는 쿼리를 실행할 데이터베이스를 만드는 것입니다. 그런 다음 해당 데이터베이스에서 설치 스크립트를 실행하여 개체를 초기화합니다. 이 설치 스크립트는 이러한 샘플의 데이터를 읽는 데 사용되는 데이터 원본, 데이터베이스 범위 자격 증명 및 외부 파일 형식을 만듭니다.
이 문서의 지침에 따라 출력 스토리지에 데이터를 쓰는 데 사용되는 데이터 원본, 데이터베이스 범위 자격 증명 및 외부 파일 형식을 만듭니다.
선택 항목으로 외부 테이블 만들기
CREATE EXTERNAL TABLE AS SELECT(CETAS) 문을 사용하여 스토리지에 쿼리 결과를 저장할 수 있습니다.
참고 항목
환경을 반영하도록 쿼리에서 이러한 값을 변경합니다.
- mydbname - 만든 데이터베이스의 이름으로 변경
- storage-account-sas - 결과를 작성하려는 스토리지 계정에 대한 공유 액세스 서명
- your-storage-account-name - 결과를 쓰려는 스토리지 계정의 이름입니다('csv'라는 컨테이너가 있는지 확인하거나 여기에 컨테이너의 이름도 변경해야 함)
USE [mydbname];
GO
CREATE DATABASE SCOPED CREDENTIAL [SasTokenWrite]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'storage-account-sas';
GO
CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
LOCATION = 'https://your-storage-account-name.blob.core.windows.net/csv', CREDENTIAL = [SasTokenWrite]
);
GO
CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO
CREATE EXTERNAL TABLE [dbo].[PopulationCETAS] WITH (
LOCATION = 'populationParquet/',
DATA_SOURCE = [MyDataSource],
FILE_FORMAT = [ParquetFF]
) AS
SELECT
*
FROM
OPENROWSET(
BULK 'csv/population-unix/population.csv',
DATA_SOURCE = 'sqlondemanddemo',
FORMAT = 'CSV', PARSER_VERSION = '2.0'
) WITH (
CountryCode varchar(4),
CountryName varchar(64),
Year int,
PopulationCount int
) AS r;
참고 항목
이 스크립트를 수정하고 대상 위치를 변경하여 다시 실행해야 합니다. 일부 데이터가 이미 있는 위치에는 외부 테이블을 만들 수 없습니다.
외부 테이블 사용
CETAS를 통해 생성된 외부 테이블을 일반 외부 테이블처럼 사용할 수 있습니다.
참고 항목
쿼리의 첫 번째 줄, 즉 [mydbname]을 변경하여 만든 데이터베이스를 사용합니다.
USE [mydbname];
GO
SELECT
CountryName, PopulationCount
FROM PopulationCETAS
WHERE
[Year] = 2019
ORDER BY
[PopulationCount] DESC;
설명
결과를 저장한 후에는 외부 테이블의 데이터를 수정할 수 없습니다. CETAS는 이전 실행에서 만든 기본 데이터를 덮어쓰지 않으므로 이 스크립트를 반복할 수 없습니다.
유일하게 지원되는 출력 형식은 현재 Parquet 및 CSV입니다.
관련 콘텐츠
다른 파일 형식을 쿼리하는 방법에 대한 자세한 내용은 단일 CSV 파일 쿼리, Parquet 파일 쿼리 및 JSON 파일 쿼리 문서를 참조하세요.