Поделиться через


Схема YAML для MLtable (версия 2)

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

Исходная схема JSON можно найти по адресу https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.

Примечание.

Синтаксис YAML, описанный в этом документе, основан на схеме JSON для последней версии расширения ML CLI (версия 2). Этот синтаксис гарантированно работает только с последней версией расширения ML CLI (версия 2). Схемы для старых версий расширений можно найти по адресу https://azuremlschemasprod.azureedge.net/.

MLTable Создание файлов

В этой статье представлены сведения только о схеме MLTable YAML. Дополнительные сведения о MLTable, включая

  • MLTable Создание файлов
  • Создание артефактов MLTable
  • потребление в Pandas и Spark
  • Комплексные примеры

посетите страницу "Работа с таблицами" в Машинное обучение Azure.

Синтаксис YAML

Ключ Тип Описание Допустимые значения Default value
$schema строка Схема YAML. Если для создания файла YAML используется расширение Машинное обучение Azure Visual Studio Code, можно вызвать завершение схемы и ресурсов, если вы включаете $schema в начало файла.
type const mltable абстрагирует определение схемы для табличных данных. Потребители данных могут более легко материализовать таблицу в кадр данных Pandas/Dask/Spark mltable mltable
paths array Пути могут быть file путями, folder путями или pattern путями. patternподдерживает шаблоны глоббинга, указывающие наборы имен файлов с подстановочными знаками (*, , ?, [abc][a-z]). Поддерживаемые типы URI: azureml, https, wasbsи abfssadl. Дополнительные сведения об использовании формата URI см. в синтаксисе azureml:// Yaml Core file
folder
pattern
transformations array Определенная последовательность преобразований, применяемая к данным, загруженным из определенных путей. Дополнительные сведения см. в преобразованиях 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

Преобразования

Преобразования чтения

Преобразование чтения Description Параметры
read_delimited Добавляет шаг преобразования для чтения предоставленных текстовых файлов с разделителями paths infer_column_types: логическое значение для определения типов данных столбца. Значение по умолчанию — True. Для вывода типов требуется, чтобы текущие вычислительные ресурсы могли получить доступ к источнику данных. В настоящее время вывод типа извлекает только первые 200 строк.

encoding: указывает кодировку файла. Поддерживаемые кодировки: utf8, iso88591, latin1, ascii, utf16, utf32и utf8bomwindows1252. Кодировка по умолчанию: utf8.

header: пользователь может выбрать один из следующих вариантов: no_header, from_first_file, all_files_different_headers. all_files_same_headers По умолчанию — all_files_same_headers.

delimiter: разделитель, разделитель, разделяющий столбцы.

empty_as_string: указывает, должны ли пустые значения полей загружаться в виде пустых строк. Значение по умолчанию (False) считывает пустые значения полей в виде null. При передаче этого параметра значение True считывает пустые значения полей в виде пустых строк. Для значений, преобразованных в числовые или типы данных datetime, этот параметр не действует, так как пустые значения преобразуются в значения NULL.

include_path_column: логическое значение для сохранения сведений о пути в виде столбца в таблице. Значение по умолчанию — False. Этот параметр помогает при чтении нескольких файлов и требуется знать исходный файл для определенной записи. Кроме того, вы можете хранить полезные сведения в пути к файлу.

support_multi_line: по умолчаниюsupport_multi_line=False () все разрывы строк, включая разрывы строк в значениях в кавычках полей, интерпретируются как разрыв записи. Этот подход к чтению данных увеличивает скорость и обеспечивает оптимизацию параллельного выполнения на нескольких ядрах ЦП. Однако это может привести к автоматическому производству больше записей с неправильными значениями полей. Задайте это значение, True если файлы с разделителями, как известно, содержат разрывы строк с кавычками.
read_parquet Добавляет шаг преобразования для чтения отформатированных файлов Parquet, предоставленных в paths include_path_column: логическое значение для хранения сведений о пути в виде столбца таблицы. Значение по умолчанию — False. Этот параметр помогает при чтении нескольких файлов и необходимо знать исходный файл для определенной записи. Кроме того, вы можете хранить полезные сведения в пути к файлу.

ПРИМЕЧАНИЕ. MLTable поддерживает только чтение файлов parquet с столбцами, состоящими из примитивных типов. Столбцы, содержащие массивы, не поддерживаются
read_delta_lake Добавляет шаг преобразования для чтения папки Delta Lake, предоставленной в paths. Данные можно считывать в определенной метке времени или версии. timestamp_as_of:Струна. Метка времени для перемещения по времени для определенных данных Delta Lake. Для чтения данных в определенный момент времени строка даты и времени должна иметь формат RFC-3339/ISO-8601 (например: "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").

version_as_of:Целое число. Версия, указанная для перемещения по времени для определенных данных Delta Lake.

Необходимо указать одно значение timestamp_as_of или version_as_of
read_json_lines Добавляет шаг преобразования для чтения файлов JSON, предоставленных в paths include_path_column: логическое значение для хранения сведений о пути в виде столбца MLTable. Значение по умолчанию — False. Этот параметр помогает при чтении нескольких файлов и необходимо знать исходный файл для определенной записи. Кроме того, можно хранить полезные сведения в пути к файлу.

invalid_lines: определяет, как обрабатывать строки с недопустимыми JSON. Поддерживаемые значения: error и drop. По умолчанию — error.

encoding: указывает кодировку файла. Поддерживаемые кодировки: utf8, iso88591, latin1, ascii, utf16, utf32и utf8bomwindows1252. По умолчанию — utf8.

Другие преобразования

Преобразование Description Параметры Пример(ы)
convert_column_types Добавляет шаг преобразования для преобразования указанных столбцов в соответствующие новые типы columns
Массив имен столбцов для преобразования

column_type
Тип, в который требуется преобразовать (int, , floatstring, , boolean) datetime
- convert_column_types:
   - столбцы: [возраст]
     column_type: int

Преобразуйте столбец Age в целое число.

- convert_column_types:
   — столбцы: дата
     column_type:
         datetime:
            Форматы:
            - "%d/%m/%Y"

Преобразуйте столбец даты в формат dd/mm/yyyy. Дополнительные to_datetime сведения о преобразовании datetime.

- convert_column_types:
   — столбцы: [is_weekday]
     column_type:
         булев:
            true_values:['yes', 'true', '1']
            false_values:['no', 'false', '0']

Преобразование столбца is_weekday в логическое значение; Да/true/1 в сопоставлении столбцов со значениями , и значения no/false/0 в сопоставлении TrueFalseстолбцов. Дополнительные to_bool сведения о логическом преобразовании
drop_columns Добавляет шаг преобразования для удаления определенных столбцов из набора данных Массив имен столбцов для удаления - drop_columns: ["col1", "col2"]
keep_columns Добавляет шаг преобразования, чтобы сохранить указанные столбцы и удалить все остальные из набора данных. Массив имен столбцов для сохранения - keep_columns: ["col1", "col2"]
extract_columns_from_partition_format Добавляет шаг преобразования для использования сведений о секционированиях каждого пути, а затем извлекает их в столбцы в зависимости от указанного формата секции. Формат секции для использования - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} создает столбец datetime, где "гггг", "MM", "dd", "HH", "мм" и "ss" используются для извлечения года, месяца, дня, часа, минуты и второй значений для типа datetime
filter Выполняет фильтрацию данных, оставляя только те записи, которые соответствуют указанному выражению. Выражение в виде строки - filter: 'col("temperature") > 32 and col("location") == "UK"'
Оставьте только строки, где температура превышает 32, и Великобритания — расположение
skip Добавляет шаг преобразования, чтобы пропустить первые строки счетчика этой MLTable. Количество пропустить строк - skip: 10
Пропустить первые 10 строк
take Добавляет шаг преобразования для выбора первых строк этого MLTable. Число строк из верхней части таблицы - take: 5
Возьмите первые пять строк.
take_random_sample Добавляет шаг преобразования для случайного выбора каждой строки этого MLTable с вероятностью. probability
Вероятность выбора отдельной строки. Должен находиться в диапазоне [0,1].

seed
Необязательное случайное начальное значение
- take_random_sample:
   вероятность: 0,10
   seed:123

Возьмите 10 процентов случайных выборок строк с использованием случайного начального значения 123

Примеры

Примеры использования MLTable. Дополнительные примеры см. в следующих примерах:

Быстрое начало

В этом кратком руководстве считывается известный набор данных iris с общедоступного https-сервера. Чтобы продолжить, необходимо поместить MLTable файлы в папку. Сначала создайте папку и MLTable файл с помощью:

mkdir ./iris
cd ./iris
touch ./MLTable

Затем поместите это содержимое MLTable в файл:

$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

Затем вы можете материализовать в Pandas с помощью:

Внимание

Необходимо установить mltable пакет SDK для Python. Установите этот пакет SDK с помощью следующих компонентов:

pip install mltable.

import mltable

tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()

Убедитесь, что данные содержат новый столбец с именем Path. Этот столбец содержит https://azuremlexamples.blob.core.windows.net/datasets/iris.csv путь к данным.

Интерфейс командной строки может создать ресурс данных:

az ml data create --name iris-from-https --version 1 --type mltable --path ./iris

Папка, MLTable содержащая автоматические передачи в облачное хранилище (по умолчанию Машинное обучение Azure хранилище данных).

Совет

Ресурс данных Машинное обучение Azure похож на закладки веб-браузера (избранное). Вместо запоминания длинных URI (пути к хранилищу), указывающих на наиболее часто используемые данные, можно создать ресурс данных, а затем получить доступ к нему с понятным именем.

Текстовые файлы с разделителями

$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   

Внимание

Ограничение: mltable не поддерживает извлечение ключей секций при чтении данных из Delta Lake. Преобразование mltable extract_columns_from_partition_format не будет работать при чтении данных Delta Lake с помощью 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

Следующие шаги