Compartir vía


Esquema YAML de MLtable de la CLI (v2)

SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)

Puede encontrar el esquema JSON de origen en https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.

Nota:

La sintaxis de YAML que se detalla en este documento se basa en el esquema JSON de la versión más reciente de la extensión ML de la CLI v2. Se garantiza que esta sintaxis solo funciona con la versión más reciente de la extensión ML de la CLI v2. Dispone de los esquemas de las versiones de anteriores de la extensión en https://azuremlschemasprod.azureedge.net/.

Cómo crear archivos MLTable

En este artículo se presenta información sobre el MLTable esquema YAML únicamente. Para obtener más información sobre MLTable, incluido

  • MLTable creación de archivos
  • Creación de artefactos de MLTable
  • consumo en Pandas y Spark
  • Ejemplos de un extremo a otro

visite Trabajar con tablas en Azure Machine Learning.

Sintaxis de YAML

Clave Tipo Descripción Valores permitidos Valor predeterminado
$schema string Esquema de YAML. Si usa la extensión de Visual Studio Code de Azure Machine Learning para crear el archivo YAML, puede invocar finalizaciones de esquema y recursos si incluye $schema en la parte superior del archivo.
type const mltable abstrae la definición de esquema para los datos tabulares. Los consumidores de datos pueden materializar más fácilmente la tabla en un dataframe de Pandas/Dask/Spark mltable mltable
paths array Las rutas de acceso pueden ser una ruta de acceso file, una ruta de acceso folder o pattern para rutas de acceso. pattern admite patrones globales que especifican conjuntos de nombres de archivo con caracteres comodín (*, ?, [abc], [a-z]). Tipos de URI admitidos: azureml, https, wasbs, abfss y adl. Visite la sintaxis de yaml de Core para obtener más información sobre el uso del azureml:// formato de URI. file
folder
pattern
transformations array Secuencia de transformación definida, que se aplica a los datos cargados desde rutas de acceso definidas. Visite Transformaciones para obtener más información. 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

Transformaciones

Transformaciones de lectura

Transformación de lectura Descripción Parámetros
read_delimited Agrega un paso de transformación para leer los archivos de texto delimitados proporcionados en paths infer_column_types: valor booleano para deducir tipos de datos de columna. El valor predeterminado es True. La inferencia de tipos requiere que el proceso actual pueda acceder al origen de datos. Actualmente, la inferencia de tipos solo extrae las primeras 200 filas.

encoding: permite especificar la codificación del archivo. Codificaciones admitidas: utf8, , utf16asciiiso88591latin1, utf32, , utf8bomy .windows1252 Codificación predeterminada: utf8

header: el usuario puede elegir una de estas opciones: no_header, from_first_file, all_files_different_headers, . all_files_same_headers Tiene como valor predeterminado all_files_same_headers.

delimiter: separador que divide las columnas.

empty_as_string: especifica si los valores de campo vacíos deben cargarse como cadenas vacías. El valor predeterminado (False) lee valores de campo vacíos como nulls. Al pasar esta configuración como True , se leen valores de campo vacíos como cadenas vacías. En el caso de los valores convertidos en tipos de datos numéricos o datetime, esta configuración no tiene ningún efecto, ya que los valores vacíos se convierten en valores NULL.

include_path_column: valor booleano para mantener la información de ruta de acceso como columna en la tabla. El valor predeterminado es False. Esta configuración ayuda a leer varios archivos y desea conocer el archivo de origen de un registro específico. Además, también puede mantener información útil en la ruta de acceso del archivo.

support_multi_line: de forma predeterminada (support_multi_line=False), todos los saltos de línea, incluidos los saltos de línea en valores de campo entre comillas, se interpretan como un salto de registro. Este enfoque para la lectura de datos aumenta la velocidad y ofrece optimización para la ejecución en paralelo en varios núcleos de CPU. Sin embargo, podría dar lugar a una producción silenciosa de más registros con valores de campo desalineados. Establezca este valor en True cuando se sabe que los archivos delimitados contienen saltos de línea entre comillas.
read_parquet Agrega un paso de transformación para leer los archivos con formato Parquet proporcionados en paths include_path_column: booleano para mantener la información de ruta de acceso como una columna de tabla. El valor predeterminado es False. Esta configuración ayuda a leer varios archivos y desea conocer el archivo de origen de un registro específico. Además, también puede mantener información útil en la ruta de acceso del archivo.

NOTA: MLTable solo admite lecturas de archivos parquet que tienen columnas que constan de tipos primitivos. No se admiten columnas que contengan matrices.
read_delta_lake Agrega un paso de transformación para leer una carpeta de Delta Lake proporcionada en paths. Puede leer los datos en una marca de tiempo o versión determinada. timestamp_as_of: cadena. Marca de tiempo que se va a especificar para el viaje en el tiempo en los datos específicos de Delta Lake. Para leer datos en un momento dado específico, la cadena datetime debe tener un formato RFC-3339/ISO-8601 (por ejemplo: "2022-10-01T00:00:00Z", "2022-- 10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").

version_as_of: entero. Versión que se va a especificar para el viaje en el tiempo en los datos específicos de Delta Lake.

Debe proporcionar un valor de timestamp_as_of o version_as_of
read_json_lines Agrega un paso de transformación para leer los archivos JSON proporcionados en paths include_path_column: valor booleano para mantener la información de ruta de acceso como una columna de MLTable. El valor predeterminado es False. Esta configuración ayuda a leer varios archivos y desea conocer el archivo de origen de un registro específico. Además, puede mantener información útil en la ruta de acceso del archivo.

invalid_lines: determina cómo controlar las líneas que tienen JSON no válido. Valores admitidos: error y drop. De manera predeterminada, su valor es error.

encoding: permite especificar la codificación del archivo. Codificaciones admitidas: utf8, , utf16asciiiso88591latin1, utf32, , utf8bomy .windows1252 De manera predeterminada, su valor es utf8.

Otras transformaciones

Transformación Descripción Parámetros Por ejemplo
convert_column_types Agrega un paso de transformación para convertir las columnas especificadas en sus respectivos tipos nuevos especificados. columns
Matriz de nombres de columna que se van a convertir

column_type
Tipo en el que desea convertir (int, float, string, boolean, datetime)
- convert_column_types:
   - columns: [Age]
     column_type: int

Convierte la columna Age en un entero.

- convert_column_types:
   - columns: date
     column_type:
         datetime:
            formats:
            - "%d/%m/%Y"

Convierte la columna de fecha al formato dd/mm/yyyy. Consulte to_datetime para obtener más información sobre la conversión de datetime.

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

Convierta la columna is_weekday en un valor booleano; Sí,true/1 valores de la columna se asignan a Truey los valores no/false/0 de la columna se asignan a False. Lea to_bool para obtener más información sobre la conversión booleana.
drop_columns Agrega un paso de transformación para quitar columnas específicas del conjunto de datos Matriz de nombres de columna que se van a quitar. - drop_columns: ["col1", "col2"]
keep_columns Agrega un paso de transformación para mantener las columnas especificadas y quitar todos los demás del conjunto de datos. Matriz de nombres de columna que se van a conservar - keep_columns: ["col1", "col2"]
extract_columns_from_partition_format Agrega un paso de transformación para usar la información de partición de cada ruta de acceso y extraerla en columnas basadas en el formato de partición especificado. Formato de partición que se va a usar. - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} crea una columna datetime, donde se usan 'aaaa', 'MM', 'dd', 'HH', 'mm' y 'ss' para extraer valores year, month, day, hour, minute y second para el tipo datetime
filter Filtra los datos, dejando solo los registros que coinciden con la expresión especificada. Una expresión como una cadena - filter: 'col("temperature") > 32 and col("location") == "UK"'
Solo deje filas en las que la temperatura supere los 32 y Reino Unido es la ubicación
skip Agrega un paso de transformación para omitir las primeras filas de recuento de este elemento MLTable. Recuento del número de filas que se van a omitir. - skip: 10
Omite las primeras 10 filas.
take Agrega un paso de transformación para seleccionar las primeras filas de recuento de este elemento MLTable. Recuento del número de filas de la parte superior de la tabla que se van a tomar. - take: 5
Toma las cinco primeras filas.
take_random_sample Agrega un paso de transformación para seleccionar aleatoriamente cada fila de este elemento MLTable con probabilidad de azar. probability
Probabilidad de seleccionar una fila individual. Debe estar en el intervalo [0,1].

seed
Inicialización aleatoria opcional
- take_random_sample:
   probability: 0.10
   seed:123

Tomar una muestra aleatoria del 10 % de las filas con una inicialización aleatoria de 123

Ejemplos

Ejemplos de uso de MLTable. Busque más ejemplos en:

Inicio rápido

En este inicio rápido se lee el famoso conjunto de datos iris de un servidor https público. Para continuar, debe colocar los MLTable archivos en una carpeta. En primer lugar, cree la carpeta y MLTable el archivo con:

mkdir ./iris
cd ./iris
touch ./MLTable

A continuación, coloque este contenido en el MLTable archivo:

$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

A continuación, puede materializar en Pandas con:

Importante

Debe tener instalado el SDK de Python mltable. Instale este SDK con:

pip install mltable.

import mltable

tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()

Asegúrese de que los datos incluyen una nueva columna denominada Path. Esta columna contiene la ruta de acceso de https://azuremlexamples.blob.core.windows.net/datasets/iris.csv datos.

La CLI puede crear un recurso de datos:

az ml data create --name iris-from-https --version 1 --type mltable --path ./iris

La carpeta que contiene las MLTable cargas automáticamente en el almacenamiento en la nube (el almacén de datos de Azure Machine Learning predeterminado).

Sugerencia

Un recurso de datos de Azure Machine Learning es similar a los marcadores del explorador web (favoritos). En lugar de recordar los URI largos (rutas de acceso de almacenamiento) que apuntan a los datos usados con más frecuencia, puede crear un recurso de datos y, a continuación, acceder a ese recurso con un nombre descriptivo.

Archivos de texto delimitado

$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

Limitación: mltable no admite la extracción de claves de partición al leer datos de Delta Lake. La mltable transformación extract_columns_from_partition_format no funcionará cuando lea los datos de Delta Lake a través de 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

Pasos siguientes