Share via


CLI (v2) YAMLtable-schema

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

U vindt het JSON-bronschema op https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.

Notitie

De YAML-syntaxis die in dit document wordt beschreven, is gebaseerd op het JSON-schema voor de nieuwste versie van de ML CLI v2-extensie. Deze syntaxis werkt gegarandeerd alleen met de nieuwste versie van de ML CLI v2-extensie. U vindt de schema's voor oudere extensieversies op https://azuremlschemasprod.azureedge.net/.

Bestanden maken MLTable

Dit artikel bevat alleen informatie over het MLTable YAML-schema. Voor meer informatie over MLTable, waaronder

  • MLTable bestandscreatie
  • MLTable-artefacten maken
  • verbruik in Pandas en Spark
  • end-to-end voorbeelden

ga naar Werken met tabellen in Azure Machine Learning.

YAML-syntaxis

Sleutel Type Description Toegestane waarden Default value
$schema tekenreeks Het YAML-schema. Als u de Azure Machine Learning Visual Studio Code-extensie gebruikt om het YAML-bestand te maken, kunt u schema- en resourcevoltooiingen aanroepen als u het bestand boven aan het bestand opneemt $schema
type Const mltable abstraheert de schemadefinitie voor tabellaire gegevens. Gegevensgebruikers kunnen de tabel eenvoudiger materialiseren in een Pandas-/Dask-/Spark-dataframe mltable mltable
paths matrix Paden kunnen een file pad, folder pad of pattern voor paden zijn. pattern ondersteunt globbingpatronen waarmee sets bestandsnamen met jokertekens (*, ?, [abc], ) [a-z]worden opgegeven. Ondersteunde URI-typen: azureml, https, wasbs, abfssen adl. Ga naar de yaml-syntaxis van Core voor meer informatie over het gebruik van de azureml:// URI-indeling file
folder
pattern
transformations matrix Een gedefinieerde transformatiereeks, toegepast op gegevens die zijn geladen vanuit gedefinieerde paden. Ga naar transformaties voor meer informatie 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

Transformaties

Transformaties lezen

Leestransformatie Beschrijving Parameters
read_delimited Voegt een transformatiestap toe om de tekstbestanden met scheidingstekens te lezen die zijn opgegeven in paths infer_column_types: Booleaanse waarde om kolomgegevenstypen af te stellen. De standaardwaarde is Waar. Voor typedeductie is vereist dat de huidige berekening toegang heeft tot de gegevensbron. Op dit moment haalt type deductie alleen de eerste 200 rijen op.

encoding: Geef de bestandscodering op. Ondersteunde coderingen: utf8, , iso88591latin1, ascii, , utf16, , utf32, , en utf8bomwindows1252. Standaardcodering: utf8.

header: de gebruiker kan een van deze opties kiezen: no_header, from_first_file, all_files_different_headers. all_files_same_headers Standaard ingesteld op all_files_same_headers.

delimiter: Het scheidingsteken waarmee de kolommen worden gesplitst.

empty_as_string: Hiermee geeft u op of lege veldwaarden als lege tekenreeksen moeten worden geladen. De standaardwaarde (Onwaar) leest lege veldwaarden als null-waarden. Als u deze instelling doorgeeft als Waar , worden lege veldwaarden als lege tekenreeksen gelezen. Voor waarden die zijn geconverteerd naar numerieke of datum/tijd-gegevenstypen, heeft deze instelling geen effect, omdat lege waarden worden geconverteerd naar null-waarden.

include_path_column: Booleaanse waarde om padgegevens als kolom in de tabel te bewaren. Standaard ingesteld op False. Deze instelling helpt bij het lezen van meerdere bestanden en u wilt weten wat het oorspronkelijke bestand is voor een specifieke record. Daarnaast kunt u nuttige informatie in het bestandspad bewaren.

support_multi_line: Standaard (support_multi_line=False) worden alle regeleinden, inclusief regeleinden in veldwaarden tussen aanhalingsinstellingen, geïnterpreteerd als record-einde. Deze methode voor het lezen van gegevens verhoogt de snelheid en biedt optimalisatie voor parallelle uitvoering op meerdere CPU-kernen. Het kan echter leiden tot stille productie van meer records met verkeerd uitgelijnde veldwaarden. Stel deze waarde in op True het moment dat de bestanden met scheidingstekens bekend zijn om regeleinden tussen aan te geven
read_parquet Voegt een transformatiestap toe om de door Parquet opgemaakte bestanden te lezen in paths include_path_column: Booleaanse waarde om de padgegevens als een tabelkolom te behouden. Standaard ingesteld op False. Deze instelling helpt wanneer u meerdere bestanden leest en u het oorspronkelijke bestand voor een specifieke record wilt weten. Daarnaast kunt u nuttige informatie in het bestandspad bewaren.

OPMERKING: MLTable ondersteunt alleen leesbewerkingen van Parquet-bestanden met kolommen die bestaan uit primitieve typen. Kolommen met matrices worden niet ondersteund
read_delta_lake Hiermee voegt u een transformatiestap toe om een Delta Lake-map te lezen die is opgegeven in paths. U kunt de gegevens lezen op een bepaalde tijdstempel of versie timestamp_as_of:Tekenreeks. Tijdstempel die moet worden opgegeven voor tijdreizen op de specifieke Delta Lake-gegevens. Als u gegevens op een bepaald tijdstip wilt lezen, moet de datum/tijd-tekenreeks een RFC-3339/ISO-8601-indeling hebben (bijvoorbeeld: "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").

version_as_of:Geheel getal. Versie die moet worden opgegeven voor tijdreizen op de specifieke Delta Lake-gegevens.

U moet één waarde opgeven van timestamp_as_of of version_as_of
read_json_lines Voegt een transformatiestap toe om de json-bestanden te lezen die zijn opgegeven in paths include_path_column: Booleaanse waarde voor het bewaren van padgegevens als een MLTable-kolom. Standaard ingesteld op False. Deze instelling helpt wanneer u meerdere bestanden leest en u het oorspronkelijke bestand voor een specifieke record wilt weten. Daarnaast kunt u nuttige informatie in het bestandspad bewaren

invalid_lines: bepaalt hoe u regels verwerkt die ongeldige JSON hebben. Ondersteunde waarden: error en drop. Standaard ingesteld op error

encoding: Geef de bestandscodering op. Ondersteunde coderingen: utf8, , iso88591latin1, ascii, , utf16, , utf32, , en utf8bomwindows1252. Standaard ingesteld op utf8

Andere transformaties

Transformatie Beschrijving Parameters Voorbeeld(en)
convert_column_types Voegt een transformatiestap toe om de opgegeven kolommen te converteren naar hun respectieve opgegeven nieuwe typen columns
Een matrix met kolomnamen die moeten worden geconverteerd

column_type
Het type waarnaar u wilt converteren (int, float, string, boolean) datetime
- convert_column_types:
   - kolommen: [Leeftijd]
     column_type: int

Converteer de kolom Leeftijd naar een geheel getal.

- convert_column_types:
   - kolommen: datum
     column_type:
         Datetime:
            Formaten:
            - %d/%m/%Y

Converteer de datumkolom naar de notatie dd/mm/yyyy. Lees to_datetime voor meer informatie over datum/tijd-conversie.

- convert_column_types:
   - kolommen: [is_weekday]
     column_type:
         Booleaanse:
            true_values:['ja', 'waar', '1']
            false_values:['nee', 'onwaar', '0']

Converteer de is_weekday kolom naar een Booleaanse waarde; Ja/waar/1 waarden in de kolomtoewijzing aan Trueen nee/onwaar/0 waarden in de kolomtoewijzing aan False. Lees to_bool voor meer informatie over booleaanse conversie
drop_columns Hiermee voegt u een transformatiestap toe om specifieke kolommen uit de gegevensset te verwijderen Een matrix met kolomnamen die moeten worden verwijderd - drop_columns: ["col1", "col2"]
keep_columns Voegt een transformatiestap toe om de opgegeven kolommen te behouden en alle andere kolommen uit de gegevensset te verwijderen Een matrix met kolomnamen die u wilt behouden - keep_columns: ["col1", "col2"]
extract_columns_from_partition_format Voegt een transformatiestap toe om de partitiegegevens van elk pad te gebruiken en extraheert deze vervolgens in kolommen op basis van de opgegeven partitieindeling. te gebruiken partitie-indeling - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} maakt een datum/tijd-kolom, waarbij 'jjjj', 'MM', 'dd', 'uu', 'mm' en 'ss' worden gebruikt om jaar-, maand-, dag-, uur-, minuut- en tweede waarden voor het datum/tijd-type te extraheren
filter Filter de gegevens en laat alleen de records die overeenkomen met de opgegeven expressie. Een expressie als een tekenreeks - filter: 'col("temperature") > 32 and col("location") == "UK"'
Laat alleen rijen achter waar de temperatuur groter is dan 32 en het VK de locatie is
skip Voegt een transformatiestap toe om de eerste tellingsrijen van deze MLTable over te slaan. Een telling van het aantal rijen dat moet worden overgeslagen - skip: 10
Eerste 10 rijen overslaan
take Hiermee voegt u een transformatiestap toe om de eerste tellingsrijen van deze MLTable te selecteren. Een telling van het aantal rijen boven aan de tabel dat moet worden uitgevoerd - take: 5
Neem de eerste vijf rijen.
take_random_sample Hiermee voegt u een transformatiestap toe om elke rij van deze MLTable willekeurig te selecteren, met waarschijnlijkheidskans. probability
De waarschijnlijkheid van het selecteren van een afzonderlijke rij. Moet zich in het bereik [0,1] hebben.

seed
Optionele willekeurige seed
- take_random_sample:
   kans: 0,10
   seed:123

Neem een willekeurige steekproef van 10 procent rijen met behulp van een willekeurige seed van 123

Voorbeelden

Voorbeelden van MLTable-gebruik. Meer voorbeelden vindt u op:

Snelstart

In deze quickstart wordt de beroemde irisgegevensset van een openbare https-server gelezen. Als u wilt doorgaan, moet u de MLTable bestanden in een map plaatsen. Maak eerst de map en MLTable het bestand met:

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

Plaats vervolgens deze inhoud in het MLTable bestand:

$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

U kunt vervolgens in Pandas materialiseren met:

Belangrijk

U moet de mltable Python SDK hebben geïnstalleerd. Installeer deze SDK met:

pip install mltable.

import mltable

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

Zorg ervoor dat de gegevens een nieuwe kolom met de naam Pathbevatten. Deze kolom bevat het https://azuremlexamples.blob.core.windows.net/datasets/iris.csv gegevenspad.

De CLI kan een gegevensasset maken:

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

De map met de MLTable automatisch uploadt naar cloudopslag (de standaard Azure Machine Learning-gegevensopslag).

Tip

Een Azure Machine Learning-gegevensasset is vergelijkbaar met bladwijzers van webbrowsers (favorieten). In plaats van lange URI's (opslagpaden) te onthouden die verwijzen naar uw meest gebruikte gegevens, kunt u een gegevensasset maken en die asset vervolgens openen met een beschrijvende naam.

Tekstbestanden met scheidingstekens

$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   

Belangrijk

Beperking: mltable biedt geen ondersteuning voor het extraheren van partitiesleutels bij het lezen van gegevens uit Delta Lake. De mltable transformatie extract_columns_from_partition_format werkt niet wanneer u Delta Lake-gegevens leest 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

Volgende stappen