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 ML v2. Questa sintassi è garantita solo per funzionare con la versione più recente dell'estensione dell'interfaccia della riga di comando di ML 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, httpswasbs, 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, latin1iso88591, ascii, utf16, utf32, utf8bome 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:Stringa. 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: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 file

invalid_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, latin1iso88591, ascii, utf16, utf32, utf8bome 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, booleanstring, , datetime)
- convert_column_types:
   - colonne: [Age]
     column_type: int

Convertire la colonna Age in integer.

- convert_column_types:
   - colonne: data
     column_type:
         Datetime:
            Formati:
            - "%d/%m/%Y"

Convertire la colonna data nel formato dd/mm/yyyy. Per to_datetime altre informazioni sulla conversione datetime, vedere .

- convert_column_types:
   - colonne: [is_weekday]
     column_type:
         Boolean:
            true_values:['sì', 'true', '1']
            false_values:['no', 'false', '0']

Convertire la colonna is_weekday in un valore booleano; I valori yes/true/1 nella colonna sono mappati a Truee 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:
   probabilità: 0,10
   seed:123

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:

Avvio rapido

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 del Web browser (preferiti). 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

Passaggi successivi