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. patternmendukung pola globbing yang menentukan set nama file dengan karakter kartubebas (*, , ?[abc], [a-z]). Jenis URI yang didukung: azureml, , wasbshttps, 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, asciilatin1, utf16, utf32, utf8bom, dan windows1252. Pengodean default: utf8.

header: pengguna dapat memilih salah satu opsi ini: no_header, , from_first_file, all_files_different_headersall_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:String. 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 file

invalid_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, asciilatin1, 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, booleanstring, datetime)
- convert_column_types:
   - kolom: [Usia]
     column_type: int

Konversi kolom Usia menjadi bilangan bulat.

- convert_column_types:
   - kolom: tanggal
     column_type:
         Datetime:
            Format:
            - "%d/%m/%Y"

Konversi kolom tanggal ke format dd/mm/yyyy. Baca to_datetime untuk informasi selengkapnya tentang konversi tanggalwaktu.

- convert_column_types:
   - kolom: [is_weekday]
     column_type:
         Boolean:
            true_values:['yes', 'true', '1']
            false_values:['no', 'false', '0']

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:
   probabilitas: 0,10
   seed:123

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

Langkah berikutnya