Megosztás a következőn keresztül:


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. patternTá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_ofversion_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:
   - oszlopok: [Kor]
     column_type: int

Az Életkor oszlop átalakítása egész számmá.

- convert_column_types:
   - oszlopok: dátum
     column_type:
         datetime:
            Formátumok:
            - "%d/%m/%Y"

Konvertálja a dátumoszlopot formátummá dd/mm/yyyy. További to_datetime információ a datetime konverzióról.

- convert_column_types:
   - oszlopok: [is_weekday]
     column_type:
         Logikai:
            true_values:"igen", "igaz", "1"
            false_values:"nem", "hamis", "0"

Konvertálja a is_weekday oszlopot logikai értékké; az oszloptérkép Trueigen/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:
   valószínűség: 0,10
   mag:123

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

Következő lépések