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 , abfss en 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 , , iso88591 latin1 , ascii , , utf16 , , utf32 , , en utf8bom windows1252 . 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 :Snaar. 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 bewareninvalid_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 , , iso88591 latin1 , ascii , , utf16 , , utf32 , , en utf8bom windows1252 . 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: Converteer de kolom Leeftijd naar een geheel getal. - convert_column_types: Converteer de datumkolom naar de notatie dd/mm/yyyy . Lees to_datetime voor meer informatie over datum/tijd-conversie.- convert_column_types: Converteer de is_weekday kolom naar een Booleaanse waarde; Ja/waar/1 waarden in de kolomtoewijzing aan True en 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: 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 Path
bevatten. 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