Схема 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 и abfss adl . Дополнительные сведения об использовании формата 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 и utf8bom windows1252 . Кодировка по умолчанию: 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 и utf8bom windows1252 . По умолчанию — utf8 . |
Другие преобразования
Преобразование | Description | Параметры | Пример(ы) |
---|---|---|---|
convert_column_types |
Добавляет шаг преобразования для преобразования указанных столбцов в соответствующие новые типы | columns Массив имен столбцов для преобразования column_type Тип, в который требуется преобразовать ( int , , float string , , boolean ) datetime |
- convert_column_types: Преобразуйте столбец Age в целое число. - convert_column_types: Преобразуйте столбец даты в формат dd/mm/yyyy . Дополнительные to_datetime сведения о преобразовании datetime.- convert_column_types: Преобразование столбца is_weekday в логическое значение; Да/true/1 в сопоставлении столбцов со значениями , и значения no/false/0 в сопоставлении True False столбцов. Дополнительные 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: Возьмите 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