CLI (v2) MLtable YAML şeması

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

Kaynak JSON şemasını adresinde https://azuremlschemas.azureedge.net/latest/MLTable.schema.jsonbulabilirsiniz.

Not

Bu belgede ayrıntılı olarak yer alan YAML söz dizimi, ML CLI v2 uzantısının en son sürümü için JSON şemasını temel alır. Bu söz diziminin yalnızca ML CLI v2 uzantısının en son sürümüyle çalışması garanti edilir. Eski uzantı sürümleri için şemaları adresinde https://azuremlschemasprod.azureedge.net/bulabilirsiniz.

Dosyaları yazma MLTable

Bu makalede yalnızca YAML şeması hakkında MLTable bilgiler sunulur. MLTable hakkında daha fazla bilgi için

  • MLTable dosya yazma
  • MLTable yapıtları oluşturma
  • Pandas ve Spark'ta tüketim
  • uçtan uca örnekler

Azure Machine Learning'de tablolarla çalışma bölümünü ziyaret edin.

YAML söz dizimi

Anahtar Type Açıklama İzin verilen değerler Default value
$schema Dize YAML şeması. YAML dosyasını yazmak için Azure Machine Learning Visual Studio Code uzantısını kullanırsanız, dosyanızın en üstüne eklerseniz $schema şemayı ve kaynak tamamlamalarını çağırabilirsiniz
type const mltable tablosal veriler için şema tanımını soyutlar. Veri tüketicileri tabloyu Pandas/Dask/Spark veri çerçevesine daha kolay bir şekilde dönüştürebilir mltable mltable
paths dizi Yollar bir file yol, folder yol veya pattern yollar için olabilir. patternjoker karakterli (*, , ?, [a-z][abc]) dosya adı kümelerini belirten globbing desenlerini destekler. Desteklenen URI türleri: azureml, https, wasbs, abfssve adl. URI biçiminin kullanımı hakkında daha fazla bilgi için Çekirdek yaml söz dizimi adresini azureml:// ziyaret edin file
folder
pattern
transformations dizi Tanımlı yollardan yüklenen verilere uygulanan tanımlı bir dönüştürme dizisi. Daha fazla bilgi için Dönüşümler'i ziyaret edin 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

Dönüşümler

Okuma dönüştürmeleri

Okuma Dönüşümü Açıklama Parametreler
read_delimited içinde sağlanan sınırlandırılmış metin dosyalarını okumak için bir dönüştürme adımı ekler paths infer_column_types: Sütun veri türlerini çıkarsamak için boole değeri. Varsayılan değer True'dır. Tür çıkarımı, geçerli işlemin veri kaynağına erişebilmesini gerektirir. Şu anda tür çıkarımı yalnızca ilk 200 satırı çeker.

encoding: Dosya kodlamasını belirtin. Desteklenen kodlamalar: utf8, iso88591, latin1, ascii, utf16, , utf32, utf8bomve windows1252. Varsayılan kodlama: utf8.

header: kullanıcı şu seçeneklerden birini belirleyebilir: no_header, from_first_file, all_files_different_headers, all_files_same_headers. varsayılan değeridir all_files_same_headers.

delimiter: Sütunları bölen ayırıcı.

empty_as_string: Boş alan değerlerinin boş dize olarak yüklenip yüklenmediğini belirtir. Varsayılan değer (Yanlış), boş alan değerlerini null olarak okur. Bu ayarı True olarak geçirmek boş alan değerlerini boş dizeler olarak okur. Sayısal veya tarih saat veri türlerine dönüştürülen değerler için, boş değerler null değerlere dönüştürüldüğü için bu ayarın hiçbir etkisi yoktur.

include_path_column: Yol bilgilerini tabloda sütun olarak tutmak için Boole değeri. Varsayılan değer False'tur. Bu ayar birden çok dosyayı okurken yardımcı olur ve belirli bir kaydın kaynak dosyasını bilmek istersiniz. Ayrıca, yararlı bilgileri dosya yolunda tutabilirsiniz.

support_multi_line: Varsayılan olarak (support_multi_line=False ), tırnak içinde satır sonları dahil olmak üzere tüm satır sonları bir kayıt sonu olarak yorumlanır. Bu veri okuma yaklaşımı hızı artırır ve birden çok CPU çekirdeğinde paralel yürütme için iyileştirme sunar. Ancak, yanlış hizalanmış alan değerleriyle daha fazla kaydın sessiz bir şekilde üretilmesine neden olabilir. Sınırlandırılmış dosyaların tırnak içinde satır sonları içerdiği bilindiğinde bu değeri True olarak ayarlayın
read_parquet içinde sağlanan Parquet biçimli dosyaları okumak için bir dönüştürme adımı ekler paths include_path_column: Yol bilgilerini tablo sütunu olarak tutmak için Boole değeri. Varsayılan değer False'tur. Bu ayar, birden çok dosyayı okuduğunuzda ve belirli bir kayıt için kaynak dosyayı bilmek istediğinizde yardımcı olur. Ayrıca, yararlı bilgileri dosya yolunda tutabilirsiniz.

NOT: MLTable yalnızca ilkel türlerden oluşan sütunları olan parquet dosyalarının okunmasını destekler. Dizi içeren sütunlar desteklenmez
read_delta_lake içinde pathssağlanan delta lake klasörünü okumak için bir dönüştürme adımı ekler. Verileri belirli bir zaman damgasında veya sürümde okuyabilirsiniz timestamp_as_of:Dize. Belirli Delta Lake verilerinde zaman yolculuğu için belirtilecek zaman damgası. Verileri belirli bir zamanda okumak için tarih saat dizesi rfc-3339/ISO-8601 biçiminde olmalıdır (örneğin: "2022-10-01T00:00:00Z", "2022-10-01T00:00:00+08:00", "2022-10-01T01:30:00-08:00").

version_as_of:Tamsayı. Belirli Delta Lake verilerinde zaman yolculuğu için belirtilecek sürüm.

veya timestamp_as_of değerini sağlamanız gerekir version_as_of
read_json_lines içinde sağlanan json dosyalarını okumak için bir dönüştürme adımı ekler paths include_path_column: Yol bilgilerini MLTable sütunu olarak tutmak için boole değeri. Varsayılan değer False'tur. Bu ayar, birden çok dosyayı okuduğunuzda ve belirli bir kayıt için kaynak dosyayı bilmek istediğinizde yardımcı olur. Ayrıca, yararlı bilgileri dosya yolunda tutabilirsiniz

invalid_lines: Geçersiz JSON içeren satırların nasıl işleneceğini belirler. Desteklenen değerler: error ve drop. Varsayılan değer: error

encoding: Dosya kodlamasını belirtin. Desteklenen kodlamalar: utf8, iso88591, latin1, ascii, utf16, , utf32, utf8bomve windows1252. Varsayılan değer: utf8

Diğer dönüştürmeler

Dönüşüm Açıklama Parametreler Örnekler
convert_column_types Belirtilen sütunları ilgili belirtilen yeni türlerine dönüştürmek için bir dönüştürme adımı ekler columns
Dönüştürülecek sütun adları dizisi

column_type
Dönüştürmek istediğiniz tür (int, float, string, boolean, datetime)
- convert_column_types:
   - sütunlar: [Yaş]
     column_type: int

Age sütununu tamsayıya dönüştürün.

- convert_column_types:
   - sütunlar: tarih
     column_type:
         Datetime:
            Biçim:
            - "%d/%m/%Y"

Tarih sütununu biçimine dd/mm/yyyydönüştürün. Tarih saat dönüştürme hakkında daha fazla bilgi için okuyun to_datetime .

- convert_column_types:
   - sütunlar: [is_weekday]
     column_type:
         Boolean:
            true_values:['yes', 'true', '1']
            false_values:['no', 'false', '0']

is_weekday sütununu boole değerine dönüştürme; sütun eşlemesindeki Trueevet/true/1 değerleri ile, sütundaki hayır/yanlış/0 değerleri ile eşler False. Boole dönüştürme hakkında daha fazla bilgi için okuyun to_bool
drop_columns Veri kümesinden belirli sütunları kaldırmak için bir dönüştürme adımı ekler Bırakılası sütun adları dizisi - drop_columns: ["col1", "col2"]
keep_columns Belirtilen sütunları tutmak ve diğer tüm sütunları veri kümesinden kaldırmak için bir dönüştürme adımı ekler Korunacak sütun adları dizisi - keep_columns: ["col1", "col2"]
extract_columns_from_partition_format Her yolun bölüm bilgilerini kullanmak için bir dönüştürme adımı ekler ve bunları belirtilen bölüm biçimine göre sütunlar halinde ayıklar. kullanılacak bölüm biçimi - extract_columns_from_partition_format: {column_name:yyyy/MM/dd/HH/mm/ss} tarih saat türü için yıl, ay, gün, saat, dakika ve ikinci değerleri ayıklamak için 'yyyy', 'MM', 'dd', 'HH', 'mm' ve 'ss' değerlerinin kullanıldığı bir datetime sütunu oluşturur
filter Yalnızca belirtilen ifadeyle eşleşen kayıtları bırakarak verileri filtreleyin. Dize olarak ifade - filter: 'col("temperature") > 32 and col("location") == "UK"'
Yalnızca sıcaklığın 32'yi aştığı satırları bırakın ve konum Birleşik Krallık'tır
skip Bu MLTable'ın ilk sayı satırlarını atlamak için bir dönüştürme adımı ekler. Atlana satır sayısı - skip: 10
İlk 10 satırı atla
take Bu MLTable'ın ilk sayı satırlarını seçmek için bir dönüştürme adımı ekler. Tablonun en üstünden alınacak satır sayısının sayısı - take: 5
İlk beş satırı alın.
take_random_sample Olasılık olasılığıyla bu MLTable'ın her satırını rastgele seçmek için bir dönüştürme adımı ekler. probability
Tek bir satır seçme olasılığı. [0,1] aralığında olmalıdır.

seed
İsteğe bağlı rastgele tohum
- take_random_sample:
   olasılık: 0,10
   tohum:123

Rastgele 123 tohumu kullanarak yüzde 10 rastgele satır örneği alma

Örnekler

MLTable kullanımı örnekleri. Daha fazla örnek için:

Hızlı Başlangıç

Bu hızlı başlangıçta genel bir https sunucusundan ünlü iris veri kümesi okunur. Devam etmek için dosyaları bir klasöre MLTable yerleştirmeniz gerekir. İlk olarak, klasörü ve MLTable dosyayı şu şekilde oluşturun:

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

Ardından, bu içeriği dosyaya MLTable yerleştirin:

$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

Daha sonra Pandas'a şu özelliklerle giriş yapabilirsiniz:

Önemli

Python SDK'sını mltable yüklemiş olmanız gerekir. Bu SDK'yi şu şekilde yükleyin:

pip install mltable.

import mltable

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

Verilerin adlı Pathyeni bir sütun içerdiğinden emin olun. Bu sütun veri yolunu içerir https://azuremlexamples.blob.core.windows.net/datasets/iris.csv .

CLI bir veri varlığı oluşturabilir:

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

dosyasını içeren MLTable klasör otomatik olarak bulut depolama alanına (varsayılan Azure Machine Learning veri deposu) yüklenir.

İpucu

Azure Machine Learning veri varlığı, web tarayıcısı yer işaretlerine (sık kullanılanlar) benzer. En sık kullandığınız verilere işaret eden uzun URI'leri (depolama yolları) hatırlamak yerine bir veri varlığı oluşturabilir ve ardından bu varlığa kolay bir adla erişebilirsiniz.

Sınırlandırılmış metin dosyaları

$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   

Önemli

Sınırlama: mltable Delta Lake'ten veri okurken bölüm anahtarlarını ayıklamayı desteklemez. mltable aracılığıyla mltableDelta Lake verilerini okurken dönüştürme extract_columns_from_partition_format çalışmaz.

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

Sonraki adımlar