다음을 통해 공유


클라우드 스토리지로 데이터 내보내기

적용 대상: ✅Microsoft Fabric✅Azure Data Explorer

쿼리를 실행하고 스토리지 연결 문자열 지정된 외부 클라우드 스토리지에 첫 번째 결과 집합을 씁니다.

사용 권한

이 명령을 실행하려면 데이터베이스 뷰어 이상의 권한이 있어야 합니다.

구문

.export[async] [compressed] toOutputDataFormat(StorageConnectionString [, ...] ) [with(PropertyName=PropertyValue [, ...] ] )<|쿼리

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 Type 필수 설명
async string 지정한 경우 명령은 비동기 모드에서 실행됩니다. 비동기 모드를 참조하세요.
compressed string 지정된 경우 출력 스토리지 아티팩트가 파일로 .gz 압축됩니다. compressionType Parquet 파일을 snappy로 압축하는 데 지원되는 속성을 참조하세요.
OutputDataFormat string ✔️ 명령으로 작성된 스토리지 아티팩트 데이터 형식을 나타냅니다. 지원되는 값은 csv, tsv, jsonparquet입니다.
StorageConnectionString string 데이터를 쓸 스토리지를 나타내는 하나 이상의 스토리지 연결 문자열. 확장 가능한 쓰기에 대해 둘 이상의 스토리지 연결 문자열을 지정할 수 있습니다. 이러한 각 연결 문자열 스토리지에 쓸 때 사용할 자격 증명을 나타내야 합니다. 예를 들어 Azure Blob Storage에 쓸 때 자격 증명은 Blob을 읽고 쓰고 나열할 수 있는 권한이 있는 스토리지 계정 키 또는 SAS(공유 액세스 키)일 수 있습니다.
PropertyName, PropertyValue string 키-값 속성 쌍의 쉼표로 구분된 목록입니다. 지원되는 속성을 참조하세요.

참고 항목

데이터베이스 자체와 동일한 지역에 공동 배치된 스토리지로 데이터를 내보내는 것이 좋습니다. 여기에는 다른 지역의 다른 클라우드 서비스로 전송할 수 있도록 내보내는 데이터가 포함됩니다. 쓰기는 로컬로 수행해야 하지만 읽기는 원격으로 발생할 수 있습니다.

지원되는 속성

속성 Type 설명
includeHeaders string 출력의 경우 csv/tsv 열 머리글 생성을 제어합니다. (기본값, 내보낸 헤더 줄 없음) none 중 하나 all 이거나(모든 스토리지 아티팩트로 헤더 줄을 내보내거나 firstFile ) 헤더 줄을 첫 번째 스토리지 아티팩트로만 내보낼 수 있습니다.
fileExtension string 스토리지 아티팩트(예 .csv : 또는 .tsv)의 "확장" 부분을 나타냅니다. 압축을 사용하는 .gz 경우 추가됩니다.
namePrefix string 생성된 각 스토리지 아티팩트 이름에 추가할 접두사를 나타냅니다. 임의 접두사는 지정되지 않은 상태로 두면 사용됩니다.
encoding string 텍스트를 UTF8NoBOM 인코딩하는 방법을 나타냅니다. (기본값) 또는 UTF8BOM.
compressionType string 사용할 압축 유형을 나타냅니다. 가능한 값은 gzip 또는 snappy입니다. 기본값은 gzip입니다. snappy 형식에 parquet 사용할 수 있습니다(선택 사항).
distribution string 배포 힌트(single, per_node, per_shard). 값이 single같으면 단일 스레드가 스토리지에 씁니다. 그렇지 않으면 쿼리를 실행하는 모든 노드에서 쓰기를 병렬로 내보냅니다. 플러그 인 연산자 평가 참조 기본값은 per_shard입니다.
persistDetails bool 명령이 결과를 유지해야 임을 나타냅니다(플래그 참조 async ). 기본값은 true 비동기 실행이지만 호출자에게 결과가 필요하지 않은 경우 해제할 수 있습니다.) 기본값은 false 동기 실행이지만 해당 실행에서도 설정할 수 있습니다.
sizeLimit long 압축 전에 작성된 단일 스토리지 아티팩트의 크기 제한(바이트)입니다. 유효한 범위: 100MB(기본값) ~ 4GB
parquetRowGroupSize int 데이터 형식이 Parquet인 경우에만 관련됩니다. 내보낸 파일의 행 그룹 크기를 제어합니다. 기본 행 그룹 크기는 100,000개의 레코드입니다.
distributed bool 분산 내보내기 사용 안 함 또는 사용 false로 설정하는 것은 배포 힌트와 single 동일합니다. 기본값은 true입니다.
parquetDatetimePrecision string 값을 Parquet으로 내보낼 때 사용할 전체 자릿수를 datetime 지정합니다. 가능한 값은 밀리초 및 마이크로초입니다. 기본값은 밀리초입니다.

인증 및 권한 부여

인증 방법은 제공된 연결 문자열 기반으로 하며 필요한 권한은 인증 방법에 따라 달라집니다.

다음 표에는 지원되는 인증 방법 및 스토리지 유형별로 데이터를 외부 스토리지로 내보내는 데 필요한 권한이 나와 있습니다.

인증 방법 Azure Blob Storage/Data Lake Storage Gen2 Data Lake Storage Gen1
가장 Storage Blob 데이터 Contributor 기여자
공유 액세스 (SAS) 토큰 쓰기 쓰기
Microsoft Entra 액세스 토큰 추가 권한이 필요하지 않음 추가 권한이 필요하지 않음
스토리지 계정 액세스 키 추가 권한이 필요하지 않음 추가 권한이 필요하지 않음

반품

이 명령은 생성된 스토리지 아티팩트를 설명하는 테이블을 반환합니다. 각 레코드는 단일 아티팩트를 설명하고 아티팩트 스토리지 경로와 아티팩트가 보유하는 레코드 수를 포함합니다.

Path NumRecords
http://storage1.blob.core.windows.net/containerName/export_1_d08afcae2f044c1092b279412dcb571b.csv 10
http://storage1.blob.core.windows.net/containerName/export_2_454c0f1359e24795b6529da8a0101330.csv 15

비동기 모드

플래그를 async 지정하면 명령이 비동기 모드로 실행됩니다. 이 모드에서는 명령이 작업 ID를 사용하여 즉시 반환되고 데이터 내보내기가 완료될 때까지 백그라운드에서 계속됩니다. 명령에서 반환된 작업 ID를 사용하여 다음 명령을 통해 진행률 및 궁극적으로 결과를 추적할 수 있습니다.

예를 들어 성공적으로 완료된 후 다음을 사용하여 결과를 검색할 수 있습니다.

.show operation f008dc1e-2710-47d8-8d34-0d562f5f8615 details

예제

이 예제에서 Kusto는 쿼리를 실행한 다음 쿼리에서 생성된 첫 번째 레코드 집합을 압축하기 전에 최대 1GB의 하나 이상의 압축된 CSV Blob으로 내보냅니다. 열 이름 레이블은 각 Blob에 대한 첫 번째 행으로 추가됩니다.

.export
  async compressed
  to csv (
    h@"https://storage1.blob.core.windows.net/containerName;secretKey",
    h@"https://storage1.blob.core.windows.net/containerName2;secretKey"
  ) with (
    sizeLimit=1000000000,
    namePrefix="export",
    includeHeaders="all",
    encoding="UTF8NoBOM"
  )
  <| 
  Logs | where id == "1234" 

내보내기 명령 중 오류

내보내기 명령은 실행 중에 일시적으로 실패할 수 있습니다. 연속 내보내기 명령을 자동으로 다시 시도합니다. 일반 내보내기 명령(스토리지로 내보내기, 외부 테이블로 내보내기)은 재시도를 수행하지 않습니다.

  • 내보내기 명령이 실패하면 스토리지에 이미 기록된 아티팩트가 삭제되지 않습니다. 이러한 아티팩트가 스토리지에 남아 있습니다. 명령이 실패하면 일부 아티팩트가 기록된 경우에도 내보내기가 완료되지 않은 것으로 가정합니다.
  • 명령의 완료와 성공적으로 완료될 때 내보낸 아티팩트 모두를 추적하는 가장 좋은 방법은 명령 및 .show operations 명령을 사용하는 .show operation details 것입니다.

스토리지 오류

기본적으로 내보내기 명령은 스토리지에 대한 많은 동시 쓰기가 있을 수 있도록 배포됩니다. 배포 수준은 내보내기 명령의 유형에 따라 달라집니다.

익스텐트/노드 수가 많으면 스토리지에 대한 부하가 높아 스토리지 제한 또는 일시적인 스토리지 오류가 발생할 수 있습니다. 다음 제안에서는 이러한 오류를 우선 순위에 따라 해결할 수 있습니다.

  • 내보내기 명령 또는 외부 테이블 정의제공된 스토리지 계정 수를 늘입니다. 로드는 계정 간에 균등하게 분산됩니다.

  • 배포 힌트 per_node 를 설정하여 동시성을 줄입니다(명령 속성 참조).

  • 클라이언트 요청 속성을query_fanout_nodes_percent하여 내보내는 노드 수의 동시성을 줄입니다. 내보내기 쿼리의 일부로 속성을 설정할 수 있습니다. 예를 들어 다음 명령은 스토리지에 동시에 쓰는 노드 수를 노드의 50%로 제한합니다.

    .export async  to csv
        ( h@"https://storage1.blob.core.windows.net/containerName;secretKey" ) 
        with
        (
            distribution="per_node"
        ) 
        <| 
        set query_fanout_nodes_percent = 50;
        ExportQuery
    
  • 클라이언트 요청 속성을query_fanout_threads_percent하여 분할된 데이터베이스 내보내기를 사용할 때 각 노드에서 내보내는 스레드 수의 동시성을 줄입니다. 내보내기 쿼리의 일부로 속성을 설정할 수 있습니다. 예를 들어 다음 명령은 각 노드에서 동시에 스토리지에 쓰는 스레드 수를 50%로 제한합니다.

    .export async  to csv
        ( h@"https://storage1.blob.core.windows.net/containerName;secretKey" ) 
        with
        (
            distribution="per_shard"
        ) 
        <| 
        set query_fanout_threads_percent = 50;
        ExportQuery
    
  • 분할된 외부 테이블로 내보내는 경우 속성을 설정 spread/concurrency 하면 동시성을 줄일 수 있습니다(명령 속성세부 정보 참조).

  • 이전 권장 사항 중 어느 것도 작동하지 않으면 distributed 속성을 false로 설정하여 배포를 완전히 사용하지 않도록 설정할 수 있습니다. 그러나 명령 성능에 큰 영향을 줄 수 있으므로 그렇게 하지 않는 것이 좋습니다.

권한 부여 실패

내보내기 명령 중 인증 또는 권한 부여 실패는 스토리지 연결 문자열 제공된 자격 증명이 스토리지에 쓸 수 없는 경우에 발생할 수 있습니다. 내보내기 명령에 대해 사용자가 위임한 SAS 토큰을 사용하거나 사용하는 impersonate 경우 스토리지 계정에 쓰기 위해 Storage Blob 데이터 기여자 역할이 필요합니다. 자세한 내용은 Storage 연결 문자열 참조하세요.

데이터 형식의 매핑

Parquet 데이터 형식 매핑

내보내기에서 Kusto 데이터 형식은 다음 규칙을 사용하여 Parquet 데이터 형식에 매핑됩니다.

Kusto 데이터 형식 Parquet 데이터 형식 Parquet 주석 설명
bool BOOLEAN
datetime INT64 TIMESTAMP_MICROS
dynamic BYTE_ARRAY UTF-8 JSON 문자열로 직렬화됨
guid BYTE_ARRAY UTF-8
int INT32
long INT64
real DOUBLE
string BYTE_ARRAY UTF-8
timespan INT64 틱으로 저장(100나노초 단위) 수
decimal FIXED_LENGTH_BYTE_ARRAY DECIMAL