다음을 통해 공유


CLI(v2) MLtable YAML 스키마

적용 대상: Azure CLI ml 확장 v2(현재)

에서 원본 JSON 스키마를 https://azuremlschemas.azureedge.net/latest/MLTable.schema.json찾을 수 있습니다.

참고 항목

이 문서에 자세히 설명된 YAML 구문은 최신 버전의 ML CLI v2 확장에 대한 JSON 스키마를 기반으로 합니다. 이 구문은 최신 버전의 ML CLI v2 확장에서만 작동하도록 보장됩니다. https://azuremlschemasprod.azureedge.net/에서 이전 확장 버전에 대한 스키마를 찾을 수 있습니다.

파일을 작성하는 MLTable 방법

이 문서에서는 YAML 스키마에 MLTable 대한 정보만 제공합니다. MLTable에 대한 자세한 내용은 다음을 포함합니다.

  • MLTable 파일 작성
  • MLTable 아티팩 만들기
  • Pandas 및 Spark에서 소비
  • 엔드 투 엔드 예제

Azure Machine Learning에서 테이블 작업을 방문하세요.

YAML 구문

형식 설명 허용된 값 기본값
$schema string YAML 스키마입니다. Azure Machine Learning Visual Studio Code 확장을 사용하여 YAML 파일을 작성하는 경우 파일 맨 위에 포함하는 $schema 경우 스키마 및 리소스 완성을 호출할 수 있습니다.
type const mltable 는 테이블 형식 데이터에 대한 스키마 정의를 추상화합니다. 데이터 소비자는 테이블을 Pandas/Dask/Spark 데이터 프레임으로 보다 쉽게 구체화할 수 있습니다. mltable mltable
paths 배열 경로는 경로, folder 경로 또는 pattern 경로일 수 file 있습니다. pattern와일드카드 문자(*, ?, [abc][a-z])를 사용하여 파일 이름 집합을 지정하는 globbing 패턴을 지원합니다. 지원되는 URI 형식: azureml, https, wasbs, abfssadl. URI 형식 사용에 azureml:// 대한 자세한 내용은 Core yaml 구문을 방문하세요. file
folder
pattern
transformations 배열 정의된 경로에서 로드된 데이터에 적용되는 정의된 변환 시퀀스입니다. 자세한 내용은 변환을 방문하세요. read_delimited
read_parquet
read_json_lines
read_delta_lake
take
take_random_sample
drop_columns
keep_columns
convert_column_types
skip
filter
extract_columns_from_partition_format

변환

읽기 변환

읽기 변환 설명 매개 변수
read_delimited 제공된 구분된 텍스트 파일을 읽는 변환 단계를 추가합니다. paths infer_column_types: 열 데이터 형식을 유추하는 부울입니다. 기본값은 True입니다. 형식 유추를 사용하려면 현재 컴퓨팅에서 데이터 원본에 액세스할 수 있어야 합니다. 현재 형식 유추는 처음 200개 행만 끌어오고 있습니다.

encoding: 파일 인코딩을 지정합니다. 지원되는 인코딩: utf8, ,iso88591latin1, ascii, utf16, utf32utf8bomwindows1252. 기본 인코딩: utf8.

header: 사용자가 다음 옵션 중 하나를 선택할 수 있습니다. no_headerfrom_first_fileall_files_different_headersall_files_same_headers 기본값은 all_files_same_headers입니다.

delimiter: 열을 분할하는 구분 기호입니다.

empty_as_string: 빈 필드 값이 빈 문자열로 로드되어야 하는지 지정합니다. 기본값(False)은 빈 필드 값을 null로 읽습니다. 이 설정을 True전달하면 빈 필드 값이 빈 문자열로 읽힙니다. 숫자 또는 날짜/시간 데이터 형식으로 변환된 값의 경우 빈 값이 null로 변환되므로 이 설정은 효과가 없습니다.

include_path_column: 경로 정보를 테이블의 열로 유지하는 부울입니다. 기본값은 False입니다. 이 설정은 여러 파일을 읽을 때 도움이 되며 특정 레코드에 대한 원래 파일을 알고 싶습니다. 또한 파일 경로에 유용한 정보를 유지할 수 있습니다.

support_multi_line: 기본적으로(support_multi_line=False) 따옴표 붙은 필드 값의 줄 바꿈을 비롯한 모든 줄 바꿈은 레코드 나누기로 해석됩니다. 데이터 읽기에 대한 이 접근 방식은 속도를 높이고 여러 CPU 코어에서 병렬 실행을 최적화합니다. 그러나 필드 값이 잘못 정렬되어 더 많은 레코드가 자동으로 생성될 수 있습니다. 구분된 True 파일이 따옴표로 묶인 줄 바꿈을 포함하는 것으로 알려진 경우 이 값을 설정합니다.
read_parquet 제공된 Parquet 형식 파일을 읽는 변환 단계를 추가합니다. paths include_path_column: 경로 정보를 테이블 열로 유지하는 부울입니다. 기본값은 False입니다. 이 설정은 여러 파일을 읽을 때 도움이 되며 특정 레코드에 대한 원래 파일을 알고자 합니다. 또한 파일 경로에 유용한 정보를 유지할 수 있습니다.

참고: MLTable은 기본 형식으로 구성된 열이 있는 parquet 파일의 읽기만 지원합니다. 배열을 포함하는 열은 지원되지 않습니다 .
read_delta_lake 제공된 Delta Lake 폴더를 읽는 변환 단계를 추가합니다 paths. 특정 타임스탬프 또는 버전에서 데이터를 읽을 수 있습니다. timestamp_as_of:문자열. 특정 Delta Lake 데이터에 대한 시간 이동에 대해 지정되는 타임스탬프입니다. 특정 시점의 데이터를 읽으려면 datetime 문자열에 RFC-3339/ISO-8601 형식 이 있어야 합니다(예: "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").

version_as_of:정수. 특정 Delta Lake 데이터에 대한 시간 이동에 대해 지정되는 버전입니다.

다음 값 중 하나를 제공해야 합니다.timestamp_as_ofversion_as_of
read_json_lines 제공된 json 파일을 읽는 변환 단계를 추가합니다. paths include_path_column: 경로 정보를 MLTable 열로 유지하기 위한 부울입니다. 기본값은 False입니다. 이 설정은 여러 파일을 읽을 때 도움이 되며 특정 레코드에 대한 원래 파일을 알고자 합니다. 또한 파일 경로에 유용한 정보를 유지할 수 있습니다.

invalid_lines: 잘못된 JSON이 있는 줄을 처리하는 방법을 결정합니다. 지원되는 값: errordrop. 기본값은 error입니다.

encoding: 파일 인코딩을 지정합니다. 지원되는 인코딩: utf8, ,iso88591latin1, ascii, utf16, utf32utf8bomwindows1252. 기본값은 utf8입니다.

기타 변환

변환 설명 매개 변수 예시
convert_column_types 지정된 열을 지정된 각각의 새 형식으로 변환하는 변환 단계를 추가합니다. columns
변환할 열 이름의 배열

column_type
변환할 형식(int, , floatstring, booleandatetime)
- convert_column_types:
   - 열: [Age]
     column_type: int

Age 열을 정수로 변환합니다.

- convert_column_types:
   - 열: date
     column_type:
         datetime:
            형식:
            - "%d/%m/%Y"

날짜 열을 형식 dd/mm/yyyy으로 변환합니다. datetime 변환에 대한 자세한 내용을 읽어보세요 to_datetime .

- convert_column_types:
   - 열: [is_weekday]
     column_type:
         부울:
            true_values:['yes', 'true', '1']
            false_values:['no', 'false', '0']

is_weekday 열을 부울로 변환합니다. 열 맵의 yes/true/1 값과 열 맵TrueFalse의 no/false/0 값이 입니다. 부울 변환에 대한 자세한 내용을 읽어보세요 to_bool .
drop_columns 데이터 세트에서 특정 열을 제거하는 변환 단계를 추가합니다. 삭제할 열 이름의 배열 - drop_columns: ["col1", "col2"]
keep_columns 지정된 열을 유지하고 데이터 세트에서 다른 모든 열을 제거하는 변환 단계를 추가합니다. 보존할 열 이름의 배열 - keep_columns: ["col1", "col2"]
extract_columns_from_partition_format 변환 단계를 추가하여 각 경로의 파티션 정보를 사용한 다음 지정된 파티션 형식에 따라 열로 추출합니다. 사용할 파티션 형식 - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} 는 datetime 열을 만듭니다. 여기서 'yyyy', 'MM', 'dd', 'HH', 'mm' 및 'ss'는 datetime 형식에 대한 연도, 월, 일, 시간, 분 및 두 번째 값을 추출하는 데 사용됩니다.
filter 지정된 식과 일치하는 레코드만 남겨두고 데이터를 필터링합니다. 문자열로 식 - filter: 'col("temperature") > 32 and col("location") == "UK"'
온도가 32를 초과하는 행만 남겨두고 영국은 위치입니다.
skip 이 MLTable의 첫 번째 개수 행을 건너뛰는 변환 단계를 추가합니다. 건너뛸 행 수 - skip: 10
처음 10개 행 건너뛰기
take 변환 단계를 추가하여 이 MLTable의 첫 번째 개수 행을 선택합니다. 테이블 맨 위에서 취할 행 수입니다. - take: 5
처음 5개 행을 사용합니다.
take_random_sample 확률 확률을 사용하여 이 MLTable의 각 행을 임의로 선택하는 변환 단계를 추가합니다. probability
개별 행을 선택할 확률입니다. 범위 [0,1]에 있어야 합니다.

seed
선택적 임의 시드
- take_random_sample:
   probability: 0.10
   시드:123

123의 임의 시드를 사용하여 행의 10% 임의 샘플 사용

예제

MLTable 사용의 예입니다. 다음에서 더 많은 예제를 찾습니다.

빠른 시작

이 빠른 시작에서는 공용 https 서버에서 유명한 홍채 데이터 세트를 읽습니다. 계속하려면 폴더에 MLTable 파일을 배치해야 합니다. 먼저 다음을 사용하여 폴더 및 MLTable 파일을 만듭니다.

mkdir ./iris
cd ./iris
touch ./MLTable

다음으로, 이 콘텐츠를 파일에 배치합니다.MLTable

$schema: https://azuremlschemas.azureedge.net/latest/MLTable.schema.json

type: mltable
paths:
    - file: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv

transformations:
    - read_delimited:
        delimiter: ','
        header: all_files_same_headers
        include_path_column: true

그런 다음 다음을 사용하여 Pandas로 구체화할 수 있습니다.

Important

Python SDK가 mltable 설치되어 있어야 합니다. 다음을 사용하여 이 SDK를 설치합니다.

pip install mltable.

import mltable

tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()

데이터에 새 Path열이 포함되어 있는지 확인합니다. 이 열에는 데이터 경로가 https://azuremlexamples.blob.core.windows.net/datasets/iris.csv 포함됩니다.

CLI는 데이터 자산을 만들 수 있습니다.

az ml data create --name iris-from-https --version 1 --type mltable --path ./iris

클라우드 MLTable 스토리지(기본 Azure Machine Learning 데이터 저장소)에 자동으로 업로드되는 폴더입니다.

Azure Machine Learning 데이터 자산은 웹 브라우저 책갈피(즐겨찾기)와 비슷합니다. 가장 자주 사용되는 데이터를 가리키는 긴 URI(스토리지 경로)를 기억하는 대신 데이터 자산을 만든 다음 친숙한 이름으로 해당 자산에 액세스할 수 있습니다.

구분된 텍스트 파일

$schema: https://azuremlschemas.azureedge.net/latest/MLTable.schema.json
type: mltable

# Supported paths include:
# local: ./<path>
# blob: wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
# Public http(s) server: https://<url>
# ADLS gen2: abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/
# Datastore: azureml://subscriptions/<subid>/resourcegroups/<rg>/workspaces/<ws>/datastores/<datastore_name>/paths/<path>

paths:
  - file: abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/ # a specific file on ADLS
  # additional options
  # - folder: ./<folder> a specific folder
  # - pattern: ./*.csv # glob all the csv files in a folder

transformations:
    - read_delimited:
        encoding: ascii
        header: all_files_same_headers
        delimiter: ","
        include_path_column: true
        empty_as_string: false
    - keep_columns: [col1, col2, col3, col4, col5, col6, col7]
    # or you can drop_columns...
    # - drop_columns: [col1, col2, col3, col4, col5, col6, col7]
    - convert_column_types:
        - columns: col1
          column_type: int
        - columns: col2
          column_type:
            datetime:
                formats:
                    - "%d/%m/%Y"
        - columns: [col1, col2, col3] 
          column_type:
            boolean:
                mismatch_as: error
                true_values: ["yes", "true", "1"]
                false_values: ["no", "false", "0"]
      - filter: 'col("col1") > 32 and col("col7") == "a_string"'
      # create a column called timestamp with the values extracted from the folder information
      - extract_columns_from_partition_format: {timestamp:yyyy/MM/dd}
      - skip: 10
      - take_random_sample:
          probability: 0.50
          seed: 1394
      # or you can take the first n records
      # - take: 200

Parquet

$schema: https://azuremlschemas.azureedge.net/latest/MLTable.schema.json
type: mltable

# Supported paths include:
# local: ./<path>
# blob: wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
# Public http(s) server: https://<url>
# ADLS gen2: abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/
# Datastore: azureml://subscriptions/<subid>/resourcegroups/<rg>/workspaces/<ws>/datastores/<datastore_name>/paths/<path>

paths:
  - pattern: azureml://subscriptions/<subid>/resourcegroups/<rg>/workspaces/<ws>/datastores/<datastore_name>/paths/<path>/*.parquet
  
transformations:
  - read_parquet:
        include_path_column: false
  - filter: 'col("temperature") > 32 and col("location") == "UK"'
  - skip: 1000 # skip first 1000 rows
  # create a column called timestamp with the values extracted from the folder information
  - extract_columns_from_partition_format: {timestamp:yyyy/MM/dd}

Delta Lake

$schema: https://azuremlschemas.azureedge.net/latest/MLTable.schema.json
type: mltable

# Supported paths include:
# local: ./<path>
# blob: wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
# Public http(s) server: https://<url>
# ADLS gen2: abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/
# Datastore: azureml://subscriptions/<subid>/resourcegroups/<rg>/workspaces/<ws>/datastores/<datastore_name>/paths/<path>

paths:
- folder: abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>/

# NOTE: for read_delta_lake, you are *required* to provide either
# timestamp_as_of OR version_as_of.
# timestamp should be in RFC-3339/ISO-8601 format (for example:
# "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00",
# "2022-10-01T01:30:00-08:00")
# To get the latest, set the timestamp_as_of at a future point (for example: '2999-08-26T00:00:00Z')

transformations:
 - read_delta_lake:
      timestamp_as_of: '2022-08-26T00:00:00Z'
      # alternative:
      # version_as_of: 1   

Important

제한 사항: mltable Delta Lake에서 데이터를 읽을 때 파티션 키 추출을 지원하지 않습니다. mltable을 통해 Delta Lake 데이터를 읽는 경우 mltable 변환 extract_columns_from_partition_format이 작동하지 않습니다.

JSON

$schema: https://azuremlschemas.azureedge.net/latest/MLTable.schema.json
paths:
  - file: ./order_invalid.jsonl
transformations:
  - read_json_lines:
        encoding: utf8
        invalid_lines: drop
        include_path_column: false

다음 단계