Sdílet prostřednictvím


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. patternpodporuje vzory globbingu, které určují sady názvů souborů se zástupnými znaky (*, ?, , [abc][a-z]). Podporované typy identifikátorů URI: azureml, https, abfsswasbs, 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. utf16utf32asciilatin1iso88591utf8 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_headersje .

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á pathsje 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. utf16utf32asciilatin1iso88591utf8 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:
   - sloupce: [Věk]
     column_type: int

Převede sloupec Věk na celé číslo.

- convert_column_types:
   - sloupce: datum
     column_type:
         datetime:
            formáty:
            - %d/%m/%Y

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:
   - sloupce: [is_weekday]
     column_type:
         booleovský:
            true_values:['yes', 'true', '1']
            false_values:['no', 'false', '0']

Převedení sloupce is_weekday na logickou hodnotu; Ano/true/1 hodnoty ve sloupci mapě na Truehodnoty 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:
   pravděpodobnost: 0,10
   počáteční hodnota:123

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

Další kroky