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, abfssoch 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 utf8bomwindows1252. utf16utf32asciilatin1iso88591utf8 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ägen

invalid_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 utf8bomwindows1252. utf16utf32asciilatin1iso88591utf8 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, , floatstring, boolean, datetime)
- convert_column_types:
   - kolumner: [Ålder]
     column_type: int

Konvertera kolumnen Ålder till heltal.

- convert_column_types:
   - kolumner: datum
     column_type:
         datetime:
            Format:
            - %d/%m/%Y"

Konvertera datumkolumnen till formatet dd/mm/yyyy. Läs to_datetime mer om datetime-konvertering.

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

Konvertera kolumnen is_weekday till ett booleskt värde. Ja/sant/1-värden i kolumnkartan till Trueoch 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:
   sannolikhet: 0,10
   frö:123

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

Nästa steg