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 , abfss 및 adl . 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 , ,iso88591 latin1 , ascii , utf16 , utf32 utf8bom 및 windows1252 . 기본 인코딩: utf8 .header : 사용자가 다음 옵션 중 하나를 선택할 수 있습니다. no_header from_first_file all_files_different_headers all_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_of version_as_of |
read_json_lines |
제공된 json 파일을 읽는 변환 단계를 추가합니다. paths |
include_path_column : 경로 정보를 MLTable 열로 유지하기 위한 부울입니다. 기본값은 False입니다. 이 설정은 여러 파일을 읽을 때 도움이 되며 특정 레코드에 대한 원래 파일을 알고자 합니다. 또한 파일 경로에 유용한 정보를 유지할 수 있습니다.invalid_lines : 잘못된 JSON이 있는 줄을 처리하는 방법을 결정합니다. 지원되는 값: error 및 drop . 기본값은 error 입니다.encoding : 파일 인코딩을 지정합니다. 지원되는 인코딩: utf8 , ,iso88591 latin1 , ascii , utf16 , utf32 utf8bom 및 windows1252 . 기본값은 utf8 입니다. |
기타 변환
변환 | 설명 | 매개 변수 | 예시 |
---|---|---|---|
convert_column_types |
지정된 열을 지정된 각각의 새 형식으로 변환하는 변환 단계를 추가합니다. | columns 변환할 열 이름의 배열 column_type 변환할 형식( int , , float string , boolean datetime ) |
- convert_column_types: Age 열을 정수로 변환합니다. - convert_column_types: 날짜 열을 형식 dd/mm/yyyy 으로 변환합니다. datetime 변환에 대한 자세한 내용을 읽어보세요 to_datetime .- convert_column_types: is_weekday 열을 부울로 변환합니다. 열 맵의 yes/true/1 값과 열 맵 True False 의 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: 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