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, asciilatin1, utf16, , utf32, und windows1252utf8bom. 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, asciilatin1, utf16, , utf32, und windows1252utf8bom. 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:
   - columns: [Age]
     column_type: int

Die Spalte für das Alter in ganze Zahlen konvertieren.

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

Die Datumsspalte in das Format dd/mm/yyyy konvertieren. Weitere Informationen zur datetime-Konvertierung finden Sie unter to_datetime.

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

Konvertieren sie die is_weekday Spalte in einen booleschen Wert; Ja/true/1 Werte in der Spaltenzuordnung Trueund 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:
   probability: 0.10
   seed:123

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 Pathenthalten. 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

Nächste Schritte