다음을 통해 공유


빠른 시작: 서버리스 SQL 풀 사용

Synapse 서버리스 SQL 풀은 Azure Storage에 배치된 파일에서 SQL 쿼리를 실행할 수 있는 서버리스 쿼리 서비스입니다. 이 빠른 시작에서는 서버리스 SQL 풀을 사용하여 다양한 형식의 파일을 쿼리하는 방법을 알아봅니다. 지원되는 형식 목록은 OPENROWSET을 참조하세요.

이 빠른 시작에서는 CSV, Apache Parquet 및 JSON 파일을 쿼리하는 방법을 보여 줍니다.

필수 조건

쿼리를 실행할 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 파일 쿼리

다음 이미지는 쿼리할 파일의 미리 보기를 보여줍니다.

헤더 없이 CSV 파일의 처음 10개 행, Windows 스타일 새 줄을 보여 주는 스크린샷

다음 쿼리는 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 됩니다.