CLI (v2) MLtable YAML-Schema
GILT FÜR Azure CLI-ML-Erweiterung v2 (aktuell)
Das JSON-Quellschema finden Sie unter https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.
Hinweis
Die in diesem Dokument beschriebene YAML-Syntax basiert auf dem JSON-Schema für die neueste Version der ML CLI v2-Erweiterung. Die Funktion dieser Syntax wird nur mit der neuesten Version der ML CLI v2-Erweiterung garantiert. Die Schemas für ältere Erweiterungsversionen finden Sie unter https://azuremlschemasprod.azureedge.net/.
Erstellen von MLTable
-Dateien
Dieser Artikel enthält nur Informationen zum MLTable
YAML-Schema. Weitere Informationen zu MLTable, einschließlich
MLTable
Dateierstellung- Erstellung von MLTable-Artefakten
- Konsum in Pandas und Spark
- End-to-End-Beispiele
besuchen Sie die Arbeit mit Tabellen in Azure Machine Learning.
YAML-Syntax
Schlüssel | type | BESCHREIBUNG | Zulässige Werte | Standardwert |
---|---|---|---|---|
$schema |
Zeichenfolge | Das YAML-Schema. Wenn Sie die Visual Studio Code-Erweiterung von Azure Machine Learning zum Erstellen der YAML-Datei verwenden, können Sie Schema- und Ressourcenabschlusse aufrufen, wenn Sie oben in die Datei einschließen $schema . |
||
type |
const | mltable abstrahiert die Schemadefinition für tabellarische Daten. Datenverbraucher können die Tabelle einfacher in einen Pandas/Dask/Spark-Datenframe materialisieren |
mltable |
mltable |
paths |
array | Es sind file -Pfade, folder -Pfade und pattern -Pfade zulässig. pattern unterstützt Globmuster, die Gruppen von Dateinamen mit Platzhalterzeichen (* , ? , [abc] , [a-z] ) angeben. Unterstützte URI-Typen: azureml , https , wasbs , abfss und adl . Weitere Informationen zur Verwendung des azureml:// URI-Formats finden Sie unter Core yaml-Syntax. |
file folder pattern |
|
transformations |
array | Eine definierte Transformationssequenz, die auf Daten angewendet wird, die aus definierten Pfaden geladen werden. Weitere Informationen finden Sie unter Transformationen | 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 |
Transformationen
Lesetransformationen
Lesetransformation | BESCHREIBUNG | Parameter |
---|---|---|
read_delimited |
Fügt einen Transformationsschritt hinzu, um die in paths |
infer_column_types : Boolescher Wert, um Spaltendatentypen abzuleiten. Der Standardwert ist „True“. Für den Typrückschluss wird vorausgesetzt, dass die aktuelle Computeressource auf die Datenquelle zugreifen kann. Derzeit ruft die Typreferenz nur die ersten 200 Zeilen ab.encoding : Geben Sie die Dateicodierung an. Unterstützte Codierungen: utf8 , , iso88591 , ascii latin1 , utf16 , , utf32 , und windows1252 utf8bom . Standardcodierung: utf8 .header : Der Benutzer kann eine der folgenden Optionen auswählen: no_header , from_first_file , , all_files_different_headers . all_files_same_headers Wird standardmäßig auf all_files_same_headers festgelegt.delimiter : Das Trennzeichen, das die Spalten aufteilt.empty_as_string : Gibt an, ob leere Feldwerte als leere Zeichenfolgen geladen werden sollen. Der Standardwert (False) liest leere Feldwerte als NULL-Werte vor. Durch Übergeben dieser Einstellung als True werden leere Feldwerte als leere Zeichenfolgen gelesen. Bei Werten, die in numerische oder Datetime-Datentypen konvertiert werden, hat diese Einstellung keine Auswirkung, da leere Werte in Nullen konvertiert werden.include_path_column : Ein boolescher Wert, um Pfadinformationen als Spalte in der Tabelle beizubehalten. Der Standardwert lautet „False“. Diese Einstellung hilft beim Lesen mehrerer Dateien, und Sie möchten die ursprungsbezogene Datei für einen bestimmten Datensatz kennen. Außerdem können Sie nützliche Informationen im Dateipfad speichern.support_multi_line : Standardmäßig (support_multi_line=False ), werden alle Zeilenumbrüche, einschließlich Zeilenumbrüche in an zitierten Feldwerten, als Datensatzumbruch interpretiert. Dieser Ansatz zum Lesen von Daten erhöht die Geschwindigkeit und ermöglicht eine Optimierung für die parallele Ausführung auf mehreren CPU-Kernen. Dies kann jedoch dazu führen, dass mehr Datensätze mit falsch ausgerichteten Feldwerten im Hintergrund produziert werden. Legen Sie diesen Wert fest, True wenn die durch Trennzeichen getrennten Dateien bekanntermaßen Zeilenumbrüche enthalten. |
read_parquet |
Fügt einen Transformationsschritt hinzu, um die in paths |
include_path_column : Boolescher Wert, um die Pfadinformationen als Tabellenspalte beizubehalten. Der Standardwert lautet „False“. Diese Einstellung hilft ihnen beim Lesen mehrerer Dateien, und Sie möchten die ursprüngliche Datei für einen bestimmten Datensatz kennen. Außerdem können Sie nützliche Informationen im Dateipfad speichern.HINWEIS: MLTable unterstützt nur Lesevorgänge von Parkettdateien mit Spalten, die aus primitiven Typen bestehen. Spalten, die Arrays enthalten, werden nicht unterstützt. |
read_delta_lake |
Fügt einen Transformationsschritt zum Lesen eines Delta Lake-Ordners hinzu, der in paths bereitgestellt wird. Sie können die Daten zu einem bestimmten Zeitstempel oder einer bestimmten Version lesen. |
timestamp_as_of : Zeichenfolge. Zeitstempel, der für Zeitreisen in den spezifischen Delta Lake-Daten angegeben werden soll. Um Daten zu einem bestimmten Zeitpunkt zu lesen, sollte die Datetime-Zeichenfolge über ein RFC-3339/ISO-8601-Format verfügen (z. B. "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").version_as_of : Integer. Version, die für Zeitreisen in den spezifischen Delta Lake-Daten angegeben werden soll.Sie müssen einen Wert von timestamp_as_of oder version_as_of |
read_json_lines |
Fügt einen Transformationsschritt hinzu, um die json-Datei(en) zu lesen, die in paths |
include_path_column : Ein boolescher Wert, um Pfadinformationen als MLTable-Spalte beizubehalten. Der Standardwert lautet „False“. Diese Einstellung hilft ihnen beim Lesen mehrerer Dateien, und Sie möchten die ursprüngliche Datei für einen bestimmten Datensatz kennen. Darüber hinaus können Sie nützliche Informationen im Dateipfad beibehalten.invalid_lines : Bestimmt, wie Zeilen mit ungültiger JSON behandelt werden. Unterstützte Werte: error und drop . Der Standardwert lautet error .encoding : Geben Sie die Dateicodierung an. Unterstützte Codierungen: utf8 , , iso88591 , ascii latin1 , utf16 , , utf32 , und windows1252 utf8bom . Der Standardwert lautet utf8 . |
Weitere Transformationen
Transformation | Beschreibung | Parameter | Beispiel(e) |
---|---|---|---|
convert_column_types |
Fügt einen Transformationsschritt hinzu, um die angegebenen Spalten in die jeweiligen neuen Typen zu konvertieren. | columns Ein Array von Spaltennamen, die konvertiert werden sollen column_type Der Typ, in den Sie konvertieren möchten ( int , float , , string , boolean ) datetime |
- convert_column_types: Die Spalte für das Alter in ganze Zahlen konvertieren. - convert_column_types: Die Datumsspalte in das Format dd/mm/yyyy konvertieren. Weitere Informationen zur datetime-Konvertierung finden Sie unter to_datetime .- convert_column_types: Konvertieren sie die is_weekday Spalte in einen booleschen Wert; Ja/true/1 Werte in der Spaltenzuordnung True und nein/false/0-Werte in der Spaltenzuordnung False Weitere to_bool Informationen zur booleschen Konvertierung |
drop_columns |
Fügt einen Transformationsschritt hinzu, um bestimmte Spalten aus dem Dataset zu entfernen. | Ein Array von zu löschenden Spaltennamen. | - drop_columns: ["col1", "col2"] |
keep_columns |
Fügt einen Transformationsschritt hinzu, um die angegebenen Spalten beizubehalten und alle anderen Aus dem Dataset zu entfernen. | Ein Array von Spaltennamen, die beibehalten werden sollen | - keep_columns: ["col1", "col2"] |
extract_columns_from_partition_format |
Fügt einen Transformationsschritt hinzu, um die Partitionsinformationen der einzelnen Pfade zu verwenden und sie dann basierend auf dem angegebenen Partitionsformat in Spalten zu extrahieren. | Zu verwendendes Partitionsformat | - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} erstellt eine Datetime-Spalte, wobei "jjjj", "MM", "tt", "HH", "mm" und "ss" verwendet werden, um Jahr, Monat, Tag, Stunde, Minute und zweite Werte für den Datumstimetyp zu extrahieren. |
filter |
Filtern Sie die Daten, und lassen Sie nur die Datensätze zurück, die mit dem angegebenen Ausdruck übereinstimmen. | Ein Ausdruck als Zeichenfolge | - filter: 'col("temperature") > 32 and col("location") == "UK"' Verlassen Sie nur Zeilen, bei denen die Temperatur 32 überschreitet, und UK ist der Standort. |
skip |
Fügt einen Transformationsschritt hinzu, um die ersten Zählungszeilen dieser MLTable zu überspringen. | Anzahl der zu überspringenden Zeilen | - skip: 10 Überspringen der ersten 10 Zeilen |
take |
Fügt einen Transformationsschritt hinzu, um die ersten Zählungszeilen dieser MLTable auszuwählen. | Anzahl der Zeilen vom Anfang der Tabelle, die zu übernehmen sind | - take: 5 Nehmen Sie die ersten fünf Zeilen. |
take_random_sample |
Fügt einen Transformationsschritt hinzu, um jede Zeile dieser MLTable mit einer Zufallswahrscheinlichkeit auszuwählen. | probability Die Wahrscheinlichkeit, eine einzelne Zeile auszuwählen. Muss im Bereich [0,1] liegen. seed Optionaler zufallsfreier Seed |
- take_random_sample: Nehmen Sie eine Zufällige Stichprobe von 10 Prozent von Zeilen mit einem zufälligen Ausgangswert von 123 |
Beispiele
Beispiele für die Verwendung von MLTables. Weitere Beispiele finden Sie unter:
Schnellstart
In dieser Schnellstartanleitung wird das berühmte Iris-Dataset von einem öffentlichen HTTPS-Server gelesen. Um fortzufahren, müssen Sie die MLTable
Dateien in einem Ordner platzieren. Erstellen Sie zuerst den Ordner und MLTable
die Datei mit:
mkdir ./iris
cd ./iris
touch ./MLTable
Platzieren Sie als Nächstes diesen Inhalt in der MLTable
Datei:
$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
Sie können dann in Pandas materialisieren mit:
Wichtig
Sie müssen das mltable
Python SDK installiert haben. Installieren Sie dieses SDK mit:
pip install mltable
.
import mltable
tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()
Stellen Sie sicher, dass die Daten eine neue Spalte mit dem Namen Path
enthalten. Diese Spalte enthält den https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
Datenpfad.
Die CLI kann eine Datenressource erstellen:
az ml data create --name iris-from-https --version 1 --type mltable --path ./iris
Der Ordner mit den MLTable
automatischen Uploads in den Cloudspeicher (der standardmäßige Azure Machine Learning-Datenspeicher).
Tipp
Azure Machine Learning-Datenobjekte ähneln Lesezeichen (Favoriten) in Webbrowsern. Anstatt sich lange URIs (Speicherpfade) zu merken, die auf Ihre am häufigsten verwendeten Daten verweisen, können Sie eine Datenressource erstellen und dann mit einem Anzeigenamen auf diese Ressource zugreifen.
Textdateien mit Trennzeichen
$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
Wichtig
Einschränkung: mltable
unterstützt nicht Extrahieren von Partitionsschlüsseln beim Lesen von Daten aus Delta Lake.
Die mltable
-Transformation extract_columns_from_partition_format
funktioniert nicht, wenn Sie Delta Lake-Daten über mltable
lesen.
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