PARANCSSOR (v2) MLtable YAML-séma
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
A forrás JSON-sémát a következő helyen https://azuremlschemas.azureedge.net/latest/MLTable.schema.jsontalálja: .
Feljegyzés
A dokumentumban részletezett YAML-szintaxis az ML CLI v2 bővítmény legújabb verziójának JSON-sémáján alapul. Ez a szintaxis garantáltan csak az ML CLI v2 bővítmény legújabb verziójával működik. A régebbi bővítményverziók sémáit a következő helyen https://azuremlschemasprod.azureedge.net/találja: .
Fájlok készítése MLTable
Ez a cikk csak a MLTable
YAML-sémával kapcsolatos információkat ismerteti. További információ az MLTable-ról, beleértve a
MLTable
fájlkészítés- MLTable-összetevők létrehozása
- használat a Pandasban és a Sparkban
- végpontok közötti példák
látogasson el a Táblák használata az Azure Machine Learningben című témakörben.
YAML-szintaxis
Kulcs | Típus | Leírás | Megengedett értékek | Alapértelmezett érték |
---|---|---|---|---|
$schema |
húr | A YAML-séma. Ha az Azure Machine Learning Visual Studio Code-bővítményt használja a YAML-fájl létrehozásához, meghívhatja a sémákat és az erőforrás-kiegészítéseket, ha a fájl tetején szerepel $schema |
||
type |
Const | mltable a táblázatos adatok sémadefinícióját absztrakciója. Az adatfelhasználók egyszerűbben alakíthatják a táblát Pandas-/Dask-/Spark-adatkeretekké |
mltable |
mltable |
paths |
array | Az elérési utak lehetnek file elérési utak, folder elérési utak vagy pattern elérési utak. pattern Támogatja a helyettesítő karaktereket (* , , ? , [abc] [a-z] ) tartalmazó fájlnévkészleteket meghatározó globbing-mintákat. Támogatott URI-típusok: azureml , https , wasbs , abfss és adl . Az URI-formátum használatával kapcsolatos további információkért látogasson el a azureml:// Core yaml szintaxisára |
file folder pattern |
|
transformations |
array | Definiált átalakítási sorozat, amely a definiált útvonalakról betöltött adatokra van alkalmazva. További információkért látogasson el az Átalakítások szolgáltatásra | 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 |
Átalakítások
Átalakítások olvasása
Átalakítás olvasása | Leírás | Paraméterek |
---|---|---|
read_delimited |
Átalakítási lépés hozzáadása a megadott tagolt szövegfájl(ok) olvasásához paths |
infer_column_types : Logikai érték az oszlop adattípusaiból való következtetéshez. Alapértelmezés szerint igaz. A típuskövetkeztetéshez az aktuális számításnak hozzá kell férni az adatforráshoz. Jelenleg a típus következtetése csak az első 200 sort húzza le.encoding : Adja meg a fájlkódolást. Támogatott kódolások: utf8 , iso88591 , latin1 , ascii , utf16 , utf32 , utf8bom és windows1252 . Alapértelmezett kódolás: utf8 .header : a felhasználó a következő lehetőségek közül választhat: no_header , from_first_file , all_files_different_headers , all_files_same_headers . Alapértelmezett érték: all_files_same_headers .delimiter : Az oszlopokat felosztó elválasztó.empty_as_string : Megadja, hogy az üres mezőértékek üres sztringként legyenek-e betöltve. Az alapértelmezett érték (False) üres mezőértékeket olvas null értékként. Ha igaz értékként adja meg ezt a beállítást, üres sztringként olvassa be az üres mezőértékeket. A numerikus vagy datetime adattípusokká konvertált értékek esetében ez a beállítás nincs hatással, mert az üres értékek null értékké lesznek konvertálva.include_path_column : Logikai érték az elérési út adatainak oszlopként való megőrzéséhez a táblában. Alapértelmezés szerint Hamis. Ez a beállítás segít több fájl olvasásában, és tudni szeretné egy adott rekord eredeti fájlját. Emellett a fájl elérési útján is megőrizheti a hasznos információkat.support_multi_line : Alapértelmezés szerint (support_multi_line=False ) az összes sortörés, beleértve az idézett mezőértékekben lévő sortöréseket is, rekordtörésként lesz értelmezve. Ez az adatolvasási megközelítés növeli a sebességet, és optimalizálást kínál a párhuzamos végrehajtáshoz több processzormagon. Ez azonban több rekord csendes előállítását eredményezheti, ha a mezőértékek nem megfelelően jelennek meg. Állítsa be ezt az értéket arra az értékre True , amikor a tagolt fájlok ismerten idézőjeles sortöréseket tartalmaznak |
read_parquet |
Átalakítási lépés hozzáadása a parquet formátumú fájl(ok) olvasásához paths |
include_path_column : Logikai érték az elérési út adatainak táblaoszlopként való megőrzéséhez. Alapértelmezés szerint Hamis. Ez a beállítás segít, ha több fájlt olvas, és tudni szeretné egy adott rekord eredeti fájlját. Emellett a fájl elérési útján is megőrizheti a hasznos információkat.MEGJEGYZÉS: Az MLTable csak olyan parquet-fájlok olvasását támogatja, amelyek oszlopai primitív típusokból állnak. A tömböket tartalmazó oszlopok nem támogatottak |
read_delta_lake |
Hozzáad egy átalakítási lépést a delta lake-mappa beolvasásához a következőben paths : . Az adatokat egy adott időbélyegen vagy verzióban olvashatja el |
timestamp_as_of :Húr. Az adott Delta Lake-adatokon az időutazáshoz megadható időbélyeg. Ha egy adott időpontban szeretne adatokat olvasni, a datetime sztringnek RFC-3339/ISO-8601 formátumúnak kell lennie (például: "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").version_as_of :Egész szám. Az adott Delta Lake-adatokon az időutazáshoz megadható verzió.Meg kell adnia egy értéket a timestamp_as_of version_as_of |
read_json_lines |
Átalakítási lépés hozzáadása a megadott json-fájl(ok) olvasásához paths |
include_path_column : Logikai érték az elérési út adatainak MLTable oszlopként való megőrzéséhez. Alapértelmezés szerint Hamis. Ez a beállítás segít, ha több fájlt olvas, és tudni szeretné egy adott rekord eredeti fájlját. Emellett a fájl elérési útján is megőrizheti a hasznos információkat.invalid_lines : Azt határozza meg, hogyan kezelhetők az érvénytelen JSON-kódot tartalmazó sorok. Támogatott értékek: error és drop . Alapértelmezett érték: error encoding : Adja meg a fájlkódolást. Támogatott kódolások: utf8 , iso88591 , latin1 , ascii , utf16 , utf32 , utf8bom és windows1252 . Alapértelmezett érték: utf8 |
Egyéb átalakítások
Átalakítás | Leírás | Paraméterek | Példa(ok) |
---|---|---|---|
convert_column_types |
Átalakítási lépés hozzáadása a megadott oszlopok megfelelő új típussá alakításához | columns Átalakítandó oszlopnevek tömbje column_type Az a típus, amelybe konvertálni szeretné ( int , float , string , boolean , ) datetime |
- convert_column_types: Az Életkor oszlop átalakítása egész számmá. - convert_column_types: Konvertálja a dátumoszlopot formátummá dd/mm/yyyy . További to_datetime információ a datetime konverzióról.- convert_column_types: Konvertálja a is_weekday oszlopot logikai értékké; az oszloptérkép True igen/igaz/1 értéke, a nem/hamis/0 érték pedig az oszloptérképen False . További to_bool információ a logikai konverzióról |
drop_columns |
Átalakítási lépés hozzáadása adott oszlopok eltávolításához az adathalmazból | Elvetendő oszlopnevek tömbje | - drop_columns: ["col1", "col2"] |
keep_columns |
Átalakítási lépést ad hozzá a megadott oszlopok megtartásához, és eltávolítja az összes többit az adatkészletből | Megőrzendő oszlopnevek tömbje | - keep_columns: ["col1", "col2"] |
extract_columns_from_partition_format |
Hozzáad egy átalakítási lépést az egyes elérési utak partícióadatainak használatához, majd kinyeri azokat oszlopokba a megadott partícióformátum alapján. | használandó partícióformátum | - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} létrehoz egy dátum/idő oszlopot, amelyben az "éé", az "MM", a "dd", a "HH", az "mm" és az "ss" a dátum/idő típus év, hónap, nap, óra, perc és második értékeinek kinyerésére szolgál. |
filter |
Szűrje az adatokat, és csak a megadott kifejezésnek megfelelő rekordokat hagyja meg. | Kifejezés sztringként | - filter: 'col("temperature") > 32 and col("location") == "UK"' Csak olyan sorokat hagyjon, ahol a hőmérséklet meghaladja a 32-et, és az Egyesült Királyság a hely |
skip |
Hozzáad egy átalakítási lépést az MLTable első darabsorainak kihagyásához. | A kihagyandó sorok száma | - skip: 10 Az első 10 sor kihagyása |
take |
Hozzáad egy átalakítási lépést az MLTable első darabsorainak kiválasztásához. | A táblázat tetejétől a felvenni kívánt sorok számának száma | - take: 5 Vegyük az első öt sort. |
take_random_sample |
Hozzáad egy átalakítási lépést, amely véletlenszerűen kiválasztja az MLTable minden sorát, valószínűségi eséllyel. | probability Az egyes sorok kiválasztásának valószínűsége. A tartománynak [0,1] tartományban kell lennie. seed Választható véletlenszerű mag |
- take_random_sample: 10%-os véletlenszerű sormintát vegyünk egy 123-ból álló véletlenszerű mag használatával |
Példák
Példák az MLTable használatára. További példákat a következő helyen talál:
Gyorsútmutató
Ez a rövid útmutató beolvassa a híres íriszadatkészletet egy nyilvános HTTPS-kiszolgálóról. A folytatáshoz a MLTable
fájlokat egy mappába kell helyeznie. Először hozza létre a mappát és MLTable
a fájlt a következőkkel:
mkdir ./iris
cd ./iris
touch ./MLTable
Ezután helyezze ezt a tartalmat a MLTable
fájlba:
$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
Ezt követően a Pandas a következőkkel valósulhat meg:
Fontos
Telepítve kell lennie a mltable
Python SDK-nak. Telepítse ezt az SDK-t a következőkkel:
pip install mltable
.
import mltable
tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()
Győződjön meg arról, hogy az adatok tartalmaznak egy új, elnevezett Path
oszlopot. Ez az oszlop tartalmazza az adatelérési https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
utat.
A parancssori felület létrehozhat egy adategységet:
az ml data create --name iris-from-https --version 1 --type mltable --path ./iris
Az automatikus feltöltést MLTable
a felhőbeli tárolóba (az alapértelmezett Azure Machine Learning-adattárba) tartalmazó mappa.
Tipp.
Az Azure Machine Learning-adategység hasonló a webböngésző könyvjelzőihez (kedvencekhez). Ahelyett, hogy a leggyakrabban használt adatokra mutató hosszú URI-kra (tárolási útvonalakra) emlékezne, létrehozhat egy adategységet, majd felhasználóbarát névvel érheti el az objektumot.
Tagolt szövegfájlok
$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
Parketta
$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
Fontos
Korlátozás: mltable
nem támogatja a partíciókulcsok kinyerését, amikor adatokat olvas be a Delta Lake-ből.
Az mltable
átalakítás extract_columns_from_partition_format
nem fog működni, ha Delta Lake-adatokat olvas be.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