Partage via


Schéma YAML MLtable CLI (v2)

S’APPLIQUE À : Extension ml Azure CLI v2 (actuelle)

Vous trouverez le schéma JSON source à l’adresse https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.

Remarque

La syntaxe YAML détaillée dans ce document est basée sur le schéma JSON pour la dernière version de l’extension ML CLI v2. Le fonctionnement de cette syntaxe est garanti uniquement avec la dernière version de l’extension ML CLI v2. Vous trouverez les schémas des versions d’extension plus anciennes sur la page https://azuremlschemasprod.azureedge.net/.

Comment créer des fichiers MLTable

Cet article présente uniquement des informations sur le MLTable schéma YAML. Pour plus d’informations sur MLTable, notamment

  • MLTable création de fichiers
  • Création d’artefacts MLTable
  • consommation dans Pandas et Spark
  • Exemples de bout en bout

visitez Utilisation des tables dans Azure Machine Learning.

Syntaxe YAML

Clé Type Description Valeurs autorisées Valeur par défaut
$schema string Schéma YAML. Si vous utilisez l’extension Azure Machine Learning Visual Studio Code pour créer le fichier YAML, vous pouvez appeler des achèvements de schéma et de ressources si vous incluez $schema en haut de votre fichier
type const mltable extrait la définition de schéma pour les données tabulaires. Les consommateurs de données peuvent plus facilement matérialiser la table dans un dataframe Pandas/Dask/Spark mltable mltable
paths tableau Les chemins peuvent indiquer un file, un folder ou un pattern. pattern prend en charge les modèles de globbing qui spécifient des ensembles de noms de fichier avec des caractères génériques (*, ?, [abc], [a-z]). Les types d’URI pris en charge sont azureml, https, wasbs, abfss et adl. Pour plus d’informations sur l’utilisation du format URI, consultez la azureml:// syntaxe yaml Core. file
folder
pattern
transformations tableau Séquence de transformation définie, appliquée aux données chargées à partir de chemins définis. Pour plus d’informations, consultez Transformations 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

Transformations

Transformations de lecture

Transformation de lecture Description Paramètres
read_delimited Ajoute une étape de transformation pour lire le ou les fichiers texte délimités fournis dans paths infer_column_types : valeur booléenne pour inférer des types de données de colonne. La valeur par défaut est True. L’inférence de type nécessite que le calcul actuel puisse accéder à la source de données. Actuellement, l’inférence de type extrait uniquement les 200 premières lignes.

encoding : spécifie l’encodage du fichier. Encodages pris en charge : utf8, , iso88591, asciilatin1, utf8bomutf16utf32et .windows1252 Encodage par défaut : utf8.

header: l’utilisateur peut choisir l’une des options suivantes : no_header, , from_first_fileall_files_different_headers, all_files_same_headers. La valeur par défaut est all_files_same_headers.

delimiter: séparateur qui fractionne les colonnes.

empty_as_string: spécifie si les valeurs de champ vide doivent être chargées sous forme de chaînes vides. La valeur par défaut (False) lit les valeurs de champ vides comme null. Le passage de ce paramètre en tant que true lit les valeurs de champ vides sous forme de chaînes vides. Pour les valeurs converties en types de données numériques ou datetime, ce paramètre n’a aucun effet, car les valeurs vides sont converties en valeurs Null.

include_path_column : booléen pour conserver les informations de chemin d’accès sous la forme d’une colonne dans le jeu de données. Valeur par défaut False. Ce paramètre permet de lire plusieurs fichiers et de connaître le fichier d’origine d’un enregistrement spécifique. Vous pouvez aussi conserver des informations utiles dans le chemin du fichier.

support_multi_line: par défaut (support_multi_line=False), tous les sauts de ligne, y compris les sauts de ligne dans les valeurs de champ entre guillemets, sont interprétés comme un saut d’enregistrement. Cette approche de la lecture des données augmente la vitesse et offre une optimisation pour l’exécution parallèle sur plusieurs cœurs de processeur. Toutefois, il peut entraîner une production silencieuse de plus d’enregistrements avec des valeurs de champ mal alignées. Définissez cette valeur True lorsque les fichiers délimités sont connus pour contenir des sauts de ligne entre guillemets
read_parquet Ajoute une étape de transformation pour lire le ou les fichiers au format Parquet fournis dans paths include_path_column: booléen pour conserver les informations de chemin d’accès sous forme de colonne de table. Valeur par défaut False. Ce paramètre permet de lire plusieurs fichiers et de connaître le fichier d’origine d’un enregistrement spécifique. Vous pouvez aussi conserver des informations utiles dans le chemin du fichier.

REMARQUE : MLTable prend uniquement en charge les lectures de fichiers Parquet qui ont des colonnes composées de types primitifs. Les colonnes contenant des tableaux ne sont pas prises en charge
read_delta_lake Ajoute une étape de transformation pour lire un dossier Delta Lake fourni dans paths. Vous pouvez lire les données à un horodatage ou une version particulière timestamp_as_of : chaîne. Horodatage à spécifier pour voyager dans le temps sur les données Delta Lake spécifiques. Pour lire les données à un point spécifique dans le temps, la chaîne datetime doit avoir un format RFC-3339/ISO-8601 (par exemple : « 2022-10-01T00:00:00Z », « 2022-10-01T00:00:00+08:00 », « 2022-10-01T01:30:00-08:00 »).

version_as_of : entier. Version à spécifier pour voyager dans le temps sur les données Delta Lake spécifiques.

Vous devez fournir une valeur de timestamp_as_of ou version_as_of
read_json_lines Ajoute une étape de transformation pour lire le ou les fichiers json fournis dans paths include_path_column : booléen utilisé pour conserver les informations de chemin sous forme de colonne MLTable. Valeur par défaut False. Ce paramètre permet de lire plusieurs fichiers et de connaître le fichier d’origine d’un enregistrement spécifique. En outre, vous pouvez conserver des informations utiles dans le chemin d’accès au fichier

invalid_lines: détermine comment gérer les lignes qui ont un JSON non valide. Valeurs prises en charge : error et drop. La valeur par défaut est error

encoding : spécifie l’encodage du fichier. Encodages pris en charge : utf8, , iso88591, asciilatin1, utf8bomutf16utf32et .windows1252 La valeur par défaut est utf8

Autres transformations

Transformation Description Paramètres Exemple(s)
convert_column_types Ajoute une étape de transformation pour convertir les colonnes spécifiées en leurs nouveaux types respectifs columns
Tableau de noms de colonnes à convertir

column_type
Type dans lequel vous souhaitez convertir (int, float, string, boolean, datetime)
- convert_column_types:
   - columns: [Age]
     column_type: int

Convertir la colonne Age en entier.

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

Convertir la colonne de date au format dd/mm/yyyy. Lisez to_datetime pour plus d’informations sur la conversion au format datetime.

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

Convertissez la colonne is_weekday en valeur booléenne ; Valeurs oui/true/1 dans le mappage de colonnes vers True, et non/false/0 dans le mappage de colonnes à False. Pour to_bool plus d’informations sur la conversion booléenne
drop_columns Ajoute une étape de transformation pour supprimer des colonnes spécifiques du jeu de données Tableau de noms de colonne à supprimer - drop_columns: ["col1", "col2"]
keep_columns Ajoute une étape de transformation pour conserver les colonnes spécifiées et supprimer tous les autres du jeu de données Tableau de noms de colonnes à conserver - keep_columns: ["col1", "col2"]
extract_columns_from_partition_format Ajoute une étape de transformation pour utiliser les informations de partition de chaque chemin et les extraire dans des colonnes en fonction du format de partition spécifié. format de partition à utiliser - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} crée une colonne datetime, où « aaaa », « MM », « dd », « HH », « mm » et « ss » sont utilisés pour extraire l’année, le mois, le jour, l’heure, la minute et les secondes valeurs pour le type datetime
filter Filtrer les données, en laissant uniquement les enregistrements qui correspondent à l’expression spécifiée. Expression sous forme de chaîne - filter: 'col("temperature") > 32 and col("location") == "UK"'
Laissez uniquement les lignes où la température dépasse 32, et le Royaume-Uni est l’emplacement
skip Ajoute une étape de transformation pour ignorer les premières lignes de comptage de cette MLTable. Nombre de lignes à ignorer - skip: 10
Ignorer les 10 premières lignes
take Ajoute une étape de transformation pour sélectionner les premières lignes de comptage de cette MLTable. Nombre de lignes à prendre à partir du haut du tableau - take: 5
Prendre les cinq premières lignes.
take_random_sample Ajoute une étape de transformation pour sélectionner aléatoirement chaque ligne de ce MLTable avec un degré de probabilité. probability
Probabilité de sélection d’une ligne individuelle. Doit être dans la plage [0,1].

seed
Valeur initiale aléatoire facultative
- take_random_sample:
   probability: 0.10
   seed:123

Prendre un échantillon aléatoire de 10 % de lignes à l’aide d’une valeur initiale aléatoire de 123

Exemples

Exemples d’utilisation de MLTable. Pour plus d’exemples, consultez :

Démarrage rapide

Ce guide de démarrage rapide lit le célèbre jeu de données iris à partir d’un serveur https public. Pour continuer, vous devez placer les MLTable fichiers dans un dossier. Tout d’abord, créez le dossier et MLTable le fichier avec :

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

Ensuite, placez ce contenu dans le MLTable fichier :

$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

Vous pouvez ensuite matérialiser dans Pandas avec :

Important

Vous devez avoir le SDK Python mltable installé. Installez ce Kit de développement logiciel (SDK) avec :

pip install mltable.

import mltable

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

Vérifiez que les données incluent une nouvelle colonne nommée Path. Cette colonne contient le chemin d’accès aux https://azuremlexamples.blob.core.windows.net/datasets/iris.csv données.

L’interface CLI peut créer une ressource de données :

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

Dossier contenant les chargements automatiquement dans le MLTable stockage cloud (magasin de données Azure Machine Learning par défaut).

Conseil

Une ressource de données Azure Machine Learning est similaire aux signets de navigateur web (favoris). Au lieu de mémoriser des URI longs (chemins de stockage) qui pointent vers vos données les plus fréquemment utilisées, vous pouvez créer une ressource de données, puis accéder à cette ressource avec un nom convivial.

Fichiers texte délimités

$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   

Important

Limitation : mltable ne prend pas en charge l’extraction des clés de partition lors de la lecture de données depuis Delta Lake. La transformationmltable extract_columns_from_partition_format ne va pas fonctionner quand vous lisez des données 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

Étapes suivantes