클라우드 스토리지로 데이터 내보내기
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer
쿼리를 실행하고 스토리지 연결 문자열 지정된 외부 클라우드 스토리지에 첫 번째 결과 집합을 씁니다.
사용 권한
이 명령을 실행하려면 데이터베이스 뷰어 이상의 권한이 있어야 합니다.
구문
.export
[async
] [compressed
] to
OutputDataFormat(
StorageConnectionString [,
...] )
[with
(
PropertyName=
PropertyValue [,
...] ] )
<|
쿼리
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
async |
string |
지정한 경우 명령은 비동기 모드에서 실행됩니다. 비동기 모드를 참조하세요. | |
compressed |
string |
지정된 경우 출력 스토리지 아티팩트가 파일로 .gz 압축됩니다.
compressionType
Parquet 파일을 snappy로 압축하는 데 지원되는 속성을 참조하세요. |
|
OutputDataFormat | string |
✔️ | 명령으로 작성된 스토리지 아티팩트 데이터 형식을 나타냅니다. 지원되는 값은 csv , tsv , json 및 parquet 입니다. |
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 operations
: 진행률을 추적합니다. -
.show operation details
: 완료 결과를 가져옵니다.
예를 들어 성공적으로 완료된 후 다음을 사용하여 결과를 검색할 수 있습니다.
.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
것입니다.
스토리지 오류
기본적으로 내보내기 명령은 스토리지에 대한 많은 동시 쓰기가 있을 수 있도록 배포됩니다. 배포 수준은 내보내기 명령의 유형에 따라 달라집니다.
일반
.export
명령에 대한 기본 분포는per_shard
쓰기를 스토리지로 동시에 내보낼 데이터를 포함하는 모든 익스텐트입니다.외부 테이블 명령으로 내보내기의 기본 분포는
per_node
동시성이 노드 수임을 의미합니다.
익스텐트/노드 수가 많으면 스토리지에 대한 부하가 높아 스토리지 제한 또는 일시적인 스토리지 오류가 발생할 수 있습니다. 다음 제안에서는 이러한 오류를 우선 순위에 따라 해결할 수 있습니다.
내보내기 명령 또는 외부 테이블 정의제공된 스토리지 계정 수를 늘입니다. 로드는 계정 간에 균등하게 분산됩니다.
배포 힌트
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 |
관련 콘텐츠
- 연속 데이터 내보내기
- 스토리지 수집
- 관리 명령 개요
- 외부 테이블로 내보내기
- SQL 테이블로 내보내기