Udostępnij za pośrednictwem


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, , httpswasbs, abfssi 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, asciilatin1utf16, , 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_headersfrom_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 nieobsł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 pliku

invalid_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, asciilatin1utf16, , 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:
   - kolumny: [Wiek]
     column_type: int

Przekonwertuj kolumnę Age na liczbę całkowitą.

- convert_column_types:
   - kolumny: data
     column_type:
         data/godzina:
            Formaty:
            - "%d/%m/%Y"

Przekonwertuj kolumnę daty na format dd/mm/yyyy. Przeczytaj to_datetime , aby uzyskać więcej informacji na temat konwersji daty/godziny.

- convert_column_types:
   - kolumny: [is_weekday]
     column_type:
         boolowski:
            true_values:['yes', 'true', '1']
            false_values:['no', 'false', '0']

Przekonwertuj kolumnę is_weekday na wartość logiczną; Wartości tak/true/1 w mapie kolumny na Truewartość , 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:
   prawdopodobieństwo: 0,10
   nasion:123

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

Następne kroki