CLI (v2) MLtable esquema YAML
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)
Você pode encontrar o esquema JSON de origem em https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.
Observação
A sintaxe YAML detalhada neste documento baseia-se no esquema JSON da última versão da extensão de ML da CLI v2. Essa sintaxe só tem a garantia de funcionar com a última versão da extensão de ML da CLI v2. Encontre os esquemas para as versões mais antigas da extensão em https://azuremlschemasprod.azureedge.net/.
Como criar arquivos MLTable
Este artigo apresenta informações sobre o MLTable
esquema YAML somente. Para obter mais informações sobre MLTable, incluindo
MLTable
Criação de arquivos- Criação de artefatos MLTable
- consumo em Pandas e Spark
- Exemplos completos
visite Trabalhando com tabelas no Aprendizado de Máquina do Azure.
Sintaxe YAML
Chave | Type | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|---|
$schema |
string | O esquema YAML. Se você usar a extensão do Código do Visual Studio do Aprendizado de Máquina do Azure para criar o arquivo YAML, poderá invocar as conclusões de esquema e recursos se incluir $schema na parte superior do arquivo |
||
type |
const | mltable Abstrai a definição de esquema para dados tabulares. Os consumidores de dados podem materializar mais facilmente a tabela em um dataframe Pandas/Dask/Spark |
mltable |
mltable |
paths |
matriz | Os caminhos podem ser file , folder ou pattern para caminhos. pattern dá suporte a padrões glob que especificam conjuntos de nomes de arquivo com caracteres curinga (* , ? , [abc] , [a-z] ). Os tipos de URI com suporte são azureml , https , wasbs , abfss e adl . Visite Core yaml syntax para obter mais informações sobre o azureml:// uso do formato URI |
file folder pattern |
|
transformations |
matriz | Uma sequência de transformação definida, aplicada a dados carregados de caminhos definidos. Visite Transformações para obter mais informações | 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 |
Transformações
Transformações de leitura
Transformação de leitura | Descrição | Parâmetros |
---|---|---|
read_delimited |
Adiciona uma etapa de transformação para ler o(s) arquivo(s) de texto delimitado fornecido(s) em paths |
infer_column_types : booliano para inferir tipos de dados de coluna. O padrão é True. A inferência de tipo exige que a computação atual possa acessar a fonte de dados. Atualmente, a inferência de tipo puxa apenas as primeiras 200 linhas.encoding : especifique a codificação do arquivo. Codificações suportadas: , , , , , , utf32 e utf8bom windows1252 . utf16 ascii latin1 iso88591 utf8 Codificação padrão: utf8 .header : o usuário pode escolher uma destas opções: no_header , from_first_file , all_files_different_headers , all_files_same_headers . Assume o padrão de all_files_same_headers .delimiter : O separador que divide as colunas.empty_as_string : Especifica se os valores de campo vazio devem ser carregados como cadeias de caracteres vazias. O valor padrão (False) lê valores de campo vazios como nulos. Passar essa configuração como True lê valores de campo vazios como cadeias de caracteres vazias. Para valores convertidos em tipos de dados numéricos ou datetime, essa configuração não tem efeito, pois os valores vazios são convertidos em nulos.include_path_column : booliano para manter as informações do caminho como coluna na tabela. Usa False como padrão. Essa configuração ajuda ao ler vários arquivos e você deseja saber o arquivo de origem de um registro específico. Além disso, você pode manter informações úteis no caminho do arquivo.support_multi_line : Por padrão (support_multi_line=False ), todas as quebras de linha, incluindo quebras de linha em valores de campo entre aspas, são interpretadas como uma quebra de recorde. Essa abordagem para leitura de dados aumenta a velocidade e oferece otimização para execução paralela em vários núcleos de CPU. No entanto, isso pode resultar na produção silenciosa de mais registros com valores de campo desalinhados. Defina esse valor para True quando os arquivos delimitados são conhecidos por conter quebras de linha entre aspas |
read_parquet |
Adiciona uma etapa de transformação para ler o(s) arquivo(s) formatado(s) Parquet fornecido em paths |
include_path_column : Booleano para manter as informações de caminho como uma coluna de tabela. Usa False como padrão. Essa configuração ajuda quando você lê vários arquivos e deseja saber o arquivo de origem de um registro específico. Além disso, você pode manter informações úteis no caminho do arquivo.Observação : MLTable só oferece suporte a leituras de arquivos parquet que têm colunas que consistem em tipos primitivos. Não há suporte para colunas contendo matrizes |
read_delta_lake |
Adiciona uma etapa de transformação para ler uma pasta do Delta Lake fornecida em paths . Você pode ler os dados em um carimbo de data/hora ou versão específica |
timestamp_as_of : cadeia de caracteres. Carimbo de data/hora a ser especificado para viagem no tempo nos dados específicos do Delta Lake. Para ler dados em um ponto específico no tempo, a cadeia de caracteres datetime deve ter um formato RFC-3339/ISO-8601 (por exemplo: "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").version_as_of : inteiro. Versão a ser especificada para viagem no tempo nos dados específicos do Delta Lake.Você deve fornecer um valor de timestamp_as_of ou version_as_of |
read_json_lines |
Adiciona uma etapa de transformação para ler o(s) arquivo(s) json fornecido(s) em paths |
include_path_column : booliano para manter as informações do caminho como coluna do MLTable. Usa False como padrão. Essa configuração ajuda quando você lê vários arquivos e deseja saber o arquivo de origem de um registro específico. Além disso, você pode manter informações úteis no caminho do arquivoinvalid_lines : Determina como manipular linhas que têm JSON inválido. Valores com suporte: error e drop . Usa como padrão error encoding : especifique a codificação do arquivo. Codificações suportadas: , , , , , , utf32 e utf8bom windows1252 . utf16 ascii latin1 iso88591 utf8 Usa como padrão utf8 |
Outras transformações
Transformação | Descrição | Parâmetros | Exemplo(s) |
---|---|---|---|
convert_column_types |
Adiciona uma etapa de transformação para converter as colunas especificadas em seus respectivos novos tipos especificados | columns Uma matriz de nomes de coluna para converter column_type O tipo no qual você deseja converter ( int , float , string , boolean , ) datetime |
- convert_column_types: Converta a coluna Age em inteiro. - convert_column_types: Converta a coluna date no formato dd/mm/yyyy . Leia to_datetime para obter mais informações sobre a conversão de datetime.- convert_column_types: Converta a coluna is_weekday em booleana; valores sim/verdadeiro/1 no mapa de coluna para True , e não/falso/0 valores no mapa de coluna para False . Leia to_bool para obter mais informações sobre conversão booleana |
drop_columns |
Adiciona uma etapa de transformação para remover colunas específicas do conjunto de dados | Uma matriz de nomes de coluna a serem removidos | - drop_columns: ["col1", "col2"] |
keep_columns |
Adiciona uma etapa de transformação para manter as colunas especificadas e remover todas as outras do conjunto de dados | Uma matriz de nomes de coluna a serem preservados | - keep_columns: ["col1", "col2"] |
extract_columns_from_partition_format |
Adiciona uma etapa de transformação para usar as informações de partição de cada caminho e extraí-las em colunas baseadas no formato de partição especificado. | formato de partição a ser usado | - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} cria uma coluna datetime, onde 'aa', 'MM', 'dd', 'HH', 'mm' e 'ss' são usados para extrair valores de ano, mês, dia, hora, minuto e segundo para o tipo datetime |
filter |
Filtrar os dados, deixando apenas os registros que correspondam à expressão especificada. | Uma expressão como uma cadeia de caracteres | - filter: 'col("temperature") > 32 and col("location") == "UK"' Só deixe filas onde a temperatura exceda 32, e Reino Unido é o local |
skip |
Adiciona uma etapa de transformação para ignorar as primeiras linhas de contagem dessa MLTable. | Uma contagem do número de linhas a serem ignoradas | - skip: 10 Ignorar as primeiras 10 linhas |
take |
Adiciona uma etapa de transformação para selecionar as primeiras linhas de contagem dessa MLTable. | Uma contagem do número de linhas da parte superior da tabela a serem tomadas | - take: 5 Tome as cinco primeiras linhas. |
take_random_sample |
Adiciona uma etapa de transformação para selecionar aleatoriamente cada linha de MLTable no intervalo de probabilidade. | probability A probabilidade de selecionar uma linha individual. Deve estar no intervalo [0,1]. seed Semente aleatória opcional |
- take_random_sample: Pegue uma amostra aleatória de 10% de linhas usando uma semente aleatória de 123 |
Exemplos
Exemplos de uso MLTable. Veja mais exemplos em:
- Trabalhando com tabelas no Azure Machine Learning
- os exemplos repositório GitHub
Início rápido
Este guia de início rápido lê o famoso conjunto de dados de íris de um servidor https público. Para prosseguir, você deve colocar os MLTable
arquivos em uma pasta. Primeiro, crie a pasta e MLTable
o arquivo com:
mkdir ./iris
cd ./iris
touch ./MLTable
Em seguida, coloque esse conteúdo no MLTable
arquivo:
$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
Você pode então materializar em Pandas com:
Importante
Você precisa ter o SDK do Python mltable
instalado. Instale este SDK com:
pip install mltable
.
import mltable
tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()
Verifique se os dados incluem uma nova coluna chamada Path
. Esta coluna contém o caminho de https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
dados.
A CLI pode criar um ativo de dados:
az ml data create --name iris-from-https --version 1 --type mltable --path ./iris
A pasta que contém os MLTable
carregamentos automáticos para o armazenamento em nuvem (o armazenamento de dados padrão do Aprendizado de Máquina do Azure).
Dica
Um ativo de dados do Azure Machine Learning é semelhante aos indicadores do navegador da Web (favoritos). Em vez de lembrar longos URIs (caminhos de armazenamento) que apontam para os dados usados com mais frequência, você pode criar um ativo de dados e, em seguida, acessar esse ativo com um nome amigável.
Arquivos 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
Limitação: mltable
não suporta a extração de chaves de partição ao ler dados do Delta Lake.
A mltable
transformação extract_columns_from_partition_format
não funcionará quando você estiver lendo dados do Delta Lake via 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