Schema YAML MLtable dell'interfaccia della riga di comando (v2)
SI APPLICA A: estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
È possibile trovare lo schema JSON di origine in https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.
Nota
La sintassi YAML descritta in dettaglio in questo documento si basa sullo schema JSON per la versione più recente dell'estensione dell'interfaccia della riga di comando di Machine Learning v2. Il funzionamento di questa sintassi è garantito solo con la versione più recente dell'estensione dell'interfaccia della riga di comando di Machine Learning v2. È possibile trovare gli schemi per le versioni di estensione precedenti in https://azuremlschemasprod.azureedge.net/.
Come creare MLTable
file
Questo articolo presenta informazioni solo sullo MLTable
schema YAML. Per altre informazioni su MLTable, tra cui
MLTable
creazione di file- Creazione di artefatti MLTable
- consumo in Pandas e Spark
- Esempi end-to-end
Vedere Uso delle tabelle in Azure Machine Learning.
Sintassi YAML
Chiave | Type | Descrizione | Valori consentiti | Valore predefinito |
---|---|---|---|---|
$schema |
string | Schema YAML. Se si usa l'estensione Visual Studio Code di Azure Machine Learning per creare il file YAML, è possibile richiamare i completamenti dello schema e delle risorse se si include $schema all'inizio del file |
||
type |
const | mltable astrae la definizione dello schema per i dati tabulari. I consumer di dati possono materializzare più facilmente la tabella in un dataframe Pandas/Dask/Spark |
mltable |
mltable |
paths |
array | I percorsi possono essere un percorso, folder un file percorso o pattern un percorso. pattern supporta modelli globbing che specificano set di nomi file con caratteri jolly (* , ? , [abc] , [a-z] ). Tipi di URI supportati: azureml , https wasbs , abfss , e adl . Per altre informazioni sull'uso del azureml:// formato URI, vedere sintassi yaml di base |
file folder pattern |
|
transformations |
array | Sequenza di trasformazione definita, applicata ai dati caricati dai percorsi definiti. Per altre informazioni, vedere Trasformazioni | 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 |
Trasformazioni
Letture delle trasformazioni
Lettura trasformazione | Descrizione | Parametri |
---|---|---|
read_delimited |
Aggiunge un passaggio di trasformazione per leggere i file di testo delimitati forniti in paths |
infer_column_types : valore booleano per dedurre i tipi di dati della colonna. Il valore predefinito è True. L'inferenza del tipo richiede che il calcolo corrente possa accedere all'origine dati. Attualmente, l'inferenza del tipo esegue solo il pull delle prime 200 righe.encoding : specificare la codifica del file. Codifiche supportate: utf8 , latin1 iso88591 , ascii , utf16 , utf32 , utf8bom e windows1252 . Codifica predefinita: utf8 .header : l'utente può scegliere una di queste opzioni: no_header , from_first_file , all_files_different_headers , all_files_same_headers . Il valore predefinito è all_files_same_headers .delimiter : separatore che divide le colonne.empty_as_string : specifica se i valori di campo vuoti devono essere caricati come stringhe vuote. Il valore predefinito (False) legge i valori di campo vuoti come valori Null. Se si passa questa impostazione come True , i valori di campo vuoti vengono letti come stringhe vuote. Per i valori convertiti in tipi di dati numerici o datetime, questa impostazione non ha alcun effetto, perché i valori vuoti vengono convertiti in valori Null.include_path_column : valore booleano per mantenere le informazioni sul percorso come colonna nella tabella. Il valore predefinito è False. Questa impostazione consente di leggere più file e di conoscere il file di origine per un record specifico. Inoltre, è possibile mantenere informazioni utili nel percorso del file.support_multi_line : per impostazione predefinita (support_multi_line=False ), tutte le interruzioni di riga, incluse le interruzioni di riga nei valori dei campi tra virgolette, vengono interpretate come interruzioni di record. Questo approccio alla lettura dei dati aumenta la velocità e offre l'ottimizzazione per l'esecuzione parallela su più core CPU. Tuttavia, potrebbe comportare la produzione invisibile all'utente di più record con valori di campo non allineati. Impostare questo valore su True quando i file delimitati sono noti per contenere interruzioni di riga tra virgolette |
read_parquet |
Aggiunge un passaggio di trasformazione per leggere i file formattati Parquet forniti in paths |
include_path_column : valore booleano per mantenere le informazioni sul percorso come colonna della tabella. Il valore predefinito è False. Questa impostazione consente di leggere più file e di conoscere il file di origine per un record specifico. Inoltre, è possibile mantenere informazioni utili nel percorso del file.NOTA: MLTable supporta solo letture di file parquet con colonne costituite da tipi primitivi. Le colonne contenenti matrici non sono supportate |
read_delta_lake |
Aggiunge un passaggio di trasformazione per leggere una cartella Delta Lake fornita in paths . È possibile leggere i dati in un determinato timestamp o versione |
timestamp_as_of :Corda. Timestamp da specificare per il tempo di spostamento sui dati Delta Lake specifici. Per leggere i dati in un momento specifico, La stringa datetime deve avere un formato RFC-3339/ISO-8601 (ad esempio: "2022-10-01T00:00:00Z", "2022-- 10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").version_as_of :Numero intero. Versione da specificare per il tempo di spostamento sui dati Delta Lake specifici.È necessario specificare un valore di timestamp_as_of o version_as_of |
read_json_lines |
Aggiunge un passaggio di trasformazione per leggere i file JSON forniti in paths |
include_path_column : valore booleano per mantenere le informazioni sul percorso come colonna MLTable. Il valore predefinito è False. Questa impostazione consente di leggere più file e di conoscere il file di origine per un record specifico. Inoltre, è possibile mantenere informazioni utili nel percorso del fileinvalid_lines : determina come gestire le righe con JSON non valido. Valori supportati: error e drop . L'impostazione predefinita è error encoding : specificare la codifica del file. Codifiche supportate: utf8 , latin1 iso88591 , ascii , utf16 , utf32 , utf8bom e windows1252 . L'impostazione predefinita è utf8 |
Altre trasformazioni
Trasformazione | Descrizione | Parametri | Esempi |
---|---|---|---|
convert_column_types |
Aggiunge un passaggio di trasformazione per convertire le colonne specificate nei rispettivi nuovi tipi specificati | columns Matrice di nomi di colonna da convertire column_type Tipo in cui si vuole convertire ( int , float , boolean string , , datetime ) |
- convert_column_types: Convertire la colonna Age in integer. - convert_column_types: Convertire la colonna data nel formato dd/mm/yyyy . Per to_datetime altre informazioni sulla conversione datetime, vedere .- convert_column_types: Convertire la colonna is_weekday in un valore booleano; I valori yes/true/1 nella colonna sono mappati a True e i valori no/false/0 nella colonna sono mappati a False . Per to_bool altre informazioni sulla conversione booleana, vedere |
drop_columns |
Aggiunge un passaggio di trasformazione per rimuovere colonne specifiche dal set di dati | Matrice di nomi di colonna da eliminare | - drop_columns: ["col1", "col2"] |
keep_columns |
Aggiunge un passaggio di trasformazione per mantenere le colonne specificate e rimuovere tutti gli altri dal set di dati | Matrice di nomi di colonna da mantenere | - keep_columns: ["col1", "col2"] |
extract_columns_from_partition_format |
Aggiunge un passaggio di trasformazione per usare le informazioni sulla partizione di ogni percorso e quindi estrarle in colonne in base al formato di partizione specificato. | formato di partizione da usare | - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} crea una colonna datetime, in cui vengono usati 'aaaa', 'MM', 'dd', 'HH', 'mm' e 'ss' per estrarre anno, mese, giorno, ora, minuto e secondi per il tipo datetime |
filter |
Filtrare i dati, lasciando solo i record che corrispondono all'espressione specificata. | Espressione come stringa | - filter: 'col("temperature") > 32 and col("location") == "UK"' Lasciare solo le righe in cui la temperatura supera 32 e regno Unito è la posizione |
skip |
Aggiunge un passaggio di trasformazione per ignorare le prime righe del conteggio di questa tabella MLTable. | Conteggio del numero di righe da ignorare | - skip: 10 Ignorare le prime 10 righe |
take |
Aggiunge un passaggio di trasformazione per selezionare le prime righe del conteggio di questa tabella MLTable. | Conteggio del numero di righe dalla parte superiore della tabella da accettare | - take: 5 Prendere le prime cinque righe. |
take_random_sample |
Aggiunge un passaggio di trasformazione per selezionare in modo casuale ogni riga di questa tabella MLTable, con probabilità di probabilità. | probability Probabilità di selezionare una singola riga. Deve essere compreso nell'intervallo [0,1]. seed Valore di inizializzazione casuale facoltativo |
- take_random_sample: Prendere un campione casuale del 10% di righe usando un valore di inizializzazione casuale pari a 123 |
Esempi
Esempi di utilizzo di MLTable. Per altri esempi, vedere:
Guida introduttiva
Questa guida introduttiva legge il famoso set di dati iris da un server HTTPS pubblico. Per procedere, è necessario inserire i MLTable
file in una cartella. Creare prima di tutto la cartella e MLTable
il file con:
mkdir ./iris
cd ./iris
touch ./MLTable
Posizionare quindi il contenuto nel 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
È quindi possibile materializzare in Pandas con:
Importante
È necessario che mltable
Python SDK sia installato. Installare questo SDK con:
pip install mltable
.
import mltable
tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()
Assicurarsi che i dati includano una nuova colonna denominata Path
. Questa colonna contiene il percorso dati https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
.
L'interfaccia della riga di comando può creare un asset di dati:
az ml data create --name iris-from-https --version 1 --type mltable --path ./iris
Cartella contenente i caricamenti automatici nell'archiviazione MLTable
cloud (archivio dati di Azure Machine Learning predefinito).
Suggerimento
Un asset di dati di Azure Machine Learning è simile ai segnalibri (preferiti) del Web browser. Invece di ricordare gli URI lunghi (percorsi di archiviazione) che puntano ai dati usati più di frequente, è possibile creare un asset di dati e quindi accedere a tale asset con un nome descrittivo.
File di testo delimitati
$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
Importante
Limitazione: mltable
non supporta l'estrazione delle chiavi di partizione durante la lettura dei dati da Delta Lake.
La mltable
trasformazione extract_columns_from_partition_format
non funzionerà durante la lettura dei dati Delta Lake tramite 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