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 , , utf16 ascii iso88591 latin1 , utf32 , , utf8bom y .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 , , utf16 ascii iso88591 latin1 , utf32 , , utf8bom y .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: Convierte la columna Age en un entero. - convert_column_types: 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: Convierta la columna is_weekday en un valor booleano; Sí,true/1 valores de la columna se asignan a True y 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: 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:
- Uso de tablas en Azure Machine Learning
- el repositorio de GitHub de ejemplos
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