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

Synapse 서버리스 SQL 풀은 Azure Storage에 있는 파일에서 SQL 쿼리를 실행할 수 있는 서버리스 쿼리 서비스입니다. 이 빠른 시작에서는 서버리스 SQL 풀을 사용하여 다양한 형식의 파일을 쿼리하는 방법을 알아봅니다. 지원되는 형식은 OPENROWSET에 나열되어 있습니다.

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

필수 조건

쿼리를 실행할 SQL 클라이언트를 선택합니다.

  • Azure Synapse Studio는 스토리지에서 파일을 검색하고 SQL 쿼리를 만드는 데 사용할 수 있는 웹 도구입니다.
  • Azure Data Studio는 주문형 데이터베이스에서 SQL 쿼리와 Notebook을 실행할 수 있는 클라이언트 도구입니다.
  • SQL Server Management Studio는 주문형 데이터베이스에서 SQL 쿼리를 실행할 수 있는 클라이언트 도구입니다.

이 빠른 시작의 매개 변수:

매개 변수 설명
서버리스 SQL 풀 서비스 엔드포인트 주소 서버 이름으로 사용
서버리스 SQL 풀 서비스 엔드포인트 지역 샘플에 사용할 스토리지를 결정하는 데 사용
엔드포인트 액세스를 위한 사용자 이름 및 암호 엔드포인트 엑세스에 사용
보기를 만드는 데 사용되는 데이터베이스 샘플에서 시작점으로 사용되는 데이터베이스

최초 설정

샘플을 사용하기 전에 다음을 수행합니다.

  • 보기에 대한 데이터베이스 만들기(보기를 사용하려는 경우)
  • 서버리스 SQL 풀에서 스토리지의 파일에 액세스하는 데 사용할 자격 증명 만들기

데이터베이스 만들기

데모용 데이터베이스를 직접 만듭니다. 이 데이터베이스를 사용하여 보기 및 이 문서의 샘플 쿼리를 만듭니다.

참고 항목

데이터베이스는 실제 데이터가 아닌 메타데이터를 보는 용도로만 사용됩니다. 빠른 시작의 뒷부분에서 사용할 수 있도록 사용하는 데이터베이스 이름을 기록해 두세요.

다음 쿼리를 사용하여 mydbname을 원하는 이름으로 변경합니다.

CREATE DATABASE mydbname

데이터 원본 만들기

서버리스 SQL 풀을 사용하여 쿼리를 실행하려면 서버리스 SQL 풀이 스토리지의 파일에 액세스하는 데 사용할 수 있는 데이터 원본을 만듭니다. 다음 코드 조각을 실행하여 이 섹션의 샘플에 사용된 데이터 원본을 만듭니다.

-- create master key that will protect the credentials:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = <enter very strong password here>

-- create credentials for containers in our demo storage account
CREATE DATABASE SCOPED CREDENTIAL sqlondemand
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = 'sv=2018-03-28&ss=bf&srt=sco&sp=rl&st=2019-10-14T12%3A10%3A25Z&se=2061-12-31T12%3A10%3A00Z&sig=KlSU2ullCscyTS0An0nozEpo4tO5JAgGBvw%2FJX2lguw%3D'
GO
CREATE EXTERNAL DATA SOURCE SqlOnDemandDemo WITH (
    LOCATION = 'https://sqlondemandstorage.blob.core.windows.net',
    CREDENTIAL = sqlondemand
);

CSV 파일 쿼리

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

First 10 rows of the CSV file without header, Windows style new line.

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

parquet 파일 쿼리에 대해 자세히 알아보세요.

JSON 파일 쿼리

JSON 샘플 파일

파일은 json 컨테이너, books 폴더에 저장되며, 다음과 같은 구조의 단일 서적 항목을 포함합니다.

{  
   "_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 파일 쿼리

다음 쿼리는 JSON_VALUE를 사용하여 Probabilistic and Statistical Methods in Cryptology, An Introduction by Selected articles라는 제목의 서적에서 스칼라 값(제목, 게시자)을 검색하는 방법을 보여 줍니다.

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 by Selected Topics'

Important

전체 JSON 파일을 단일 행/열로 읽고 있습니다. 따라서 파일에서 찾을 수 없는 FIELDTERMINATOR, FIELDQUOTE 및 ROWTERMINATOR가 0x0b로 설정됩니다.

다음 단계

이제 다음 문서를 진행할 수 있습니다.