CLI (v2) MLtable YAML-schema
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
Du hittar JSON-källschemat på https://azuremlschemas.azureedge.net/latest/MLTable.schema.json.
Kommentar
YAML-syntaxen som beskrivs i det här dokumentet baseras på JSON-schemat för den senaste versionen av ML CLI v2-tillägget. Den här syntaxen är garanterad att endast fungera med den senaste versionen av ML CLI v2-tillägget. Du hittar scheman för äldre tilläggsversioner på https://azuremlschemasprod.azureedge.net/.
Så här skapar MLTable
du filer
Den här artikeln innehåller endast information om MLTable
YAML-schemat. Mer information om MLTable, inklusive
MLTable
filredigering- SKAPA MLTable-artefakter
- förbrukning i Pandas och Spark
- exempel från slutpunkt till slutpunkt
gå till Arbeta med tabeller i Azure Mašinsko učenje.
YAML-syntax
Nyckel | Typ | Beskrivning | Tillåtna värden | Standardvärde |
---|---|---|---|---|
$schema |
sträng | YAML-schemat. Om du använder Azure Mašinsko učenje Visual Studio Code-tillägget för att skapa YAML-filen kan du anropa schema- och resursslutningar om du tar med $schema längst upp i filen |
||
type |
Const | mltable abstraherar schemadefinitionen för tabelldata. Datakonsumenter kan enklare materialisera tabellen till en Pandas/Dask/Spark-dataram |
mltable |
mltable |
paths |
matris | Sökvägar kan vara en file sökväg, folder sökväg eller pattern för sökvägar. pattern stöder globbningsmönster som anger uppsättningar med filnamn med jokertecken (* , ? , [abc] , [a-z] ). URI-typer som stöds: azureml , https , wasbs , abfss och adl . Gå till Core yaml-syntax för mer information om användningen av azureml:// URI-formatet |
file folder pattern |
|
transformations |
matris | En definierad transformeringssekvens som tillämpas på data som lästs in från definierade sökvägar. Mer information finns i Transformeringar | 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 |
Transformeringar
Lästransformeringar
Lästransformeringen | beskrivning | Parametrar |
---|---|---|
read_delimited |
Lägger till ett transformeringssteg för att läsa de avgränsade textfilerna som anges i paths |
infer_column_types : Boolesk för att härleda kolumndatatyper. Standardvärdet är Sant. Typinferens kräver att den aktuella beräkningen kan komma åt datakällan. För närvarande hämtar skrivinferens endast de första 200 raderna.encoding : Ange filkodning. Kodningar som stöds: , , , , , , och utf8bom windows1252 . utf16 utf32 ascii latin1 iso88591 utf8 Standardkodning: utf8 .header : Användaren kan välja något av följande alternativ: no_header , from_first_file , all_files_different_headers , . all_files_same_headers Standardvärdet är all_files_same_headers .delimiter : Avgränsaren som delar kolumnerna.empty_as_string : Anger om tomma fältvärden ska läsas in som tomma strängar. Standardvärdet (False) läser tomma fältvärden som nullvärden. Om den här inställningen skickas som Sant läss tomma fältvärden som tomma strängar. För värden som konverteras till numeriska datatyper eller datetime-datatyper har den här inställningen ingen effekt eftersom tomma värden konverteras till nullvärden.include_path_column : Boolesk för att behålla sökvägsinformation som kolumn i tabellen. Standardvärdet är Falskt. Den här inställningen hjälper till när du läser flera filer och du vill veta vilken fil som kommer från en viss post. Dessutom kan du behålla användbar information i filsökvägen.support_multi_line : Som standard (support_multi_line=False ) tolkas alla radbrytningar, inklusive radbrytningar i angivna fältvärden, som en postbrytning. Den här metoden för dataläsning ökar hastigheten och ger optimering för parallell körning på flera CPU-kärnor. Det kan dock leda till tyst produktion av fler poster med feljusterade fältvärden. Ange det här värdet till True när de avgränsade filerna är kända för att innehålla citerade radbrytningar |
read_parquet |
Lägger till ett transformeringssteg för att läsa de Parquet-formaterade filer som anges i paths |
include_path_column : Boolesk för att behålla sökvägsinformationen som en tabellkolumn. Standardvärdet är Falskt. Den här inställningen hjälper dig när du läser flera filer och du vill veta den ursprungliga filen för en specifik post. Dessutom kan du behålla användbar information i filsökvägen.OBS! MLTable stöder endast läsningar av parquet-filer som har kolumner som består av primitiva typer. Kolumner som innehåller matriser stöds inte |
read_delta_lake |
Lägger till ett transformeringssteg för att läsa en Delta Lake-mapp som anges i paths . Du kan läsa data vid en viss tidsstämpel eller version |
timestamp_as_of :Sträng. Tidsstämpel som ska anges för tidsresor för specifika Delta Lake-data. Om du vill läsa data vid en viss tidpunkt datetime-strängen ska ha ett RFC-3339/ISO-8601-format (t.ex. "2022-10-01T00:00:00Z", "2022--01T00:00:00Z", "2022--10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").version_as_of :Heltal. Version som ska anges för tidsresor för specifika Delta Lake-data.Du måste ange ett värde för timestamp_as_of eller version_as_of |
read_json_lines |
Lägger till ett transformeringssteg för att läsa json-filerna som anges i paths |
include_path_column : Boolesk för att behålla sökvägsinformation som en MLTable-kolumn. Standardvärdet är Falskt. Den här inställningen hjälper dig när du läser flera filer och du vill veta den ursprungliga filen för en specifik post. Dessutom kan du behålla användbar information i filsökvägeninvalid_lines : Avgör hur rader som har ogiltig JSON ska hanteras. Värden som stöds: error och drop . Standardvärdet är error encoding : Ange filkodning. Kodningar som stöds: , , , , , , och utf8bom windows1252 . utf16 utf32 ascii latin1 iso88591 utf8 Standardvärdet är utf8 |
Andra omvandlingar
Transformering | beskrivning | Parametrar | Exempel |
---|---|---|---|
convert_column_types |
Lägger till ett transformeringssteg för att konvertera de angivna kolumnerna till respektive angivna nya typer | columns En matris med kolumnnamn som ska konverteras column_type Den typ som du vill konvertera till ( int , , float string , boolean , datetime ) |
- convert_column_types: Konvertera kolumnen Ålder till heltal. - convert_column_types: Konvertera datumkolumnen till formatet dd/mm/yyyy . Läs to_datetime mer om datetime-konvertering.- convert_column_types: Konvertera kolumnen is_weekday till ett booleskt värde. Ja/sant/1-värden i kolumnkartan till True och inga/falska/0-värden i kolumnkartan till False . Läs to_bool mer om boolesk konvertering |
drop_columns |
Lägger till ett transformeringssteg för att ta bort specifika kolumner från datauppsättningen | En matris med kolumnnamn att släppa | - drop_columns: ["col1", "col2"] |
keep_columns |
Lägger till ett transformeringssteg för att behålla de angivna kolumnerna och ta bort alla andra från datauppsättningen | En matris med kolumnnamn som ska bevaras | - keep_columns: ["col1", "col2"] |
extract_columns_from_partition_format |
Lägger till ett transformeringssteg för att använda partitionsinformationen för varje sökväg och extrahera dem sedan till kolumner baserat på det angivna partitionsformatet. | partitionsformat som ska användas | - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} skapar en datetime-kolumn, där "ååååå", "MM", "dd", "HH", "mm" och "ss" används för att extrahera värden för år, månad, dag, timme, minut och sekund för datetime-typen |
filter |
Filtrera data och lämna endast de poster som matchar det angivna uttrycket. | Ett uttryck som en sträng | - filter: 'col("temperature") > 32 and col("location") == "UK"' Lämna endast rader där temperaturen överstiger 32 och Storbritannien är platsen |
skip |
Lägger till ett transformeringssteg för att hoppa över de första antal raderna i denna MLTable. | Antal rader som ska hoppa över | - skip: 10 Hoppa över de första 10 raderna |
take |
Lägger till ett transformeringssteg för att välja de första antal raderna i denna MLTable. | Antal rader överst i tabellen som ska hämtas | - take: 5 Ta de första fem raderna. |
take_random_sample |
Lägger till ett transformeringssteg för att slumpmässigt välja varje rad i denna MLTable, med sannolikhetschans. | probability Sannolikheten att välja en enskild rad. Måste finnas i intervallet [0,1]. seed Valfritt slumpmässigt frö |
- take_random_sample: Ta ett slumpmässigt urval på 10 procent med hjälp av ett slumpmässigt frö på 123 |
Exempel
Exempel på MLTable-användning. Hitta fler exempel på:
Snabbstart
Den här snabbstarten läser den berömda iris-datamängden från en offentlig https-server. Om du vill fortsätta måste du placera MLTable
filerna i en mapp. Skapa först mappen och MLTable
filen med:
mkdir ./iris
cd ./iris
touch ./MLTable
Placera sedan innehållet i MLTable
filen:
$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
Du kan sedan materialisera till Pandas med:
Viktigt!
Python SDK måste vara mltable
installerat. Installera denna SDK med:
pip install mltable
.
import mltable
tbl = mltable.load("./iris")
df = tbl.to_pandas_dataframe()
Kontrollera att data innehåller en ny kolumn med namnet Path
. Den här kolumnen innehåller https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
datasökvägen.
CLI kan skapa en datatillgång:
az ml data create --name iris-from-https --version 1 --type mltable --path ./iris
Mappen som innehåller automatiskt MLTable
uppladdningar till molnlagringen (standardlagringen för Azure Mašinsko učenje).
Dricks
En Azure-Mašinsko učenje datatillgång liknar webbläsarbokmärken (favoriter). I stället för att komma ihåg långa URI:er (lagringssökvägar) som pekar på dina mest använda data kan du skapa en datatillgång och sedan komma åt tillgången med ett eget namn.
Avgränsade textfiler
$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}
Data 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
Viktigt!
Begränsning: mltable
stöder inte extrahering av partitionsnycklar vid läsning av data från Delta Lake.
Omvandlingen mltable
extract_columns_from_partition_format
fungerar inte när du läser Delta Lake-data via 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