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 , ascii latin1 , utf8bom utf16 utf32 et .windows1252 Encodage par défaut : utf8 .header : l’utilisateur peut choisir l’une des options suivantes : no_header , , from_first_file all_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 fichierinvalid_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 , ascii latin1 , utf8bom utf16 utf32 et .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: Convertir la colonne Age en entier. - convert_column_types: 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: 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: 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