웨어하우스에 데이터 적재

적용 대상:✅ Microsoft Fabric 내 웨어하우스

Microsoft Fabric 웨어하우스는 기본 제공 데이터 수집 도구를 제공합니다. 이러한 도구를 사용하여 코드가 없거나 코드가 풍부한 환경을 사용하여 대규모로 데이터를 웨어하우스에 수집할 수 있습니다.

데이터 수집 도구 선택

다음 조건에 따라 데이터 수집 옵션을 선택합니다.

  • 코드가 풍부한 데이터 수집 작업에는 COPY(Transact-SQL) 문을 사용합니다. 가장 높은 데이터 수집 처리량을 제공합니다. Transact-SQL 논리의 일부로 데이터 수집을 추가해야 할 때 사용합니다.
    • 시작하려면 COPY 문을 사용하여 데이터 수집을 참조하세요.
    • 또한 웨어하우스는 호환성을 위해 기존 BULK INSERT 문을 지원합니다. Fabric Data Warehouse에서 이 문은 클래식 로딩 옵션을 사용하는 COPY INTO 동작에 매핑됩니다.
    • Warehouse의 COPY 구문은 Azure Storage 계정 및 OneLake lakehouse 폴더 내부의 데이터 원본을 지원합니다.
    • 원본에 액세스할 때 Fabric 작업 영역 ID로 가장하도록 CREDENTIAL 절에서 Workspace Identity을 지정하세요. CREDENTIAL = (IDENTITY = 'Workspace Identity')을 예로 들 수 있습니다. 문장은 현재 사용자의 SQL 보안 컨텍스트에서 계속 실행됩니다.
  • 데이터가 애플리케이션 계층에 있고 파일을 먼저 스테이징할 수 없는 경우 직접 클라이언트 쪽 수집에 BCP API(미리 보기) 를 사용합니다.
    • 시작하려면 BCP API(미리 보기)를 사용하여 데이터 수집을 참조하세요.
    • BCP API는 C# SqlBulkCopy 및 Java 같은 bcp.exe 스크립트 및 애플리케이션 APISQLServerBulkCopy를 지원합니다.
    • 처리량이 가장 높은 파일 기반 수집의 경우 스테이징이 가능할 때마다 사용하는 것이 좋습니다 COPY INTO .
  • 일정에 따라 반복적으로 실행되거나 대량의 데이터를 포함하는 코드가 없거나 코드가 부족하거나 강력한 강력한 데이터 수집 워크플로에 파이프라인 을 사용합니다.
    • 시작하려면 파이프라인을 사용하여 웨어하우스로 데이터 수집을 참조하세요.
    • 파이프라인을 사용하여 전체 ETL(추출, 변환, 로드) 환경을 위한 강력한 워크플로를 오케스트레이션할 수 있습니다. 이 환경에는 대상 환경을 준비하거나, 사용자 지정 Transact-SQL 문을 실행하거나, 조회를 수행하거나, 원본에서 대상으로 데이터를 복사하는 데 도움이 되는 활동이 포함됩니다.
  • 코드가 필요 없는 환경에서 데이터 수집 전에 원본 데이터에 대해 사용자 지정 변환을 수행할 수 있는 데이터플로를 사용합니다.
    • 시작하려면 데이터 흐름을 사용하여 데이터 수집을 참조하세요.
    • 이러한 변환에는 데이터 형식 변경, 열 추가 또는 제거, 함수를 사용하여 계산된 열 생성이 포함되지만 이에 국한되지는 않습니다.
  • 코드가 풍부한 환경에 T-SQL 수집 을 사용하여 새 테이블을 만들거나 동일한 작업 영역 또는 외부 스토리지 내의 원본 데이터로 기존 테이블을 업데이트합니다.
    • 시작하려면 Transact-SQL을 사용하여 웨어하우스로 데이터 수집을 참조하세요.
    • INSERT...SELECT, SELECT INTO 또는 CREATE TABLE AS SELECT (CTAS) 같은 Transact-SQL 기능을 사용하여 동일한 작업 영역 내의 다른 웨어하우스, 레이크하우스 또는 미러된 데이터베이스를 참조하는 테이블에서 데이터를 읽습니다. 이러한 기능을 사용하여 외부 Azure 스토리지 계정의 파일을 참조하는 OPENROWSET 함수에서 데이터를 읽을 수도 있습니다.
    • Fabric 작업 영역의 여러 웨어하우스 간에 데이터베이스 간 쿼리를 작성할 수도 있습니다.

지원되는 데이터 형식 및 원본

Microsoft Fabric 웨어하우스에 대한 데이터 수집은 많은 데이터 형식 및 원본을 지원합니다. 이 문서에 설명된 각 옵션에는 지원되는 데이터 커넥터 형식 및 데이터 형식의 자체 목록이 포함됩니다.

T-SQL 수집 테이블 데이터 원본은 동일한 Microsoft Fabric 작업 영역 내에 있어야 하며 파일 데이터 원본은 Azure 데이터 레이크 또는 Azure Blob Storage에 있어야 합니다. 세 부분으로 구성된 명명 또는 원본 데이터에 대한 함수를 OPENROWSET 사용하여 데이터를 쿼리할 수 있습니다. 테이블 데이터 원본은 Delta Lake 데이터 집합을 참조할 수 있지만 OPENROWSET Azure 데이터 레이크 또는 Azure Blob Storage에서 Parquet, CSV 또는 JSONL 파일을 참조할 수 있습니다.

예를 들어, 작업 공간에 InventorySales라는 이름의 두 개의 창고가 있다고 가정해보겠습니다. 다음과 같은 쿼리는 Inventory 웨어하우스에 Inventory 웨어하우스 테이블과 Sales 웨어하우스 테이블의 내용을 조인하고, 고객 정보를 포함한 외부 파일과 함께 새로운 테이블을 만듭니다.

CREATE TABLE Inventory.dbo.RegionalSalesOrders
AS
SELECT 
    s.SalesOrders,
    i.ProductName,
    c.CustomerName
FROM Sales.dbo.SalesOrders s
JOIN Inventory.dbo.Products i
    ON s.ProductID = i.ProductID
JOIN OPENROWSET( BULK 'abfss://<container>@<storage>.dfs.core.windows.net/<customer-file>.csv' ) AS c
    ON s.CustomerID = c.CustomerID
WHERE s.Region = 'West region';

Note

사용하여 OPENROWSET 데이터를 읽는 것은 테이블에서 데이터를 쿼리하는 것보다 느려질 수 있습니다. 동일한 외부 데이터에 반복적으로 액세스하려는 경우 성능 및 쿼리 효율성을 개선하기 위해 전용 테이블에 수집하는 것이 좋습니다.

COPY (Transact-SQL) 문은 CSV, JSONL, PARQUET 파일 형식을 지원합니다. 지원되는 데이터 소스로는 Azure Data Lake Storage (ADLS) Gen2, Azure Blob Storage, 그리고 OneLake가 있습니다.

직접 클라이언트 쪽 수집 시나리오의 경우 BCP API(미리 보기)는 파일을 먼저 준비하지 않고 sql 연결을 통해 bcp.exe, C# SqlBulkCopy및 Java 같은 도구 및 API SQLServerBulkCopy 를 지원합니다.

파이프라인 및데이터 흐름은 다양한 데이터 원본 및 데이터 형식을 지원합니다. 자세한 내용은 파이프라인 및데이터 흐름을 참조하세요.

COPY INTO와 함께 Workspace Identity를 사용하세요

Workspace IdentityCOPY INTO 를 사용하여 원본 데이터에 대한 접근과 대상 웨어하우스 테이블에 쓰는 권한을 분리하세요. Workspace Identity는 Azure Blob Storage, ADLS Gen2, OneLake 소스에 지원됩니다. 이 문장은 현재 사용자의 SQL 보안 컨텍스트에서 실행됩니다. WITH (CREDENTIAL = (IDENTITY = 'Workspace Identity')) 절은 COPY INTO가 소스에 액세스할 때만 작업 영역 ID를 가장할 수 있도록 허용합니다. 모든 SQL 권한과 감사 귀속은 실행 중인 사용자에게 계속 연결되어 있습니다.

Workspace Identity가 없으면, 아이템 공유를 통해 웨어하우스에 접근하는 사용자는 최소한 Read item 권한과 필요한 SQL 권한으로 실행할 COPY INTO 수 있습니다.

Workspace Identity를 실행 COPY INTO 하기 전에 다음 설정을 완료하세요:

  1. 대상 웨어하우스가 포함된 작업 공간에 대해 작업 공간 식별자를 설정하세요.
  2. 작업 영역 ID에 소스에 대한 액세스 권한 부여:
    • Azure Blob Storage와 ADLS Gen2의 경우, 작업 공간 이름을 찾아서 저장소 계정이나 컨테이너에 Storage Blob Data Reader 역할을 할당하세요. ADLS Gen2 디렉터리 수준의 접근을 위해 필요한 ACL 권한을 부여합니다. Microsoft Entra 사용자에게 할당하듯 작업 공간 정체성에 권한을 할당하세요.
    • OneLake의 경우, 작업 공간 이름에서 작업 공간 식별자를 찾아 소스 데이터가 포함된 작업 공간에 추가하고, 최소한 기여자 작업 공간 역할을 할당하세요.
  3. 실행 중인 사용자에게 목표 웨어하우스가 포함된 작업 공간에서 최소한 뷰어 역할을 할당하세요. 아이템 권한만으로는 사용자가 작업 공간 신원을 가장할 수 있는 권한이 없습니다. 워크스페이스-역할 요구사항은 사용자가 워크스페이스 아이덴티티를 지정할 때만 적용됩니다.
  4. 실행 중인 사용자에게 INSERT 대상 테이블에 대한 권한을 부여합니다. Workspace Identity가 자격 증명일 때는 ADMINISTER DATABASE BULK OPERATIONS 권한이 필요하지 않습니다.

다음 예시는 소스 접근을 위해 Workspace Identity를 가장하여 OneLake에서 CSV 파일을 불러옵니다:

COPY INTO dbo.SalesOrders
FROM 'https://onelake.dfs.fabric.microsoft.com/<workspace-id>/<item-id>/Files/orders/*.csv'
WITH (
    FILE_TYPE = 'CSV',
    FIRSTROW = 2,
    CREDENTIAL = (IDENTITY = 'Workspace Identity')
);

Important

민감도 라벨 정책은 조직마다 다릅니다. COPY INTO 목적지에 감도 라벨이 붙어 조작을 방해할 경우 실패할 수 있습니다. 민감도 라벨이 실패를 일으킨다면, 명령을 다시 시도하기 전에 목적지에서 라벨을 제거하세요.

모범 사례

Microsoft Fabric의 Warehouse 명령어는 COPY Azure Storage와 OneLake에서 SQL 워크로드를 고처리량으로 데이터 인제스트링할 수 있도록 간단하고 유연하며 빠른 인터페이스를 제공합니다.

T-SQL 언어를 사용하여 새 테이블을 만든 다음 삽입한 다음 데이터 행을 업데이트하고 삭제할 수도 있습니다. 데이터베이스 간 쿼리를 사용하여 Microsoft Fabric 작업 영역 내의 모든 데이터베이스에서 데이터를 삽입할 수 있습니다. Lakehouse에서 웨어하우스로 데이터를 수집하려는 경우 데이터베이스 간 쿼리를 사용하여 이 작업을 수행할 수 있습니다. 다음은 그 예입니다.

INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
  • 이 방법은 쿼리 및 업데이트의 성능 저하를 유발하므로 싱글톤 INSERT 문을 사용하여 데이터를 수집하지 마세요. 데이터 수집을 위해 Singleton INSERT 문을 연속적으로 사용하는 경우, CREATE TABLE AS SELECT (CTAS) 또는 INSERT...SELECT 패턴을 사용하여 새 테이블을 생성하고, 기존 테이블을 삭제한 후, 생성된 CREATE TABLE AS SELECT (CTAS) 테이블을 기반으로 다시 테이블을 생성하십시오.
    • 기존 테이블을 삭제하면 사용자 지정 측정값 또는 의미 체계 모델에 수행한 사용자 지정 내용을 포함하여 의미 체계 모델에 영향을 줍니다.
  • 파일에서 외부 데이터로 작업할 때 파일 크기가 4MB 이상인지 확인합니다.
  • 압축된 큰 CSV 파일의 경우 파일을 여러 파일로 분할하는 것이 좋습니다.
  • ADLS(Azure Data Lake Storage) Gen2는 Azure Blob Storage(레거시)보다 더 나은 성능을 제공합니다. 가능하면 ADLS Gen2 계정을 사용하는 것이 좋습니다.
  • 자주 실행되는 파이프라인의 경우 동일한 파일에 동시에 액세스할 수 있는 다른 서비스로부터 Azure Storage 계정을 격리하는 것이 좋습니다.
  • 명시적 트랜잭션을 사용하면 트랜잭션이 완전히 커밋된 경우 하나 이상의 테이블을 읽을 때만 표시되도록 여러 데이터 변경 내용을 그룹화할 수 있습니다. 변경 내용 중 하나라도 실패하면 트랜잭션을 롤백할 수도 있습니다.
  • 트랜잭션 SELECT 내에 있고 데이터 삽입이 선행된 경우 롤백 후에 자동으로 생성된 통계가 정확하지 않을 수 있습니다. 통계가 정확하지 않으면 쿼리 계획 및 실행 시간이 잘못될 수 있습니다. 대규모 SELECTINSERT로 트랜잭션을 롤백하는 경우 에 언급된 열의 SELECT하세요.

Note

데이터를 웨어하우스로 수집하는 방법에 관계없이 데이터 수집 작업은 V-Order 쓰기 최적화를 사용하여 생성하는 parquet 파일을 최적화합니다. V-Order는 parquet 파일을 최적화하여 Power BI, SQL, Spark 등과 같은 Microsoft Fabric 컴퓨팅 엔진에서 매우 빠른 읽기가 가능하게 합니다. 일반적으로 웨어하우스 쿼리는 이 최적화를 통해 쿼리의 읽기 속도가 더 빨라지며, parquet 파일이 100% 오픈 소스 사양을 준수하는지도 확인합니다. 읽기 성능에 영향을 줄 수 있으므로 V-Order를 사용하지 않도록 설정하지 마세요. V-Order에 대한 자세한 내용은 웨어하우스의 V-Order 이해 및 관리를 참조하세요.

Fabric Data Warehouse 데이터 수집에 대한 질문과 대답

압축된 CSV 파일을 로드하는 COPY 명령에 대한 파일 분할 지침은 무엇인가요?

특히 파일 수가 작지만 성능 향상을 위해 파일을 각각 최소 4MB로 유지하는 경우 큰 CSV 파일을 분할하는 것이 좋습니다.

Parquet 파일을 로드하는 COPY 명령에 대한 파일 분할 지침은 무엇인가요?

특히 파일 수가 적은 경우 큰 Parquet 파일을 분할하는 것이 좋습니다.

파일 개수 또는 크기에 제한이 있나요?

파일의 수 또는 크기에는 제한이 없습니다. 그러나 최상의 성능을 위해 4MB 이상의 파일을 사용합니다.

만약 지정하지 않았다면 COPY 명령어가 어떤 자격 증명을 사용하나요?

기본적으로 COPY INTO 실행 중인 사용자의 Microsoft Entra 신원을 소스 접근에 사용합니다.