자습서: 관리 ID를 사용하여 외부 데이터 로드
이 문서에서는 관리 ID를 사용하여 외부 테이블을 만들거나 ADLS(Azure Data Lake Storage) Gen2 계정에서 데이터를 수집하는 방법을 설명합니다.
필수 조건
이 자습서를 완료하려면 다음 리소스가 필요합니다.
- ADLS(Azure Data Lake Storage) Gen2 계정
- Azure Synapse Analytics 작업 영역 및 전용 SQL 풀
스토리지 계정에 대한 작업 영역 ID 액세스 권한 부여
각 Azure Synapse Analytics 작업 영역은 작업 영역에서 외부 데이터에 대한 보안 액세스를 구성하는 데 도움이 되는 관리 ID를 자동으로 만듭니다. Azure Synapse Analytics의 관리 ID에 대해 자세히 알아보려면 Azure Synapse Analytics의 관리 서비스 ID를 방문 하세요.
관리 ID가 ADLS Gen2 계정의 데이터에 액세스할 수 있도록 하려면 ID에 원본 계정에 대한 액세스 권한을 부여해야 합니다. 적절한 권한을 부여하려면 다음 단계를 수행합니다.
- Azure Portal에서 스토리지 계정을 찾습니다.
- 데이터 스토리지 -> 컨테이너를 선택하고 외부 테이블에 액세스해야 하는 원본 데이터가 있는 폴더로 이동합니다.
- 액세스 제어(IAM) 를 선택합니다.
- 추가 -> 역할 할당 추가를 선택합니다.
- 작업 함수 역할 목록에서 Storage Blob 데이터 기여자를 선택하고 다음을 선택합니다.
- 역할 할당 추가 페이지에서 + 멤버 선택을 선택합니다. 구성원 선택 창이 열립니다.
- 작업 영역 ID의 이름을 입력합니다. 작업 영역 ID는 작업 영역 이름과 동일합니다. 표시되면 작업 영역 ID를 선택한 다음 선택합니다.
- 역할 할당 추가 페이지에서 구성원 목록에 원하는 Microsoft Entra ID 계정이 포함되어 있는지 확인합니다. 확인되면 검토 + 할당을 선택합니다.
- 확인 페이지에서 변경 내용을 검토하고 검토 + 할당을 선택합니다.
이제 작업 영역 ID가 Storage Blob 데이터 기여자 역할의 멤버이며 원본 폴더에 액세스할 수 있습니다.
참고 항목
이러한 단계는 공용 액세스를 제한하도록 구성된 보안 ADLS Gen2 계정에도 적용됩니다. ADLS Gen2 계정 보안에 대한 자세한 내용은 Azure Storage 방화벽 및 가상 네트워크 구성을 참조하세요.
COPY INTO를 사용하여 데이터 수집
T-SQL COPY INTO
문은 테이블에 유연하고 처리량이 높은 데이터 수집을 제공하며, 전용 SQL 풀 테이블에 데이터를 수집하는 기본 전략입니다. COPY INTO
를 사용하면 사용자가 외부 테이블에 필요한 추가 데이터베이스 개체를 만들지 않고도 외부 위치에서 데이터를 수집할 수 있습니다.
인증을 COPY INTO
위해 작업 영역 관리 ID를 사용하여 문을 실행하려면 다음 T-SQL 명령을 사용합니다.
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
CREDENTIAL = (IDENTITY = 'Managed Identity'),
[<CopyIntoOptions>]
);
여기서
<TableName>
는 데이터를 수집할 테이블의 이름입니다.<AccountName>
는 ADLS Gen2 계정 이름입니다.<Container>
는 원본 데이터가 저장되는 스토리지 계정 내의 컨테이너 이름입니다.<Folder>
는 원본 데이터가 컨테이너 내에 저장되는 폴더(또는 하위 폴더가 있는 경로)입니다. 단일 파일을 직접 가리키는 경우 파일 이름을 제공할 수도 있습니다.<CopyIntoOptions>
는 COPY INTO 문에 제공하려는 다른 옵션 목록입니다.
자세히 알아보고 COPY INTO의 전체 구문을 살펴보려면 COPY INTO(Transact-SQL)를 참조하세요.
외부 테이블을 사용하여 ADLS Gen2에서 데이터 쿼리
외부 테이블을 사용하면 사용자가 데이터를 먼저 수집할 필요 없이 Azure ADLS(Data Lake Storage) Gen2 계정의 데이터를 쿼리할 수 있습니다. 사용자는 ADLS Gen2 컨테이너의 파일을 가리키는 외부 테이블을 만들고 일반 사용자 테이블처럼 쿼리할 수 있습니다.
다음 단계에서는 인증에 관리 ID를 사용하여 ADLS Gen2의 데이터를 가리키는 새 외부 테이블을 만드는 프로세스를 설명합니다.
필요한 데이터베이스 개체 만들기
외부 테이블을 만들려면 다음 개체가 필요합니다.
- 데이터베이스 범위 자격 증명의 비밀을 암호화하는 데이터베이스 마스터 키
- 작업 영역 ID를 사용하는 데이터베이스 범위 자격 증명
- 원본 폴더를 가리키는 외부 데이터 원본
- 원본 파일의 형식을 정의하는 외부 파일 형식
- 쿼리에 사용되는 외부 테이블 정의
이러한 단계를 수행하려면 Azure Synapse 작업 영역의 SQL 편집기 또는 전용 SQL 풀에 연결된 기본 SQL 클라이언트를 사용합니다. 이러한 단계를 자세히 살펴보겠습니다.
데이터베이스 마스터 키 만들기
데이터베이스 마스터 키는 데이터베이스에 있는 인증서 및 비대칭 키의 프라이빗 키와 데이터베이스 범위 자격 증명의 비밀을 보호하는 데 사용되는 대칭 키입니다. 데이터베이스에 마스터 키가 이미 있는 경우 새 키를 만들 필요가 없습니다. 보안 암호로 대체 <Secure Password>
합니다. 이 암호는 데이터베이스의 마스터 키를 암호화하는 데 사용됩니다.
마스터 키를 만들려면 다음 T-SQL 명령을 사용합니다.
-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';
데이터베이스 마스터 키에 대한 자세한 내용은 CREATE MASTER KEY(Transact-SQL)를 참조하세요.
데이터베이스 범위 자격 증명 만들기
데이터베이스 범위 자격 증명은 작업 영역 ID를 사용하며 외부 테이블에 원본 데이터에 대한 액세스가 필요할 때마다 외부 위치에 액세스하는 데 필요합니다.
데이터베이스 범위 자격 증명을 만들려면 다음 명령을 사용합니다. 데이터베이스 범위 자격 증명에 사용할 이름으로 바꿉 <CredentialName>
습니다.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
데이터베이스 범위 자격 증명 에 대한 자세한 내용은 CREATE DATABASE SCOPED CREDENTIAL(Transact-SQL)을 참조하세요.
외부 데이터 원본 만들기
다음 단계는 외부 테이블에서 사용하는 원본 데이터가 있는 위치를 지정하는 외부 데이터 원본을 만드는 것입니다.
외부 데이터 원본을 만들려면 다음 T-SQL 명령을 사용합니다.
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/',
CREDENTIAL = <CredentialName>
);
여기서
<ExternalDataSourceName>
는 외부 데이터 원본에 사용할 이름입니다.<AccountName>
는 ADLS Gen2 계정 이름입니다.<Container>
는 원본 데이터가 저장되는 스토리지 계정 내의 컨테이너 이름입니다.<Folder>
는 원본 데이터가 컨테이너 내에 저장되는 폴더(또는 하위 폴더가 있는 경로)입니다. 단일 파일을 직접 가리키는 경우 파일 이름을 제공할 수도 있습니다.<Credential>
는 이전에 만든 데이터베이스 범위 자격 증명의 이름입니다.
외부 데이터 원본에 대한 자세한 내용은 CREATE EXTERNAL DATA SOURCE(Transact-SQL)를 참조하세요.
외부 파일 형식 만들기
다음 단계는 외부 파일 형식을 만드는 것입니다. 외부 테이블에서 참조하는 데이터의 실제 레이아웃을 지정합니다.
외부 파일 형식을 만들려면 다음 T-SQL 명령을 사용합니다. 외부 파일 형식에 사용할 이름으로 바꿉 <FileFormatName>
습니다.
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True
)
);
이 예제에서는 원본 데이터에 따라 필요에 따라 , STRING_DELIMITER
FIRST_ROW
, 등의 매개 변수FIELD_TERMINATOR
를 조정합니다. 서식 옵션 및 자세한 EXTERNAL FILE FORMAT
내용은 CREATE EXTERNAL FILE FORMAT을 참조 하세요.
외부 테이블 만들기
외부 데이터에 안전하게 액세스하기 위해 메타데이터를 보유하는 모든 필요한 개체가 만들어졌으므로 이제 외부 테이블을 만들어야 합니다. 외부 테이블을 만들려면 다음 T-SQL 명령을 사용합니다.
-- Adjust the table name and columns to your desired name and external table schema
CREATE EXTERNAL TABLE <ExternalTableName> (
Col1 INT,
Col2 NVARCHAR(100),
Col4 INT
)
WITH
(
LOCATION = '<Path>',
DATA_SOURCE = <ExternalDataSourceName>,
FILE_FORMAT = <FileFormatName>
);
여기서
<ExternalTableName>
는 외부 테이블에 사용할 이름입니다.<Path>
는 외부 데이터 원본에 지정된 위치를 기준으로 원본 데이터의 경로입니다.<ExternalDataSourceName>
는 이전에 만든 외부 데이터 원본의 이름입니다.<FileFormatName>
는 이전에 만든 외부 파일 형식의 이름입니다.
테이블 이름과 스키마를 원본 파일에 있는 데이터의 원하는 이름과 스키마로 조정해야 합니다.
외부 테이블 쿼리
이 시점에서 외부 테이블에 액세스하는 데 필요한 모든 메타데이터가 만들어집니다. 외부 테이블을 테스트하려면 다음 T-SQL 샘플과 같은 쿼리를 사용하여 작업의 유효성을 검사합니다.
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
모든 것이 제대로 구성된 경우 이 쿼리의 결과로 원본 데이터의 데이터가 표시됩니다.
자세한 내용을 알아보고 전체 구문을 CREATE EXTERNAL TABLE
살펴보려면 CREATE EXTERNAL TABLE(Transact-SQL)을 참조하세요.