CLI (v2) Esquema MLtable YAML

APLICA-SE A: Azure CLI ml extension v2 (atual)

Você pode encontrar o esquema JSON de origem em https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.

Nota

A sintaxe YAML detalhada neste documento é baseada no esquema JSON para a versão mais recente da extensão ML CLI v2. Esta sintaxe é garantida apenas para funcionar com a versão mais recente da extensão ML CLI v2. Você pode encontrar os esquemas para versões de extensão mais antigas em https://azuremlschemasprod.azureedge.net/.

Como criar MLTable ficheiros

Este artigo apresenta informações sobre o MLTable esquema YAML somente. Para obter mais informações sobre MLTable, incluindo

  • MLTable Criação de ficheiros
  • Criação de artefatos MLTable
  • consumo em Pandas e Spark
  • exemplos de ponta a ponta

visite Trabalhando com tabelas no Azure Machine Learning.

Sintaxe YAML

Chave Tipo Description Valores permitidos Default value
$schema string O esquema YAML. Se você usar a extensão de Código do Visual Studio do Aprendizado de Máquina do Azure para criar o arquivo YAML, poderá invocar a conclusão 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 um file caminho, folder caminho ou pattern para caminhos. pattern suporta padrões de globbing que especificam conjuntos de nomes de arquivos com caracteres curinga (*, ?, [abc], [a-z]). Tipos de URI suportados: azureml, https, wasbs, abfsse adl. Visite Sintaxe yaml principal para obter mais informações sobre o uso do azureml:// formato URI file
folder
pattern
transformations matriz Uma sequência de transformação definida, aplicada a dados carregados a partir 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

Ler transformações

Transformação de leitura Description Parâmetros
read_delimited Adiciona uma etapa de transformação para ler o(s) arquivo(s) de texto delimitado(s) fornecido(s) em paths infer_column_types: Booleano para inferir tipos de dados de coluna. O padrão é True. A inferência de tipo requer 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: utf8, iso88591, latin1, , ascii, utf16utf32, utf8bom, e windows1252. 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. O padrão é 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, porque os valores vazios são convertidos em nulos.

include_path_column: Booleano para manter as informações do caminho como coluna na tabela. O padrão é False. 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 registro. Essa abordagem de 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 forem conhecidos por conter quebras de linha entre aspas
read_parquet Adiciona uma etapa de transformação para ler o(s) arquivo(s) formatado(s) do Parquet fornecido(s) em paths include_path_column: Booleano para manter as informações do caminho como uma coluna de tabela. O padrão é False. 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.

NOTA: MLTable suporta apenas leituras de arquivos parquet que têm colunas que consistem em tipos primitivos. Não há suporte para colunas que contenham matrizes
read_delta_lake Adiciona uma etapa de transformação para ler uma pasta Delta Lake fornecida no paths. Você pode ler os dados em um carimbo de data/hora ou versão específica timestamp_as_of: String. Carimbo de data/hora a ser especificado para viagens 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: Boolean para manter as informações de caminho como uma coluna MLTable. O padrão é False. 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

invalid_lines: Determina como lidar com linhas que têm JSON inválido. Valores suportados: error e drop. O padrão é error

encoding: Especifique a codificação do arquivo. Codificações suportadas: utf8, iso88591, latin1, , ascii, utf16utf32, utf8bom, e windows1252. O padrão é utf8

Outras transformações

Transformação Description Parâmetros Exemplo(s)
convert_column_types Adiciona uma etapa de transformação para converter as colunas especificadas em seus respetivos 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:
   - colunas: [Idade]
     column_type: int

Converta a coluna Idade em inteiro.

- convert_column_types:
   - colunas: data
     column_type:
         datetime:
            formatos:
            - "%d/%m/%Y"

Converta a coluna de data para o formato dd/mm/yyyy. Leia to_datetime para obter mais informações sobre conversão de data/hora.

- convert_column_types:
   - colunas: [is_weekday]
     column_type:
         Booleano:
            true_values:['sim', 'verdadeiro', '1']
            false_values:['não', 'falso', '0']

Converta a coluna is_weekday em booleana; Os valores yes/true/1 na coluna mapeiam para True, e os valores no/false/0 na coluna mapeiam para False. Leia to_bool para obter mais informações sobre a 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 colunas a serem descartados - 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 para preservar - 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, em seguida, extraí-las em colunas com base no formato de partição especificado. Formato de partição a utilizar - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} cria uma coluna datetime, onde 'aaaa', '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 Filtre os dados, deixando apenas os registros que correspondem à expressão especificada. Uma expressão como uma cadeia de caracteres - filter: 'col("temperature") > 32 and col("location") == "UK"'
Deixe apenas filas onde a temperatura exceda 32, e o Reino Unido é o local
skip Adiciona uma etapa de transformação para ignorar as primeiras linhas de contagem deste MLTable. Uma contagem do número de linhas a serem ignoradas - skip: 10
Pular as primeiras 10 linhas
take Adiciona uma etapa de transformação para selecionar as primeiras linhas de contagem deste MLTable. Uma contagem do número de linhas do topo da tabela a serem tiradas - take: 5
Pegue as cinco primeiras linhas.
take_random_sample Adiciona uma etapa de transformação para selecionar aleatoriamente cada linha deste MLTable, com chance de probabilidade. probability
A probabilidade de selecionar uma linha individual. Deve estar no intervalo [0,1].

seed
Sementes aleatórias opcionais
- take_random_sample:
   Probabilidade: 0.10
   semente:123

Colher uma amostra aleatória de 10 por cento de linhas usando uma semente aleatória de 123

Exemplos

Exemplos de uso MLTable. Encontre mais exemplos em:

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 este 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-se em Pandas com:

Importante

Você deve ter o mltable Python SDK 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 carregamentos automáticos para o MLTable armazenamento em nuvem (o armazenamento de dados padrão do Azure Machine Learning).

Gorjeta

Um ativo de dados do Azure Machine Learning é semelhante aos marcadores do navegador da Web (favoritos). Em vez de lembrar URIs longos (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 delimitados

$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 os 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

Próximos passos