Schemat YAML interfejsu wiersza polecenia (wersja 2) MLtable
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)
Źródłowy schemat JSON można znaleźć pod adresem https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.
Uwaga
Składnia YAML szczegółowo w tym dokumencie jest oparta na schemacie JSON dla najnowszej wersji rozszerzenia interfejsu wiersza polecenia uczenia maszynowego w wersji 2. Ta składnia jest gwarantowana tylko do pracy z najnowszą wersją rozszerzenia interfejsu wiersza polecenia uczenia maszynowego w wersji 2. Schematy dla starszych wersji rozszerzeń można znaleźć pod adresem https://azuremlschemasprod.azureedge.net/.
Jak tworzyć MLTable
pliki
W tym artykule przedstawiono informacje dotyczące tylko schematu MLTable
YAML. Aby uzyskać więcej informacji na temat tabeli MLTable, w tym
MLTable
tworzenie plików- Tworzenie artefaktów w formie tabeli MLTable
- zużycie w bibliotekach Pandas i Spark
- kompleksowe przykłady
Odwiedź stronę Praca z tabelami w usłudze Azure Machine Learning.
Składnia YAML
Klucz | Type | Opis | Dozwolone wartości | Domyślna wartość |
---|---|---|---|---|
$schema |
string | Schemat YAML. Jeśli używasz rozszerzenia programu Visual Studio Code usługi Azure Machine Learning do tworzenia pliku YAML, możesz wywołać uzupełnianie schematu i zasobów, jeśli umieścisz $schema go w górnej części pliku |
||
type |
const | mltable abstrakcji definicji schematu dla danych tabelarycznych. Konsumenci danych mogą łatwiej zmaterializować tabelę w ramce danych Pandas/Dask/Spark |
mltable |
mltable |
paths |
tablica | Ścieżki mogą być ścieżkami, folder ścieżkami file lub pattern ścieżkami. pattern Obsługuje wzorce globbingu , które określają zestawy nazw plików z symbolami wieloznacznymi (* , ? , [abc] , [a-z] ). Obsługiwane typy identyfikatorów URI: azureml , , https wasbs , abfss i adl . Odwiedź stronę Podstawowa składnia yaml, aby uzyskać więcej informacji na temat używania formatu identyfikatora azureml:// URI |
file folder pattern |
|
transformations |
tablica | Zdefiniowana sekwencja transformacji zastosowana do danych załadowanych ze zdefiniowanych ścieżek. Odwiedź stronę Przekształcenia, aby uzyskać więcej informacji | 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 |
Przekształcenia
Odczytywanie przekształceń
Odczytywanie transformacji | opis | Parametry |
---|---|---|
read_delimited |
Dodaje krok przekształcenia w celu odczytania rozdzielonych plików tekstowych podanych w paths |
infer_column_types : wartość logiczna do wnioskowania typów danych kolumn. Wartość domyślna to True. Wnioskowanie typu wymaga, aby bieżące zasoby obliczeniowe mogły uzyskać dostęp do źródła danych. Obecnie wnioskowanie typu ściąga tylko pierwsze 200 wierszy.encoding : Określ kodowanie pliku. Obsługiwane kodowanie: utf8 , , iso88591 , ascii latin1 utf16 , , utf32 , utf8bom , i windows1252 . Kodowanie domyślne: utf8 .header : użytkownik może wybrać jedną z następujących opcji: no_header , , all_files_different_headers from_first_file , all_files_same_headers . Wartość domyślna to all_files_same_headers .delimiter : separator dzielący kolumny.empty_as_string : określa, czy puste wartości pól powinny być ładowane jako puste ciągi. Wartość domyślna (Fałsz) odczytuje puste wartości pól jako wartości null. Przekazanie tego ustawienia jako true odczytuje puste wartości pól jako puste ciągi. W przypadku wartości przekonwertowanych na typy danych liczbowych lub data/godzina to ustawienie nie ma wpływu, ponieważ puste wartości są konwertowane na wartości null.include_path_column : wartość logiczna, aby zachować informacje o ścieżce jako kolumnę w tabeli. Wartość domyślna to False. To ustawienie pomaga podczas odczytywania wielu plików i chcesz znać plik źródłowy dla określonego rekordu. Ponadto można przechowywać przydatne informacje w ścieżce pliku.support_multi_line : Domyślnie (support_multi_line=False ) wszystkie podziały wierszy, w tym podziały wierszy w cytowanych wartościach pól, są interpretowane jako podział rekordu. Takie podejście do odczytywania danych zwiększa szybkość i oferuje optymalizację wykonywania równoległego na wielu rdzeniach procesora. Jednak może to spowodować dyskretną produkcję większej liczby rekordów z nieprawidłowo wyrównanymi wartościami pól. Ustaw tę wartość na True , gdy rozdzielane pliki są znane jako zawierające cudzysłów wierszy |
read_parquet |
Dodaje krok przekształcenia w celu odczytania plików sformatowanych w formacie Parquet podanych w programie paths |
include_path_column : wartość logiczna, aby zachować informacje o ścieżce jako kolumnę tabeli. Wartość domyślna to False. To ustawienie pomaga podczas odczytywania wielu plików i chcesz znać plik źródłowy dla określonego rekordu. Ponadto można przechowywać przydatne informacje w ścieżce pliku.UWAGA: tabela MLTable obsługuje tylko odczyty plików parquet, które zawierają kolumny składające się z typów pierwotnych. Kolumny zawierające tablice nie są obsługiwane |
read_delta_lake |
Dodaje krok przekształcenia w celu odczytania folderu usługi Delta Lake udostępnionego w pliku paths . Dane można odczytać w określonym znaczniku czasu lub wersji |
timestamp_as_of :Struna. Sygnatura czasowa, która ma zostać określona w przypadku podróży czasowej dla określonych danych usługi Delta Lake. Aby odczytywać dane w określonym punkcie w czasie, ciąg daty/godziny powinien mieć format RFC-3339/ISO-8601 (na przykład: "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").version_as_of :Liczba całkowita. Wersja, która ma zostać określona w przypadku podróży w czasie dla określonych danych usługi Delta Lake.Musisz podać jedną wartość timestamp_as_of lub version_as_of |
read_json_lines |
Dodaje krok przekształcenia w celu odczytania plików json podanych w pliku paths |
include_path_column : wartość logiczna, aby zachować informacje o ścieżce jako kolumnę MLTable. Wartość domyślna to False. To ustawienie pomaga podczas odczytywania wielu plików i chcesz znać plik źródłowy dla określonego rekordu. Ponadto możesz zachować przydatne informacje w ścieżce plikuinvalid_lines : określa sposób obsługi wierszy, które mają nieprawidłowy kod JSON. Obsługiwane wartości: error i drop . Wartości domyślne error encoding : Określ kodowanie pliku. Obsługiwane kodowanie: utf8 , , iso88591 , ascii latin1 utf16 , , utf32 , utf8bom , i windows1252 . Wartości domyślne utf8 |
Inne przekształcenia
Przekształcenie | opis | Parametry | Przykłady |
---|---|---|---|
convert_column_types |
Dodaje krok przekształcania, aby przekonwertować określone kolumny na odpowiednie określone nowe typy | columns Tablica nazw kolumn do konwersji column_type Typ, do którego chcesz przekonwertować ( int , float , , string , boolean , datetime ) |
- convert_column_types: Przekonwertuj kolumnę Age na liczbę całkowitą. - convert_column_types: Przekonwertuj kolumnę daty na format dd/mm/yyyy . Przeczytaj to_datetime , aby uzyskać więcej informacji na temat konwersji daty/godziny.- convert_column_types: Przekonwertuj kolumnę is_weekday na wartość logiczną; Wartości tak/true/1 w mapie kolumny na True wartość , a wartości no/false/0 w mapie kolumny na False . Przeczytaj to_bool , aby uzyskać więcej informacji na temat konwersji logicznej |
drop_columns |
Dodaje krok przekształcania w celu usunięcia określonych kolumn z zestawu danych | Tablica nazw kolumn do upuszczania | - drop_columns: ["col1", "col2"] |
keep_columns |
Dodaje krok przekształcenia, aby zachować określone kolumny i usunąć wszystkie inne z zestawu danych | Tablica nazw kolumn do zachowania | - keep_columns: ["col1", "col2"] |
extract_columns_from_partition_format |
Dodaje krok przekształcenia, aby użyć informacji o partycji każdej ścieżki, a następnie wyodrębnić je do kolumn na podstawie określonego formatu partycji. | format partycji do użycia | - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} Tworzy kolumnę data/godzina, w której wartości "rrrr", "MM", "dd", "HH", "mm" i "ss" służą do wyodrębniania wartości typu year, month, month, day, hour, minute i second dla typu daty/godziny |
filter |
Przefiltruj dane, pozostawiając tylko rekordy zgodne z określonym wyrażeniem. | Wyrażenie jako ciąg | - filter: 'col("temperature") > 32 and col("location") == "UK"' Pozostaw tylko wiersze, w których temperatura przekracza 32, a Wielka Brytania jest lokalizacją |
skip |
Dodaje krok przekształcenia umożliwiający pominięcie pierwszych wierszy zliczanych w tej tabeli MLTable. | Liczba wierszy do pominięcia | - skip: 10 Pomiń pierwsze 10 wierszy |
take |
Dodaje krok przekształcenia w celu wybrania pierwszych wierszy zliczanych w tej tabeli MLTable. | Liczba wierszy z góry tabeli do wykonania | - take: 5 Weź pierwsze pięć wierszy. |
take_random_sample |
Dodaje krok przekształcenia, aby losowo wybrać każdy wiersz tej tabeli MLTable z prawdopodobieństwem. | probability Prawdopodobieństwo wybrania pojedynczego wiersza. Musi znajdować się w zakresie [0,1]. seed Opcjonalne losowe inicjatory |
- take_random_sample: Weź 10 procent losowej próbki wierszy przy użyciu losowego inicjatora 123 |
Przykłady
Przykłady użycia metody MLTable. Więcej przykładów można znaleźć na stronie:
Szybki start
Ten przewodnik Szybki start odczytuje znany zestaw danych iris z publicznego serwera https. Aby kontynuować, należy umieścić MLTable
pliki w folderze. Najpierw utwórz folder i MLTable
plik za pomocą polecenia:
mkdir ./iris
cd ./iris
touch ./MLTable
Następnie umieść tę zawartość w MLTable
pliku:
$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
Następnie można zmaterializować bibliotekę Pandas za pomocą:
Ważne
Musisz mieć mltable
zainstalowany zestaw SDK języka Python. Zainstaluj ten zestaw SDK przy użyciu:
pip install mltable
.
import mltable
tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()
Upewnij się, że dane zawierają nową kolumnę o nazwie Path
. Ta kolumna zawiera ścieżkę https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
danych.
Interfejs wiersza polecenia może utworzyć zasób danych:
az ml data create --name iris-from-https --version 1 --type mltable --path ./iris
Folder zawierający MLTable
automatycznie przekazywany do magazynu w chmurze (domyślny magazyn danych usługi Azure Machine Learning).
Napiwek
Zasób danych usługi Azure Machine Learning jest podobny do zakładek przeglądarki internetowej (ulubione). Zamiast pamiętać długie identyfikatory URI (ścieżki magazynu), które wskazują najczęściej używane dane, możesz utworzyć zasób danych, a następnie uzyskać dostęp do tego zasobu z przyjazną nazwą.
Rozdzielane pliki tekstowe
$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
Ważne
Ograniczenie: mltable
nie obsługuje wyodrębniania kluczy partycji podczas odczytywania danych z usługi Delta Lake.
Transformacja mltable
extract_columns_from_partition_format
nie będzie działać podczas odczytywania danych usługi Delta Lake za pośrednictwem metody 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