Skema YAML MLtable CLI (v2)
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
Anda dapat menemukan skema JSON sumber di https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.
Catatan
Sintaks YAML yang dirinci dalam dokumen ini didasarkan pada skema JSON untuk versi terbaru ekstensi CLI v2 ML. Sintaks ini dijamin hanya berfungsi dengan versi terbaru ekstensi CLI v2 ML. Anda dapat menemukan skema untuk versi ekstensi yang lebih lama di https://azuremlschemasprod.azureedge.net/.
Cara menulis MLTable
file
Artikel ini menyajikan informasi tentang MLTable
skema YAML saja. Untuk informasi selengkapnya tentang MLTable, termasuk
MLTable
penulisan file- Pembuatan artefak MLTable
- konsumsi di Pandas dan Spark
- contoh end-to-end
kunjungi Bekerja dengan tabel di Azure Pembelajaran Mesin.
Sintaks YAML
Tombol | Tipe | Deskripsi | Nilai yang diizinkan | Nilai default |
---|---|---|---|---|
$schema |
string | Skema YAML. Jika Anda menggunakan ekstensi Azure Pembelajaran Mesin Visual Studio Code untuk menulis file YAML, Anda dapat memanggil skema dan penyelesaian sumber daya jika Menyertakan $schema di bagian atas file Anda |
||
type |
const | mltable mengabstraksi definisi skema untuk data tabular. Konsumen data dapat lebih mudah mewujudkan tabel menjadi dataframe Pandas/Dask/Spark |
mltable |
mltable |
paths |
array | Jalur dapat berupa file jalur, folder jalur, atau pattern untuk jalur. pattern mendukung pola globbing yang menentukan set nama file dengan karakter kartubebas (* , , ? [abc] , [a-z] ). Jenis URI yang didukung: azureml , , wasbs https , abfss , dan adl . Kunjungi sintaks core yaml untuk informasi selengkapnya tentang penggunaan azureml:// format URI |
file folder pattern |
|
transformations |
array | Urutan transformasi yang ditentukan, diterapkan ke data yang dimuat dari jalur yang ditentukan. Kunjungi Transformasi untuk informasi selengkapnya | 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 |
Transformasi
Membaca transformasi
Baca Transformasi | Deskripsi | Parameter |
---|---|---|
read_delimited |
Menambahkan langkah transformasi untuk membaca file teks berbatas yang disediakan di paths |
infer_column_types : Boolean untuk menyimpulkan jenis data kolom. Defaultnya diatur ke True. Inferensi jenis mengharuskan komputasi saat ini dapat mengakses sumber data. Saat ini, inferensi jenis hanya menarik 200 baris pertama.encoding : Menentukan pengodean file. Pengodean yang didukung: utf8 , , iso88591 , ascii latin1 , utf16 , utf32 , utf8bom , dan windows1252 . Pengodean default: utf8 .header : pengguna dapat memilih salah satu opsi ini: no_header , , from_first_file , all_files_different_headers all_files_same_headers . Default ke all_files_same_headers .delimiter : Pemisah yang memisahkan kolom.empty_as_string : Menentukan apakah nilai bidang kosong harus dimuat sebagai string kosong. Nilai default (False) membaca nilai bidang kosong sebagai null. Meneruskan pengaturan ini karena True membaca nilai bidang kosong sebagai string kosong. Untuk nilai yang dikonversi ke tipe data numerik atau tanggalwaktu, pengaturan ini tidak berpengaruh, karena nilai kosong dikonversi ke null.include_path_column : Boolean untuk menyimpan informasi jalur sebagai kolom dalam tabel. Default ke False. Pengaturan ini membantu saat membaca beberapa file, dan Anda ingin mengetahui file asal untuk rekaman tertentu. Selain itu, Anda dapat menyimpan informasi yang berguna di jalur file.support_multi_line : Secara default (support_multi_line=False ), semua hentian baris, termasuk hentian baris dalam nilai bidang yang dikutip, ditafsirkan sebagai pemisah rekaman. Pendekatan pembacaan data ini meningkatkan kecepatan, dan menawarkan pengoptimalan untuk eksekusi paralel pada beberapa inti CPU. Namun, ini dapat mengakibatkan produksi senyap lebih banyak rekaman dengan nilai bidang yang tidak sejajar. Atur nilai ini ke True ketika file yang dibatasi diketahui berisi hentian baris yang dikutip |
read_parquet |
Menambahkan langkah transformasi untuk membaca file berformat Parquet yang disediakan di paths |
include_path_column : Boolean untuk menyimpan informasi jalur sebagai kolom tabel. Default ke False. Pengaturan ini membantu saat Anda membaca beberapa file, dan Anda ingin mengetahui file asal untuk rekaman tertentu. Selain itu, Anda dapat menyimpan informasi yang berguna di jalur file.CATATAN: MLTable hanya mendukung pembacaan file parket yang memiliki kolom yang terdiri dari jenis primitif. Kolom yang berisi array tidak didukung |
read_delta_lake |
Menambahkan langkah transformasi untuk membaca folder Delta Lake yang disediakan di paths . Anda dapat membaca data pada tanda waktu atau versi tertentu |
timestamp_as_of :Tali. Tanda waktu yang akan ditentukan untuk perjalanan waktu pada data Delta Lake tertentu. Untuk membaca data pada titik waktu tertentu, string tanggalwaktu harus memiliki format RFC-3339/ISO-8601 (misalnya: "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").version_as_of :Integer. Versi yang akan ditentukan untuk perjalanan waktu pada data Delta Lake tertentu.Anda harus memberikan satu nilai timestamp_as_of atau version_as_of |
read_json_lines |
Menambahkan langkah transformasi untuk membaca file json yang disediakan di paths |
include_path_column : Boolean untuk menyimpan informasi jalur sebagai kolom MLTable. Default ke False. Pengaturan ini membantu saat Anda membaca beberapa file, dan Anda ingin mengetahui file asal untuk rekaman tertentu. Selain itu, Anda dapat menyimpan informasi yang berguna di jalur fileinvalid_lines : Menentukan cara menangani garis yang memiliki JSON tidak valid. Nilai yang didukung: error dan drop . Default ke error encoding : Menentukan pengodean file. Pengodean yang didukung: utf8 , , iso88591 , ascii latin1 , utf16 , utf32 , utf8bom , dan windows1252 . Default ke utf8 |
Transformasi lainnya
Transformasi | Deskripsi | Parameter | Misalnya |
---|---|---|---|
convert_column_types |
Menambahkan langkah transformasi untuk mengonversi kolom yang ditentukan menjadi jenis baru yang ditentukan masing-masing | columns Array nama kolom yang akan dikonversi column_type Jenis tempat Anda ingin mengonversi ( int , , float , boolean string , datetime ) |
- convert_column_types: Konversi kolom Usia menjadi bilangan bulat. - convert_column_types: Konversi kolom tanggal ke format dd/mm/yyyy . Baca to_datetime untuk informasi selengkapnya tentang konversi tanggalwaktu.- convert_column_types: Mengonversi kolom is_weekday menjadi boolean; ya/true/1 nilai dalam peta kolom ke True , dan tidak ada/salah/0 nilai dalam peta kolom ke False . Baca to_bool untuk informasi selengkapnya tentang konversi boolean |
drop_columns |
Menambahkan langkah transformasi untuk menghapus kolom tertentu dari himpunan data | Array nama kolom yang akan dihilangkan | - drop_columns: ["col1", "col2"] |
keep_columns |
Menambahkan langkah transformasi untuk mempertahankan kolom yang ditentukan, dan menghapus semua yang lain dari himpunan data | Array nama kolom untuk dipertahankan | - keep_columns: ["col1", "col2"] |
extract_columns_from_partition_format |
Menambahkan langkah transformasi untuk menggunakan informasi partisi dari setiap jalur, lalu mengekstraknya ke dalam kolom berdasarkan format partisi yang ditentukan. | format partisi yang akan digunakan | - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} membuat kolom tanggalwaktu, di mana 'yyyy', 'MM', 'dd', 'HH', 'mm' dan 'ss' digunakan untuk mengekstrak nilai tahun, bulan, hari, jam, menit, dan kedua untuk jenis tanggalwaktu |
filter |
Filter data, hanya menyisakan rekaman yang cocok dengan ekspresi yang ditentukan. | Ekspresi sebagai string | - filter: 'col("temperature") > 32 and col("location") == "UK"' Hanya meninggalkan baris di mana suhu melebihi 32, dan Inggris adalah lokasinya |
skip |
Menambahkan langkah transformasi untuk melewati baris hitungan pertama MLTable ini. | Hitungan jumlah baris yang akan dilewati | - skip: 10 Lewati 10 baris pertama |
take |
Menambahkan langkah transformasi untuk memilih baris hitungan pertama MLTable ini. | Hitungan jumlah baris dari bagian atas tabel yang akan diambil | - take: 5 Ambil lima baris pertama. |
take_random_sample |
Menambahkan langkah transformasi untuk memilih setiap baris MLTable ini secara acak, dengan peluang probabilitas. | probability Probabilitas memilih baris individual. Harus dalam rentang [0,1]. seed Seed acak opsional |
- take_random_sample: Ambil sampel baris acak 10 persen menggunakan benih acak 123 |
Contoh
Contoh penggunaan MLTable. Temukan contoh lainnya di:
Mulai Cepat
Mulai cepat ini membaca himpunan data iris terkenal dari server https publik. Untuk melanjutkan, Anda harus menempatkan MLTable
file dalam folder. Pertama, buat folder dan MLTable
file dengan:
mkdir ./iris
cd ./iris
touch ./MLTable
Selanjutnya, tempatkan konten ini dalam MLTable
file:
$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
Anda kemudian dapat terwujud menjadi Panda dengan:
Penting
Anda harus menginstal mltable
Python SDK. Instal SDK ini dengan:
pip install mltable
.
import mltable
tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()
Pastikan bahwa data menyertakan kolom baru bernama Path
. Kolom ini berisi https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
jalur data.
CLI dapat membuat aset data:
az ml data create --name iris-from-https --version 1 --type mltable --path ./iris
Folder yang berisi pengunggahan MLTable
otomatis ke penyimpanan cloud (azure Pembelajaran Mesin datastore default).
Tip
Aset data Azure Pembelajaran Mesin mirip dengan bookmark browser web (favorit). Alih-alih mengingat URI panjang (jalur penyimpanan) yang menunjuk ke data yang paling sering digunakan, Anda dapat membuat aset data, lalu mengakses aset tersebut dengan nama yang mudah diingat.
File teks yang dibatasi
$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
Penting
Batasan: mltable
tidak mendukung ekstraksi kunci partisi saat membaca data dari Delta Lake.
mltable
Transformasi extract_columns_from_partition_format
tidak akan berfungsi saat Anda membaca data Delta Lake melalui mltable
.
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