다음을 통해 공유


infer_storage_schema 플러그 인

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

이 플러그 인은 외부 데이터의 스키마를 유추하고 CSL 스키마 문자열로 반환합니다. 외부 테이블을 만들 때 문자열을 사용할 수 있습니다. 플러그 인은 연산자를 사용하여 호출됩니다 evaluate .

인증 및 권한 부여

요청속성에서 액세스할 스토리지 연결 문자열 지정합니다. 각 스토리지 연결 문자열 스토리지에 액세스하는 데 사용할 권한 부여 방법을 지정합니다. 권한 부여 방법에 따라 스키마 유추를 수행하려면 보안 주체에게 외부 스토리지에 대한 권한을 부여해야 할 수 있습니다.

다음 표에서는 지원되는 인증 방법 및 스토리지 유형별 필요한 사용 권한을 나열합니다.

인증 방법 Azure Blob Storage/Data Lake Storage Gen2 Data Lake Storage Gen1
가장 Storage Blob 데이터 읽기 권한자 판독기
공유 액세스 (SAS) 토큰 목록 + 읽기 이 인증 방법은 Gen1에서 지원되지 않습니다.
Microsoft Entra 액세스 토큰
스토리지 계정 액세스 키 이 인증 방법은 Gen1에서 지원되지 않습니다.

구문

evaluateinfer_storage_schema( 옵션 )

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

매개 변수

이름 Type 필수 설명
옵션 dynamic ✔️ 요청의 속성을 지정하는 속성 모음입니다.

요청의 지원되는 속성

속성 Type 필수 설명
StorageContainers dynamic ✔️ 저장된 데이터 아티팩트용 접두사 URI를 나타내는 스토리지 연결 문자열 배열입니다.
DataFormat string ✔️ 지원되는 데이터 형식 중 하나입니다.
FileExtension string 지정된 경우 함수는 이 파일 확장으로 끝나는 파일만 검색합니다. 확장을 지정하면 프로세스 속도가 빨라지거나 데이터 읽기 문제가 제거됩니다.
FileNamePrefix string 지정된 경우 함수는 이 접두사로 시작하는 파일만 검색합니다. 접두사를 지정하면 프로세스 속도가 빨라질 수 있습니다.
모드 string 스키마 유추 전략입니다. 값: any, . lastall 이 함수는 처음 찾은 파일, 마지막으로 쓴 파일 또는 모든 파일에서 각각 데이터 스키마를 유추합니다. 기본값은 last입니다.
InferenceOptions dynamic 더 많은 유추 옵션. 유효한 옵션: UseFirstRowAsHeader 구분된 파일 형식의 경우. 예: 'InferenceOptions': {'UseFirstRowAsHeader': true}.

반품

플러그 인은 infer_storage_schema CSL 스키마 문자열을 포함하는 단일 행/열을 포함하는 단일 결과 테이블을 반환합니다.

참고 항목

  • 스토리지 컨테이너 URI 비밀 키에는 읽기 외에도 목록에 대한 권한이 있어야 합니다.
  • 스키마 유추 전략 'all'은 찾은 모든 아티팩트를 읽고 스키마를 병합하는 것을 의미하므로 매우 "비용이 많이 드는" 작업입니다.
  • 일부 반환된 형식은 잘못된 형식 추측(또는 스키마 병합 프로세스의 결과로)의 결과로 실제 형식이 아닐 수 있습니다. 따라서 외부 테이블을 만들기 전에 결과를 신중하게 검토해야 합니다.

예시

let options = dynamic({
  'StorageContainers': [
    h@'https://storageaccount.blob.core.windows.net/MobileEvents;secretKey'
  ],
  'FileExtension': '.parquet',
  'FileNamePrefix': 'part-',
  'DataFormat': 'parquet'
});
evaluate infer_storage_schema(options)

출력

CslSchema
app_id:string, user_id:long, event_time:datetime, country:string, city:string, device_type:string, device_vendor:string, ad_network:string, campaign:string, site_id:string, event_type:string, event_name:string, organic:string, days_from_install:int, revenue:real

외부 테이블 정의에서 반환된 스키마를 사용합니다.

.create external table MobileEvents(
    app_id:string, user_id:long, event_time:datetime, country:string, city:string, device_type:string, device_vendor:string, ad_network:string, campaign:string, site_id:string, event_type:string, event_name:string, organic:string, days_from_install:int, revenue:real
)
kind=blob
partition by (dt:datetime = bin(event_time, 1d), app:string = app_id)
pathformat = ('app=' app '/dt=' datetime_pattern('yyyyMMdd', dt))
dataformat = parquet
(
    h@'https://storageaccount.blob.core.windows.net/MovileEvents;secretKey'
)