Schéma YAML tabulky MLtable (v2)
PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)
Zdrojové schéma JSON najdete na adrese https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.
Poznámka:
Syntaxe YAML podrobná v tomto dokumentu je založená na schématu JSON pro nejnovější verzi rozšíření ML CLI v2. Tato syntaxe je zaručena pouze pro práci s nejnovější verzí rozšíření ML CLI v2. Schémata pro starší verze rozšíření najdete na adrese https://azuremlschemasprod.azureedge.net/.
Jak vytvářet MLTable
soubory
Tento článek obsahuje pouze informace o schématu MLTable
YAML. Další informace o mlTable, včetně
MLTable
vytváření souborů- Vytváření artefaktů MLTable
- spotřeba v Pandas a Sparku
- Kompletní příklady
Navštivte stránku Práce s tabulkami ve službě Azure Machine Learning.
Syntaxe YAML
Klíč | Typ | Popis | Povolené hodnoty | Default value |
---|---|---|---|---|
$schema |
string | Schéma YAML. Pokud k vytvoření souboru YAML použijete rozšíření Visual Studio Code služby Azure Machine Learning, můžete vyvolat dokončování schématu a prostředků, pokud do horní části souboru zahrnete $schema |
||
type |
const | mltable abstrahuje definici schématu pro tabulková data. Příjemci dat můžou snadněji materializovat tabulku do datového rámce Pandas/Dask/Spark. |
mltable |
mltable |
paths |
pole | Cesty můžou být file cesta, folder cesta nebo pattern cesty. pattern podporuje vzory globbingu, které určují sady názvů souborů se zástupnými znaky (* , ? , , [abc] [a-z] ). Podporované typy identifikátorů URI: azureml , https , abfss wasbs , a adl . Další informace o použití azureml:// formátu URI najdete v syntaxi Core yaml. |
file folder pattern |
|
transformations |
pole | Definovaná sekvence transformace použitá na data načtená z definovaných cest. Další informace najdete v transformacích. | 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 |
Transformace
Čtení transformací
Transformace čtení | Popis | Parametry |
---|---|---|
read_delimited |
Přidá krok transformace pro čtení textových souborů s oddělovači zadaných v paths |
infer_column_types : Logická hodnota pro odvození datových typů sloupců Výchozí hodnota je True. Odvození typu vyžaduje, aby aktuální výpočetní prostředky mohly přistupovat ke zdroji dat. V současné době odvození typu načítá pouze prvních 200 řádků.encoding : Zadejte kódování souboru. Podporované kódování: , , , , , , , utf8bom , a windows1252 . utf16 utf32 ascii latin1 iso88591 utf8 Výchozí kódování: utf8 .header : uživatel může zvolit jednu z těchto možností: no_header , from_first_file , all_files_different_headers , all_files_same_headers . Výchozí hodnota all_files_same_headers je .delimiter : Oddělovač, který rozdělí sloupce.empty_as_string : Určuje, jestli se hodnoty prázdných polí mají načíst jako prázdné řetězce. Výchozí hodnota (False) čte prázdné hodnoty polí jako hodnoty null. Předání tohoto nastavení jako True přečte prázdné hodnoty polí jako prázdné řetězce. U hodnot převedených na číselné datové typy nebo datové typy datetime toto nastavení nemá žádný vliv, protože prázdné hodnoty se převedou na hodnoty null.include_path_column : Logická hodnota pro zachování informací o cestě jako sloupce v tabulce. Výchozí hodnota je False. Toto nastavení pomáhá při čtení více souborů a chcete znát původní soubor pro konkrétní záznam. Kromě toho můžete mít užitečné informace v cestě k souboru.support_multi_line : Ve výchozím nastavenísupport_multi_line=False se všechny konce řádků, včetně konců řádků v hodnotách v uvozových polích, interpretují jako konec záznamu. Tento přístup ke čtení dat zvyšuje rychlost a nabízí optimalizaci paralelního spouštění na více jádrech procesoru. Může to ale vést k tiché produkci více záznamů s nesprávně zarovnanými hodnotami polí. Tuto hodnotu nastavte, pokud True jsou soubory s oddělovači známé, že obsahují konce řádků v uvozových znachech. |
read_parquet |
Přidá krok transformace pro čtení souborů ve formátu Parquet uvedených v paths |
include_path_column : Logická hodnota pro zachování informací o cestě jako sloupce tabulky. Výchozí hodnota je False. Toto nastavení vám pomůže při čtení více souborů a chcete znát původní soubor pro konkrétní záznam. Kromě toho můžete mít užitečné informace v cestě k souboru.POZNÁMKA: MLTable podporuje pouze čtení souborů parquet, které obsahují sloupce skládající se z primitivních typů. Sloupce obsahující pole nejsou podporovány. |
read_delta_lake |
Přidá krok transformace pro čtení složky Delta Lake, která paths je součástí . Data můžete číst v určitém časovém razítku nebo verzi. |
timestamp_as_of :Řetězec. Časové razítko, které se má zadat pro časovou cestu pro konkrétní data Delta Lake. Pokud chcete číst data v určitém časovém okamžiku, řetězec datetime by měl mít formát RFC-3339/ISO-8601 (například: "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").version_as_of :Celé číslo. Verze, která se má zadat pro časovou cestu pro konkrétní data Delta Lake.Musíte zadat jednu hodnotu timestamp_as_of nebo version_as_of |
read_json_lines |
Přidá krok transformace pro čtení souborů JSON zadaných v paths |
include_path_column : Logická hodnota pro zachování informací o cestě ve sloupci MLTable. Výchozí hodnota je False. Toto nastavení vám pomůže při čtení více souborů a chcete znát původní soubor pro konkrétní záznam. Kromě toho můžete zachovat užitečné informace v cestě k souboru.invalid_lines : Určuje způsob zpracování řádků s neplatným kódem JSON. Podporované hodnoty: error a drop . Výchozí hodnota error encoding : Zadejte kódování souboru. Podporované kódování: , , , , , , , utf8bom , a windows1252 . utf16 utf32 ascii latin1 iso88591 utf8 Výchozí hodnota utf8 |
Další transformace
Transformace | Popis | Parametry | Příklady |
---|---|---|---|
convert_column_types |
Přidá krok transformace pro převod zadaných sloupců na příslušné nové typy. | columns Pole názvů sloupců pro převod column_type Typ, na který chcete převést ( int , float , string , boolean , datetime ) |
- convert_column_types: Převede sloupec Věk na celé číslo. - convert_column_types: Převeďte sloupec data do formátu dd/mm/yyyy . Přečtěte si to_datetime další informace o převodu data a času.- convert_column_types: Převedení sloupce is_weekday na logickou hodnotu; Ano/true/1 hodnoty ve sloupci mapě na True hodnoty a nepravda/0 ve sloupci mapě na False . Další to_bool informace o logickém převodu |
drop_columns |
Přidá krok transformace pro odebrání konkrétních sloupců z datové sady. | Pole názvů sloupců, které se mají vypustit | - drop_columns: ["col1", "col2"] |
keep_columns |
Přidá krok transformace, který zachová zadané sloupce a odebere všechny ostatní z datové sady. | Pole názvů sloupců, které se mají zachovat | - keep_columns: ["col1", "col2"] |
extract_columns_from_partition_format |
Přidá krok transformace, který použije informace o oddílu každé cesty a pak je extrahuje do sloupců na základě zadaného formátu oddílu. | formát oddílu, který se má použít | - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} vytvoří sloupec datetime, kde "yyyy", "MM", 'dd', 'HH', 'mm' a 'ss' se použijí k extrakci roku, měsíce, dne, hodiny, minuty a druhé hodnoty pro typ datetime. |
filter |
Vyfiltrujte data a ponechte jenom záznamy, které odpovídají zadanému výrazu. | Výraz jako řetězec | - filter: 'col("temperature") > 32 and col("location") == "UK"' Ponechejte pouze řádky, ve kterých teplota překročí 32, a Velká Británie je umístěním. |
skip |
Přidá krok transformace, který přeskočí první řádky počtu této tabulky MLTable. | Počet řádků, které se mají přeskočit | - skip: 10 Přeskočit prvních 10 řádků |
take |
Přidá krok transformace, který vybere první řádky této tabulky MLTable. | Počet řádků z horní části tabulky, které se mají vzít | - take: 5 Vezměte prvních pět řádků. |
take_random_sample |
Přidá krok transformace, který náhodně vybere každý řádek této tabulky MLTable s pravděpodobností. | probability Pravděpodobnost výběru jednotlivého řádku Musí být v rozsahu [0,1]. seed Volitelné náhodné počáteční |
- take_random_sample: Vezměte 10% náhodný vzorek řádků pomocí náhodného počátečního vzorku 123 |
Příklady
Příklady použití MLTable Další příklady najdete tady:
Rychlé zprovoznění
Tento rychlý start přečte známou datovou sadu iris z veřejného serveru HTTPS. Pokud chcete pokračovat, musíte soubory umístit MLTable
do složky. Nejprve vytvořte složku a MLTable
soubor pomocí:
mkdir ./iris
cd ./iris
touch ./MLTable
Pak tento obsah umístěte do MLTable
souboru:
$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
Pak můžete materializovat do pandas pomocí:
Důležité
Musíte mít nainstalovanou mltable
sadu Python SDK. Nainstalujte tuto sadu SDK pomocí:
pip install mltable
.
import mltable
tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()
Ujistěte se, že data obsahují nový sloupec s názvem Path
. Tento sloupec obsahuje https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
cestu k datům.
Rozhraní příkazového řádku může vytvořit datový prostředek:
az ml data create --name iris-from-https --version 1 --type mltable --path ./iris
Složka obsahující automatické nahrávání do cloudového MLTable
úložiště (výchozí úložiště dat služby Azure Machine Learning).
Tip
Datový prostředek služby Azure Machine Learning se podobá záložkám webového prohlížeče (oblíbené položky). Místo zapamatování dlouhých identifikátorů URI (cest k úložišti), které odkazují na nejčastěji používaná data, můžete vytvořit datový asset a pak k ho získat přístup popisným názvem.
Textové soubory s oddělovači
$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
Důležité
Omezení: mltable
Nepodporuje extrakci klíčů oddílů při čtení dat z Delta Lake.
Transformace mltable
extract_columns_from_partition_format
nebude fungovat při čtení dat Delta Lake přes 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