빠른 시작: 서버리스 SQL 풀 사용
Synapse 서버리스 SQL 풀은 Azure Storage에 배치된 파일에서 SQL 쿼리를 실행할 수 있는 서버리스 쿼리 서비스입니다. 이 빠른 시작에서는 서버리스 SQL 풀을 사용하여 다양한 형식의 파일을 쿼리하는 방법을 알아봅니다. 지원되는 형식 목록은 OPENROWSET을 참조하세요.
이 빠른 시작에서는 CSV, Apache Parquet 및 JSON 파일을 쿼리하는 방법을 보여 줍니다.
필수 조건
쿼리를 실행할 SQL 클라이언트를 선택합니다.
- Azure Synapse Studio는 스토리지에서 파일을 검색하고 SQL 쿼리를 만드는 데 사용할 수 있는 웹 도구입니다.
- mssql 확장을 사용하는 Visual Studio Code는 주문형 데이터베이스에서 SQL 쿼리 및 Notebook을 실행할 수 있는 플랫폼 간 경량 개발자 및 데이터 도구입니다.
- SQL Server Management Studio 는 주문형 데이터베이스에서 SQL 쿼리를 실행할 수 있는 클라이언트 도구입니다.
이 빠른 시작에서는 다음 매개 변수를 사용합니다.
매개 변수 | 설명 |
---|---|
서버리스 SQL 풀 서비스 엔드포인트 주소 | 서버 이름으로 사용 |
서버리스 SQL 풀 서비스 엔드포인트 지역 | 샘플에서 사용할 스토리지를 결정하는 데 사용됩니다. |
엔드포인트 액세스를 위한 사용자 이름 및 암호 | 엔드포인트 엑세스에 사용 |
보기를 만드는 데 사용되는 데이터베이스 | 샘플에서 시작점으로 사용되는 데이터베이스 |
최초 설정
샘플을 사용하기 전에 다음을 수행합니다.
- 뷰에 대한 데이터베이스를 만듭니다(보기를 사용하려는 경우).
- 서버리스 SQL 풀에서 스토리지의 파일에 액세스하는 데 사용할 자격 증명을 만듭니다.
데이터베이스 만들기
데모용 데이터베이스를 직접 만듭니다. 이 데이터베이스를 사용하여 뷰를 만들고 이 문서의 샘플 쿼리에 사용할 수 있습니다.
참고 항목
데이터베이스는 실제 데이터가 아닌 메타데이터를 보는 용도로만 사용됩니다. 빠른 시작의 뒷부분에서 사용할 데이터베이스 이름을 적어 씁니다.
다음 T-SQL 명령을 사용하여 원하는 이름으로 변경 <mydbname>
합니다.
CREATE DATABASE <mydbname>
데이터 원본 만들기
서버리스 SQL 풀을 사용하여 쿼리를 실행하려면 서버리스 SQL 풀이 스토리지의 파일에 액세스하는 데 사용할 수 있는 데이터 원본을 만듭니다. 다음 코드 조각을 실행하여 이 섹션의 샘플에 사용되는 데이터 원본을 만듭니다.
<strong-password-here>
를 원하는 강력한 암호로 바꿉니다.
-- create master key that will protect the credentials:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong-password-here>'
-- create credentials for containers in our demo storage account
CREATE DATABASE SCOPED CREDENTIAL sqlondemand
WITH IDENTITY='SHARED ACCESS SIGNATURE',
SECRET = 'sv=2022-11-02&ss=b&srt=co&sp=rl&se=2042-11-26T17:40:55Z&st=2024-11-24T09:40:55Z&spr=https&sig=DKZDuSeZhuCWP9IytWLQwu9shcI5pTJ%2Fw5Crw6fD%2BC8%3D'
GO
CREATE EXTERNAL DATA SOURCE SqlOnDemandDemo WITH (
LOCATION = 'https://sqlondemandstorage.blob.core.windows.net',
CREDENTIAL = sqlondemand
);
CSV 파일 쿼리
다음 이미지는 쿼리할 파일의 미리 보기를 보여줍니다.
다음 쿼리는 Windows 스타일 새 행과 쉼표로 구분된 열을 사용하여 헤더 행 없는 CSV 파일을 읽는 방법을 보여 줍니다.
SELECT TOP 10 *
FROM OPENROWSET
(
BULK 'csv/population/*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV', PARSER_VERSION = '2.0'
)
WITH
(
country_code VARCHAR (5)
, country_name VARCHAR (100)
, year smallint
, population bigint
) AS r
WHERE
country_name = 'Luxembourg' AND year = 2017
쿼리 컴파일 시간에 스키마를 지정할 수 있습니다. 자세한 예제는 CSV 파일을 쿼리하는 방법을 참조하세요.
Parquet 파일 쿼리
다음 샘플에서는 Parquet 파일을 쿼리하기 위한 자동 스키마 유추 기능을 보여줍니다. 이 샘플에서는 스키마를 지정하지 않고 2017년 9월의 행 수를 반환합니다.
참고 항목
Parquet 파일을 읽을 때 절에 OPENROWSET WITH
열을 지정할 필요가 없습니다. 이 경우 서버리스 SQL 풀은 Parquet 파일의 메타데이터를 활용하여 열을 이름별로 바인딩합니다.
SELECT COUNT_BIG(*)
FROM OPENROWSET
(
BULK 'parquet/taxi/year=2017/month=9/*.parquet',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT='PARQUET'
) AS nyc
자세한 내용은 서버리스 SQL 풀을 사용하여 Parquet 파일 쿼리를 참조 하세요.
JSON 파일 쿼리
JSON 샘플 파일
파일은 폴더 설명서를 사용하여 json 컨테이너에 저장되며 다음 구조의 단일 책 항목을 포함합니다.
{
"_id":"ahokw88",
"type":"Book",
"title":"The AWK Programming Language",
"year":"1988",
"publisher":"Addison-Wesley",
"authors":[
"Alfred V. Aho",
"Brian W. Kernighan",
"Peter J. Weinberger"
],
"source":"DBLP"
}
샘플 쿼리
다음 쿼리는 JSON_VALUE 사용하여 암호화의 확률 및 통계 메서드라는 제목의 책에서 스칼라 값(제목, 게시자)을 검색하는 방법을 보여 줍니다. 소개:
SELECT
JSON_VALUE(jsonContent, '$.title') AS title
, JSON_VALUE(jsonContent, '$.publisher') as publisher
, jsonContent
FROM OPENROWSET
(
BULK 'json/books/*.json',
DATA_SOURCE = 'SqlOnDemandDemo'
, FORMAT='CSV'
, FIELDTERMINATOR ='0x0b'
, FIELDQUOTE = '0x0b'
, ROWTERMINATOR = '0x0b'
)
WITH
( jsonContent varchar(8000) ) AS [r]
WHERE
JSON_VALUE(jsonContent, '$.title') = 'Probabilistic and Statistical Methods in Cryptology, An Introduction'
Important
전체 JSON 파일을 단일 행 또는 열로 읽습니다.
ROWTERMINATOR
FIELDQUOTE
따라서 FIELDTERMINATOR
파일에서 찾을 필요가 없으므로 설정 0x0b
됩니다.