Azure Synapse Analytics의 서버리스 SQL 풀

Becoming a Data Engineer ·2024년 4월 22일
0

Azure

목록 보기
25/27

1. 서버리스 SQL 풀 과 전용 SQL 풀

2. 서비리스 SQL 풀을 사용한 다양한 형식의 파일 쿼리 : OPENROWSET 함수

2-1. 텍스트 파일

SELECT *
FROM OPENROWSET(
	BULK 'https://...(생략).../*.csv',
    FORMAT = 'csv',
    PARSER_VERSION = '2.0'
)
WITH(
	product_id INT,
    product_name VARCHAR(20),
    list_price DECIMAL(5,2)
) AS rows
  • BULK 매개변수를 사용하여 파일 경로 지정
    BULK 'https://...(생략).../*.csv',

  • FORMAT 매개변수를 사용하여 파일 타입 지정
    FORMAT = 'csv',

  • WITH 절을 사용하여 열 이름 및 형식 지정
    WITH(...(생략)...) AS rows

2-2. JSON 파일

SELECT
	JSON_VALUE(doc, '$.product_name') AS product,
    JSON_VALUE(doc, '$.list_price') AS price
FROM
	OPENROWSET(
    	BULK 'https://.../data/files/*.json',
        FORMAT = 'csv',
        FIELDTERMINATOR = '0x0b',
        FIELDQUOTE = '0x0b',
        ROWTERMINATOR = '0x0b'
    )
WITH(
	doc NVARCHAR(MAX) AS rows
)
  • BULK 매개변수를 사용하여 파일 경로 지정
    BULK 'https://.../data/files/*.json',

  • FORMAT 매개변수를 사용하여 파일 타입 지정
    FORMAT = 'csv',

  • 종결자를 0x0b로 설정

  • WITH 절을 사용하여 단일 NVARCHAR 열 지정
    WITH (doc NVARCHAR(MAX)) as rows

  • JSON_VALUE 함수를 사용하여 JSON 속성 지정

2-3. Parquet 파일

SELECT *
FROM OPENROWSET(
    	BULK 'https://.../data/orders/year=*/month=*/*.*’,
        FORMAT =  'parquet’
) AS orders
WHERE
	orders.filepath(1) = '2020'
    AND orders.filepath(2) IN ('1','2')
  • BULK 매개변수를 사용하여 파일 경로 지정
    BULK 'https://.../data/orders/year=*/month=*/*.*’,

  • FORMAT 매개변수를 사용하여 파일 타입 지정
    FORMAT = 'parquet',

  • filepath 속성을 사용하여
    파티션별로 필터링

2-4. 외부 데이터베이스 개체 만들기

1) 데이터베이스 : SalesDB

서버리스 SQL 풀에서

CREATE DATABASE SalesDB
COLLATE Latin1_General_100_BIN2_UTF8;

2) 자격 증명 : sqlcred

외부 파일에 대한 권한 있는 엑세스 제공

CREATE DATABASE SCOPED CREDENTIAL sqlcred
WITH(
	IDENTIFY = 'SHARED ACCESS SIGNATURE',
    SECRET = '...(생략)...'
)

3) 외부 데이터 원본 : files

외부 파일 스토리지 위치에 대한 연결 캡슐화

데이터 레이크 저장소의 파일 위치에 대한 연결 정보를 캡슐화하는 외부 데이터베이스
개체는 "데이터 원본" 이다.

CREATE EXTERNAL DATA SOURCE files 
WITH(
  LOCATION = 'https://mydatalake.blob.core.windows.net/data/files/',
  CREDENTIAL = sqlcred
)

4) 외부 파일 형식 : CsvFormat

외부에 저장된 데이터의 파일 유형 및 형식 정의

CREATE EXTERNAL FILE.FORMAT CsvFormat
WITH(
	FORMAT_TYPE = DELIMITEDTEXT,
    FORMAT_OPTIONS(
    	FIELD_TERMINATOR = ',',
        STRING_DELIMITER = '“’
    )
)

5) 외부 테이블 : dbo.products

외부 파일 데이터에 대한 관계형 추상화

CREATE EXTERNAL TABLE dbo.products(
	prd_id INT,
    prd_name VARCHAR(20),
    list_price DECIMAL(5,2)
)
WITH(
	DATA_SOURCE = files,
    LOCATION = 'products/*.csv',
    FILE_FORMAT = CsvFormat
)

3. 서비리스 SQL 풀을 사용한 데이터 변환

3-1. CREATE EXTERNAL TABLE AS SELECT (CETAS) 문

CREATE EXTERNAL TABLE SpecialOrders
WITH( 
--details for storing results
	LOCATION = 'special_orders/',
    DATA_SOURCE = files,
    FILE_FORMAT = ParquetFormat
) AS
SELECT
	OrderID, CustomerName, OrderTotal
FROM OPENROWSET(
-- details for reading source files
	BULK 'sales_orders/*.csv',
    DATA_SOURCE = 'files',
    FORMAT = 'csv',
    PARSER_VERSION = '2.0',
    HEADER_ROW = TRUE
) AS source_data
WHERE OrderType = 'Special Order'
profile
I want to improve more 👩🏻‍💻

0개의 댓글

관련 채용 정보