다음을 통해 공유


externaldata 연산자

연산자는 externaldata 해당 스키마가 쿼리 자체에 정의되고 Azure Blob Storage의 Blob 또는 Azure Data Lake Storage의 파일과 같은 외부 스토리지 아티팩트에서 데이터를 읽는 테이블을 반환합니다.

참고 항목

운영자는 externaldata Storage 연결 문자열 아래에 나열된 특정 스토리지 서비스 집합을 지원합니다.

참고 항목

운영자는 externaldata SAS(공유 액세스 서명) 키, 액세스 키 및 Microsoft Entra 토큰 인증 방법을 지원합니다. 자세한 내용은 스토리지 인증 방법을 참조 하세요.

참고 항목

연산자를 externaldata 사용하여 외부 스토리지 아티팩트에서 최대 100MB의 작은 참조 테이블을 검색합니다. 연산자는 대용량 데이터 볼륨용으로 설계되지 않았습니다. 대량의 외부 데이터를 검색하려면 외부 데이터를 사용자 지정 로그로 Log Analytics에 수집하는 것이 좋습니다. 스토리지 아티팩트의 퍼블릭 엔드포인트가 방화벽 뒤에 있는 경우 이 연산자는 지원되지 않습니다.

구문

externaldata(columnName:columnType [, ...] )[ storageConnectionString [, ...] ] [with ( propertyName = propertyValue [, ...])]

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

매개 변수

이름 Type 필수 설명
columnName, columnType string ✔️ 열 이름 및 해당 형식의 목록입니다. 이 목록은 테이블의 스키마를 정의합니다.
storageConnectionString string ✔️ 쿼리할 스토리지 아티팩트 연결 문자열.
propertyName, propertyValue string 스토리지에서 검색된 데이터를 해석하는 방법을 결정하는 선택적 지원 속성 목록입니다.

지원되는 속성

속성 Type 설명
format string 데이터 형식입니다. 지정되지 않은 경우 파일 확장자에서 데이터 형식을 검색하려고 시도합니다. 기본값은 CSV입니다. 모든 수집 데이터 형식이 지원됩니다.
ignoreFirstRecord bool 설정 true하면 모든 파일의 첫 번째 레코드가 무시됩니다. 해당 속성은 헤더를 사용하여 CSV 파일을 쿼리할 때 유용합니다.
ingestionMapping string 원본 파일의 데이터를 연산자 결과 집합의 실제 열에 매핑하는 방법을 나타냅니다. 데이터 매핑을 참조하세요.

참고 항목

이 연산자는 파이프라인 입력을 허용하지 않습니다.

표준 쿼리 제한은 외부 데이터 쿼리에도 적용됩니다.

반품

연산자는 externaldata 지정된 스토리지 아티팩트에서 데이터를 구문 분석한 지정된 스키마의 데이터 테이블을 반환하며 스토리지 연결 문자열 표시됩니다.

예제

Azure Blob Storage에 저장된 사용자 ID 목록 가져오기

다음 예제에서는 열이 외부 스토리지 파일에서 보류된 UserID (줄당 하나씩) 알려진 ID 집합에 속하는 테이블의 모든 레코드를 찾는 방법을 보여 줍니다. 데이터 형식이 지정되지 않았으므로 검색된 데이터 형식은 .입니다 TXT.

Users
| where UserID in ((externaldata (UserID:string) [
    @"https://storageaccount.blob.core.windows.net/storagecontainer/users.txt" 
      h@"?...SAS..." // Secret token needed to access the blob
    ]))
| ...

여러 데이터 파일 쿼리

다음 예제에서는 외부 스토리지에 저장된 여러 데이터 파일을 쿼리합니다.

externaldata(Timestamp:datetime, ProductId:string, ProductDescription:string)
[
  h@"https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00000-7e967c99-cf2b-4dbb-8c53-ce388389470d.csv.gz?...SAS...",
  h@"https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/02/part-00000-ba356fa4-f85f-430a-8b5a-afd64f128ca4.csv.gz?...SAS...",
  h@"https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/03/part-00000-acb644dc-2fc6-467c-ab80-d1590b23fc31.csv.gz?...SAS..."
]
with(format="csv")
| summarize count() by ProductId

위의 예제는 외부 테이블을 정의하지 않고 여러 데이터 파일을 쿼리하는 빠른 방법으로 생각할 수 있습니다.

참고 항목

데이터 분할은 운영자가 인식할 수 externaldata 없습니다.

계층적 데이터 형식 쿼리

와 같은 JSONORCParquetAvroingestionMapping 계층적 데이터 형식을 쿼리하려면 연산자 속성에 지정해야 합니다. 이 예제에서는 다음 내용이 포함된 JSON 파일이 Azure Blob Storage에 저장됩니다.

{
  "timestamp": "2019-01-01 10:00:00.238521",   
  "data": {    
    "tenant": "e1ef54a6-c6f2-4389-836e-d289b37bcfe0",   
    "method": "RefreshTableMetadata"   
  }   
}   
{
  "timestamp": "2019-01-01 10:00:01.845423",   
  "data": {   
    "tenant": "9b49d0d7-b3e6-4467-bb35-fa420a25d324",   
    "method": "GetFileList"   
  }   
}
...

연산자를 externaldata 사용하여 이 파일을 쿼리하려면 데이터 매핑을 지정해야 합니다. 매핑은 JSON 필드를 연산자 결과 집합 열에 매핑하는 방법을 나타냅니다.

externaldata(Timestamp: datetime, TenantId: guid, MethodName: string)
[ 
   h@'https://mycompanystorage.blob.core.windows.net/events/2020/09/01/part-0000046c049c1-86e2-4e74-8583-506bda10cca8.json?...SAS...'
]
with(format='multijson', ingestionMapping='[{"Column":"Timestamp","Properties":{"Path":"$.timestamp"}},{"Column":"TenantId","Properties":{"Path":"$.data.tenant"}},{"Column":"MethodName","Properties":{"Path":"$.data.method"}}]')

MultiJSON 이 형식은 단일 JSON 레코드가 여러 줄로 확장되기 때문에 여기에 사용됩니다.

매핑 구문에 대한 자세한 내용은 데이터 매핑을 참조하세요.