외부 테이블을 SELECT로 만들기(CETAS)

완료됨

이 단원에서는 CETAS(CREATE EXTERNAL TABLE AS SELECT) 명령과 이 명령이 제공하는 이점을 자세히 살펴봅니다.

CETAS는 Azure Blob Storage, Azure Data Lake Storage, S3 호환 개체 스토리지 및 외부 데이터베이스를 지원합니다. 또한 CETAS는 CSV 또는 Parquet 파일로 파일 형식 내보내기도 지원합니다.

CETAS의 가장 강력한 기능은 OPENROWSET 또는 다른 외부 테이블과 결합하는 것과 같은 다른 SELECT 작업과 결합하는 것입니다. 이 조합을 사용하면 CETAS를 다양하고 유연한 방식으로 사용할 수 있습니다.

CETAS에 대한 사용 사례

CETAS에는 다양한 사용 사례가 있지만 세 가지 주요 사용 사례는 다음과 같습니다.

  • 보고
  • 데이터 계층화 또는 오프로드
  • 데이터 내보내기 허브

보고

CETAS의 가장 명백한 사용 사례는 PolyBase 및 SQL Server 유연성의 모든 기능을 사용하여 보고를 간소화하는 것입니다. 지원되는 모든 데이터 원본, 테이블 또는 파일에 연결하고 T-SQL을 사용하여 결과를 조작하고 내보낼 수 있습니다. 예를 들어 보고 도구를 SQL Server에 연결하는 대신 CETAS를 사용하여 필요한 모든 쿼리를 수행하고 결과를 Parquet 파일로 내보내고 보고 도구를 내보낸 데이터를 가리킬 수 있습니다.

데이터 계층화 또는 오프로드

또 다른 일반적인 시나리오는 보관 또는 읽기 전용 데이터를 SQL Server 테이블에서 원격 스토리지로 내보내지만 외부 테이블을 통해 정상적으로 쿼리하는 것입니다. 이렇게 하면 SQL Server에서 활성 데이터만 유지하고 리소스를 저장할 수 있지만 필요할 때마다 투명한 방식으로 데이터에 액세스할 수 있습니다. 애플리케이션 관점에서 일반 SQL Server 테이블에 액세스하는 것과 같습니다.

예를 들어 테이블에 변경되지 않은 지난 연도의 과거 데이터가 있지만 여전히 완전히 액세스할 수 있어야 한다고 상상해 order 보십시오. CETAS를 사용하면 모든 order 테이블 데이터를 다른 위치로 내보내 데이터베이스 크기와 필요한 유지 관리 시간을 줄일 수 있습니다. 외부 테이블을 사용하면 내보낸 데이터가 일반 테이블처럼 동작합니다.

데이터 내보내기 허브

SQL Server 2025를 데이터 허브로 사용하면 Oracle, Teradata, ODBC 또는 다른 버전의 SQL Server와 같은 다른 데이터 원본에 연결하는 것을 포함하여 CETAS를 기존의 모든 PolyBase 기능과 결합할 수 있습니다.

CETAS 요구 사항

SQL Server 2025에서 CETAS를 사용하려면 ALLOW POLYBASE EXPORT 속성을 sp_configure를 사용하여 활성화해야 합니다. 자세한 내용은 다음 연습을 참조하세요.

CETAS 권한

CETAS를 사용하려면 세 가지 수준의 사용 권한이 필요합니다.

  • 데이터 원본에 액세스하고 읽을 수 있는 권한입니다. 데이터가 네트워크 공유 또는 다른 데이터베이스 서버의 SQL Server 외부에 있는 경우 SQL Server 서비스 계정에 데이터 원본에 액세스할 수 있는 권한이 있어야 합니다.

  • SQL Server 2025에서 CETAS 명령을 사용할 수 있는 권한입니다. 데이터베이스 사용자가 CETAS 명령을 실행하려면 ADMINISTER BULK OPERATIONS, ALTER ANY EXTERNAL DATA SOURCEALTER ANY EXTERNAL FILE FORMAT 권한이 필요합니다.

  • CETAS 결과를 쓰기 위한 대상에 대한 쓰기 권한. 대상, Parquet 또는 CSV 파일에 쓸 수 있도록 하려면 대상에 대한 쓰기 권한이 필요합니다. 예를 들어 Azure Blob Storage 또는 Azure Data Lake Storage에 쓰려면 사용자에게 해당 대상에 대한 LIST, READ, CREATEWRITE 권한이 필요합니다.

CETAS에 대한 사용 권한에 대한 자세한 내용은 CETAS(CREATE EXTERNAL TABLE AS SELECT) 권한을 참조하세요.

CETAS 지원 형식

CETAS는 SELECT 명령을 입력으로 사용하여 데이터 스트림을 수신하고 결과를 CSV 또는 Parquet 형식으로 내보냅니다. 입력은 OPENROWSET 결과를 포함하여 SELECT 명령과 동일한 형식을 지원합니다.

입력은 SQL Server 인스턴스에서 로컬로 실행되는 테이블, OPENROWSET 작업을 통해 액세스되는 네트워크 파일, 다른 데이터베이스 시스템의 테이블 또는 Azure Blob Storage, Azure Data Lake Storage 또는 S3 호환 개체 스토리지에 저장된 델타 파일일 수 있습니다.

CETAS T-SQL 구조체

CETAS를 더 잘 이해하기 위해 전체 T-SQL 구문을 세면할 수 있습니다. CETAS T-SQL 구조는 상향식 논리 접근 방식을 따릅니다. 명령문의 끝에서 시작한 다음 T-SQL 문의 맨 위로 가는 것이 더 쉽습니다.

  • CETAS 구조의 맨 아래에는 내보낼 데이터를 정의하는 데 사용하는 SELECT 문이 포함되어 있습니다.
  • 중간에 내보내지 않으려는 데이터를 거부하는 데 사용할 수 있는 선택적 매개 변수가 있습니다.
  • CETAS 문의 맨 위에 CREATE EXTERNAL TABLE을 선언한 후 대상 위치, 파일 이름 및 파일 형식에 대한 정보를 추가합니다.

이 구조를 사용하면 CETAS를 SELECT 문과 결합하여 SQL Server 외부, SQL Server 내 또는 지원되는 다른 데이터베이스에서 데이터를 쿼리할 수 있습니다. SQL Server 2025는 자동으로 파일 이름을 만들고 최적화를 위해 결과를 여러 파일로 분할합니다. 예를 들어 Parquet로 내보낸 테이블은 내보낸 데이터 크기에 따라 여러 파일을 생성할 수 있습니다. select 문은 외부 테이블 열 정의 및 형식을 정의합니다.

SQL Server에서 테이블을 Parquet으로 내보내기

다음 예제에서는 CETAS를 사용하여 SQL Server에서 테이블을 Parquet으로 내보냅니다.

CREATE EXTERNAL TABLE ext_sales
WITH (
      LOCATION = '/cetas',
      DATA_SOURCE = s3_eds,
      FILE_FORMAT = ParquetFileFormat
     ) AS
SELECT *
FROM AdventureWorks2025.[Sales].[SalesOrderDetail];

델타 파일 읽기 및 Parquet으로 내보내기

다음 예제에서는 CETAS를 사용하여 델타 파일을 읽고 Parquet로 내보냅니다.

CREATE EXTERNAL TABLE Delta_to_Parquet
WITH (
        LOCATION = N'/backup/sales',
        DATA_SOURCE = s3_parquet,
        FILE_FORMAT = ParquetFileFormat
      ) AS
SELECT *
FROM OPENROWSET(BULK N'/delta/sales_fy22/',
FORMAT = 'DELTA',
DATA_SOURCE = 's3_delta') AS [r];

다음 연습에서는 CETAS를 사용하여 다음을 수행합니다.

  • 테이블을 Parquet 형식으로 내보냅니다.
  • 데이터베이스의 콜드 데이터를 스토리지로 이동합니다.
  • 저장된 데이터에 액세스할 외부 테이블을 만듭니다.
  • 뷰, 와일드카드 검색, 폴더 제거 및 메타데이터를 쿼리 전략으로 사용합니다.