연속 데이터 내보내기 개요
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer
이 문서에서는 주기적으로 실행되는 쿼리를 사용하여 Kusto에서 외부 테이블로 데이터를 지속적으로 내보내는 방법을 설명합니다. 결과는 Azure Blob Storage와 같은 대상 및 내보낸 데이터의 스키마를 정의하는 외부 테이블에 저장됩니다. 이 프로세스는 일부 예외를 제외하고 모든 레코드를 "정확히 한 번" 내보냅니다.
기본적으로 연속 내보내기에서는 모든 노드가 동시에 내보내는 분산 모드에서 실행되므로 아티팩트 수는 노드 수에 따라 달라집니다. 연속 내보내기는 짧은 대기 시간 스트리밍 데이터를 위해 설계되지 않았습니다.
연속 데이터 내보내기를 사용하도록 설정하려면 외부 테이블을 만든 다음 외부 테이블을 가리키는 연속 내보내기 정의를 만듭니다.
경우에 따라 관리 ID를 사용하여 연속 내보내기 작업을 성공적으로 구성해야 합니다. 자세한 내용은 관리 ID를 사용하여 연속 내보내기 작업을 실행합니다.
사용 권한
모든 연속 내보내기 명령에는 적어도 데이터베이스 관리자 권한이 필요합니다.
연속 내보내기 지침
출력 스키마:
- 내보내기 쿼리의 출력 스키마는 내보내는 외부 테이블의 스키마와 일치해야 합니다.
빈도:
연속 내보내기 실행은 속성에
intervalBetweenRuns
구성된 기간에 따라 실행됩니다. 이 간격에 권장되는 값은 허용하려는 대기 시간에 따라 적어도 몇 분입니다. 수집 속도가 높은 경우 시간 간격은 1분만큼 낮을 수 있습니다.참고 항목
권장
intervalBetweenRuns
사항으로만 사용되며 정확하지는 않습니다. 연속 내보내기가 정기적인 집계를 내보내는 데 적합하지 않습니다. 예를 들어 시간별 집계(intervalBetweenRuns
)를=1h
T | summarize by bin(Timestamp, 1h)
사용하는 구성은 예상대로 작동하지 않습니다. 연속 내보내기가 시간에 정확히 실행되지 않기 때문에. 따라서 각 시간별 bin은 내보낸 데이터의 여러 항목을 받습니다.
파일 수:
- 각 연속 내보내기 반복에서 내보낸 파일 수는 외부 테이블이 분할되는 방법에 따라 달라집니다. 자세한 내용은 외부 테이블로 내보내기 명령을 참조 하세요. 각 연속 내보내기 반복은 항상 새 파일에 쓰고 기존 파일에 추가되지 않습니다. 따라서 내보낸 파일 수도 연속 내보내기가 실행되는 빈도에 따라 달라집니다. frequency 매개 변수는 .입니다
intervalBetweenRuns
.
- 각 연속 내보내기 반복에서 내보낸 파일 수는 외부 테이블이 분할되는 방법에 따라 달라집니다. 자세한 내용은 외부 테이블로 내보내기 명령을 참조 하세요. 각 연속 내보내기 반복은 항상 새 파일에 쓰고 기존 파일에 추가되지 않습니다. 따라서 내보낸 파일 수도 연속 내보내기가 실행되는 빈도에 따라 달라집니다. frequency 매개 변수는 .입니다
외부 테이블 스토리지 계정:
- 최상의 성능을 위해 데이터베이스와 스토리지 계정은 동일한 Azure 지역에 공동 배치되어야 합니다.
- 연속 내보내기 기능은 모든 노드가 동시에 내보내는 분산 방식으로 작동합니다. 큰 데이터베이스에서 내보낸 데이터 볼륨이 큰 경우 스토리지 제한이 발생할 수 있습니다. 외부 테이블에 대해 여러 스토리지 계정을 구성하는 것이 좋습니다. 자세한 내용은 내보내기 명령동안
스토리지 오류를 참조하세요.
정확히 한 번 내보내기
"정확히 한 번" 내보내기를 보장하기 위해 연속 내보내기는 데이터베이스 커서를 사용합니다. 연속 내보내기 쿼리에는 타임스탬프 필터가 포함되어서는 안 됩니다. 데이터베이스 커서 메커니즘은 레코드가 두 번 이상 처리되지 않도록 합니다. 쿼리에 타임스탬프 필터를 추가하면 내보낸 데이터의 데이터가 누락될 수 있습니다.
내보내기에서 "정확히 한 번" 처리해야 하는 쿼리에서 참조되는 모든 테이블에서 IngestionTime 정책을 사용하도록 설정해야 합니다. 정책은 새로 만든 모든 테이블에서 기본적으로 사용하도록 설정됩니다.
"정확히 한 번" 내보내기를 보장하는 것은 내보내는 아티팩트 표시 명령에 보고된 파일에만 해당합니다. 연속 내보내기는 각 레코드가 외부 테이블에 한 번만 기록되도록 보장하지 않습니다. 내보내기가 시작된 후 오류가 발생하고 일부 아티팩트가 이미 외부 테이블에 기록된 경우 외부 테이블에 중복 항목이 포함될 수 있습니다. 쓰기 작업이 완료되기 전에 중단된 경우 외부 테이블에 손상된 파일이 포함될 수 있습니다. 이러한 경우 아티팩트가 외부 테이블에서 삭제되지는 않지만 내보낸 아티팩트 표시 명령show exported artifacts command
사용하면 중복 및 손상이 보장되지 않습니다.
팩트 및 차원 테이블에서 내보내기
기본적으로 내보내기 쿼리에서 참조되는 모든 테이블은 팩트 테이블로 간주됩니다. 따라서 데이터베이스 커서로 범위가 지정됩니다. 구문은 범위가 지정된 테이블(팩트)과 범위가 지정되지 않은 테이블(차원)을 명시적으로 선언합니다.
over
자세한 내용은 create 명령의 매개 변수를 참조하세요.
내보내기 쿼리에는 이전 내보내기 실행 이후 조인된 레코드만 포함됩니다. 내보내기 쿼리에는 차원 테이블의 모든 레코드가 모든 내보내기 쿼리에 포함된 차원 테이블이 포함될 수 있습니다. 연속 내보내기에서 팩트 테이블과 차원 테이블 간의 조인을 사용하는 경우 팩트 테이블의 레코드는 한 번만 처리됩니다. 일부 키에 대해 차원 테이블의 레코드가 누락된 동안 내보내기가 실행되는 경우 해당 키에 대한 레코드가 누락되거나 내보낸 파일의 차원 열에 대한 null 값이 포함됩니다. 누락된 레코드 또는 null 레코드를 반환하는 것은 쿼리에서 내부 또는 외부 조인을 사용하는지 여부에 따라 달라집니다. 연속 내보내기 정의의 속성은 forcedLatency
팩트 및 차원 테이블이 일치하는 레코드에 대해 동시에 수집되는 경우에 유용할 수 있습니다.
참고 항목
차원 테이블만 연속 내보내는 것은 지원되지 않습니다. 내보내기 쿼리에는 하나 이상의 팩트 테이블이 포함되어야 합니다.
연속 내보내기 모니터링
다음 내보내기 메트릭을 사용하여 연속 내보내기 작업의 상태를 모니터링합니다.
-
Continuous export max lateness
- 데이터베이스에서 연속 내보내기의 최대 대기 시간(분)입니다. 현재와 데이터베이스의 모든 연속 내보내기 작업의 최소ExportedTo
시간 사이의 시간입니다. 자세한 내용은 명령을 참조.show continuous export
하세요. -
Continuous export result
- 각 연속 내보내기 실행의 성공/실패 결과입니다. 이 메트릭은 연속 내보내기 이름으로 분할할 수 있습니다.
명령을 .show continuous export failures
사용하여 연속 내보내기 작업의 특정 오류를 확인합니다.
Warning
영구 오류로 인해 7일 이상 연속 내보내기가 실패하면 시스템에서 내보내기를 자동으로 사용하지 않도록 설정합니다.
영구 오류는 다음과 같습니다. 외부 테이블을 찾을 수 없음, 연속 내보내기 쿼리의 스키마와 외부 테이블 스키마 간의 불일치, 스토리지 계정에 액세스할 수 없습니다.
오류가 해결된 후 명령을 사용하여 .enable continuous export
연속 내보내기를 다시 사용하도록 설정할 수 있습니다.
리소스 사용량
- 연속 내보내기가 데이터베이스에 미치는 영향은 연속 내보내기가 실행 중인 쿼리에 따라 달라집니다. CPU 및 메모리와 같은 대부분의 리소스는 쿼리 실행에 사용됩니다.
- 동시에 실행할 수 있는 내보내기 작업의 수는 데이터베이스의 데이터 내보내기 용량에 의해 제한됩니다. 자세한 내용은 관리 명령 제한을 참조 하세요. 데이터베이스에 모든 연속 내보내기를 처리할 수 있는 충분한 용량이 없는 경우 일부는 뒤쳐지지 않습니다.
-
명령 및 쿼리 표시 명령을 사용하여 리소스 사용량을 예측할 수 있습니다.
-
| where ClientActivityId startswith "RunContinuousExports"
연속 내보내기와 연결된 명령 및 쿼리를 보려면 필터링합니다.
-
기록 데이터 내보내기
연속 내보내기가 생성 시점부터만 데이터 내보내기를 시작합니다. 해당 시간 이전에 수집된 레코드는 비연속 내보내기 명령을 사용하여 별도로 내보내야 합니다. 기록 데이터가 너무 커서 단일 내보내기 명령으로 내보낼 수 없을 수 있습니다. 필요한 경우 쿼리를 여러 개의 작은 일괄 처리로 분할합니다.
연속 내보내기에서 내보낸 데이터와 중복되지 않도록 하려면 연속 내보내기 표시 명령StartCursor
반환된 데이터를 사용하고 내보내기만 커서 값을 기록 where cursor_before_or_at
합니다. 예시:
.show continuous-export MyExport | project StartCursor
StartCursor |
---|
636751928823156645 |
이 뒤에는 다음과 같은 내용이 있습니다.
.export async to table ExternalBlob
<| T | where cursor_before_or_at("636751928823156645")
행 수준 보안이 있는 테이블에서 연속 내보내기
행 수준 보안 정책을 사용하여 테이블을 참조하는 쿼리를 사용하여 연속 내보내기 작업을 만들려면 다음을 수행해야 합니다.
- 연속 내보내기 구성의 일부로 관리 ID를 제공합니다. 자세한 내용은 관리 ID를 사용하여 연속 내보내기 작업을 실행합니다.
- 데이터를 내보낼 외부 테이블에 가장 인증을 사용합니다.
델타 테이블로 연속 내보내기 - 미리 보기
델타 테이블로 연속 내보내기는 현재 미리 보기로 제공됩니다.
델타 테이블에 대한 연속 내보내기를 정의하려면 다음 단계를 수행합니다.
Azure Storage의 델타 외부 테이블 만들기 및 변경에 설명된 대로 외부 델타 테이블을 만듭니다.
참고 항목
스키마가 제공되지 않으면 Kusto는 대상 스토리지 컨테이너에 이미 정의된 델타 테이블이 있는 경우 자동으로 유추를 시도합니다.
델타 테이블 분할은 지원되지 않습니다.연속 내보내기 만들기 또는 변경에 설명된 명령을 사용하여 이 테이블로 연속 내보내기를 정의합니다.
Important
델타 테이블의 스키마는 연속 내보내기 쿼리와 동기화되어야 합니다. 기본 델타 테이블이 변경되면 내보내기가 예기치 않은 동작으로 실패하기 시작할 수 있습니다.
제한 사항
일반:
- 대상 테이블에
CSV
TSV
JSON
Parquet
는 다음 형식이 허용됩니다. - 연속 내보내기는 구체화된 뷰가 업데이트될 수 있지만 스토리지로 내보낸 데이터는 항상 추가되고 업데이트되지 않으므로 구체화된 뷰대해 작동하도록 설계되지 않았습니다.
- 팔로워 데이터베이스는 읽기 전용이고 연속 내보내기는 쓰기 작업이 필요하므로
팔로워 데이터베이스에서는 연속 내보내기를 만들 수 없습니다. - 원본 테이블의 레코드는 업데이트 정책을 사용하거나 쿼리 명령에서 수집하여 테이블에 직접 수집해야 합니다. .move 익스텐트 또는 .rename 테이블을 사용하여 레코드를 테이블로 이동하는 경우 연속 내보내기가 이러한 레코드를 처리하지 않을 수 있습니다. 데이터베이스 커서 페이지에 설명된 제한 사항을 참조하세요.
- 연속 내보내기에서 사용되는 아티팩트가 Event Grid 알림을 트리거하도록 의도된 경우 Event Grid 설명서의 알려진 문제 섹션을 참조하세요.
데이터베이스 간 및 클러스터 간:
- 연속 내보내기에서는 클러스터 간 호출을 지원하지 않습니다.
- 연속 내보내기에서는 차원 테이블에 대해서만 데이터베이스 간 호출을 지원합니다. 모든 팩트 테이블은 로컬 데이터베이스에 있어야 합니다. 팩트 및 차원 테이블에서 내보내기에서 자세한 내용을 참조하세요.
- 연속 내보내기가 데이터베이스 간 호출을 포함하는 경우 관리 ID로 구성해야 합니다.
데이터베이스 간 및 이벤트 하우스 간:
- 연속 내보내기에서는 Eventhouse 간 호출을 지원하지 않습니다.
- 연속 내보내기에서는 차원 테이블에 대해서만 데이터베이스 간 호출을 지원합니다. 모든 팩트 테이블은 로컬 데이터베이스에 있어야 합니다. 팩트 및 차원 테이블에서 내보내기에서 자세한 내용을 참조하세요.
정책:
- 특정 조건이 충족되지 않는 한 행 수준 보안 정책이 있는 테이블에서 연속 내보내기를 사용하도록 설정할 수 없습니다. 자세한 내용은 행 수준 보안이 있는 테이블에서 연속 내보내기를 참조하세요.
- 제한된 보기 액세스 정책이 있는 테이블에서 연속 내보내기를 구성할 수 없습니다.
관련 콘텐츠
- 연속 내보내기 .create 또는 변경
- 외부 테이블
- 연속 내보내기 .create 또는 변경
- 외부 테이블
- 관리 ID를 사용하여 연속 내보내기 작업 실행