SQL 풀에서 Delta Lake 사용

완료됨

Delta Lake는 Azure Synapse Analytics의 Spark 풀을 포함하여 Apache Spark용 트랜잭션 관계형 스토리지 계층으로 설계되었습니다. 그러나 Azure Synapse Analytics에는 데이터 분석가 및 엔지니어가 데이터 레이크 또는 관계형 데이터베이스의 데이터에 대해 SQL 쿼리를 실행할 수 있는 서버리스 SQL 풀 런타임도 포함되어 있습니다.

참고

서버리스 SQL 풀의 Delta Lake 테이블에서는 데이터를 쿼리만 할 수 있습니다. 데이터를 업데이트, 삽입 또는 삭제할 수는 없습니다.

OPENROWSET를 사용하여 델타 형식 파일 쿼리

Azure Synapse Analytics의 서버리스 SQL 풀에는 델타 형식 파일 읽기에 대한 지원이 포함되어 있으므로 SQL 풀을 사용하여 Delta Lake 테이블을 쿼리할 수 있습니다. 이 방법은 Spark 및 델타 테이블을 사용하여 대량의 데이터를 처리하고 SQL 풀을 사용하여 처리된 데이터의 보고 및 분석을 위한 쿼리를 실행하려는 시나리오에서 유용할 수 있습니다.

다음 예제에서 SQL SELECT 쿼리는 OPENROWSET 함수를 사용하여 델타 형식 데이터를 읽습니다.

SELECT *
FROM
    OPENROWSET(
        BULK 'https://mystore.dfs.core.windows.net/files/delta/mytable/',
        FORMAT = 'DELTA'
    ) AS deltadata

서버리스 SQL 풀에서 이 쿼리를 실행하여 지정된 파일 위치에 저장된 Delta Lake 테이블에서 최신 데이터를 검색할 수 있습니다.

다음 예제와 같이 데이터베이스를 만들고 Delta Lake 데이터 파일의 위치를 캡슐화하는 데이터 원본을 추가할 수도 있습니다.

CREATE DATABASE MyDB
      COLLATE Latin1_General_100_BIN2_UTF8;
GO;

USE MyDB;
GO

CREATE EXTERNAL DATA SOURCE DeltaLakeStore
WITH
(
    LOCATION = 'https://mystore.dfs.core.windows.net/files/delta/'
);
GO

SELECT TOP 10 *
FROM OPENROWSET(
        BULK 'mytable',
        DATA_SOURCE = 'DeltaLakeStore',
        FORMAT = 'DELTA'
    ) as deltadata;

참고

Parquet 형식으로 저장된 Delta Lake 데이터를 사용하는 경우 일반적으로 문자열 호환성을 보장하기 위해 UTF-8 기반 데이터 정렬을 사용하여 데이터베이스를 만드는 것이 가장 좋습니다.

카탈로그 테이블 쿼리

Azure Synapse Analytics의 서버리스 SQL 풀에는 Spark 메타스토어의 데이터베이스에 대한 공유 액세스가 있으므로 Spark SQL을 사용하여 만든 카탈로그 테이블을 쿼리할 수 있습니다. 다음 예제에서 서버리스 SQL 풀의 SQL 쿼리는 Delta Lake 데이터가 포함된 카탈로그 테이블을 쿼리합니다.

-- By default, Spark catalog tables are created in a database named "default"
-- If you created another database using Spark SQL, you can use it here
USE default;

SELECT * FROM MyDeltaTable;

서버리스 SQL 풀에서 델타 테이블을 사용하는 방법에 대한 자세한 내용은 Azure Synapse Analytics 설명서의 Azure Synapse Analytics에서 서버리스 SQL 풀을 사용하여 Delta Lake 파일 쿼리를 참조하세요.