mltable 模組

包含用來建立及與 MLTable 物件互動的功能

類別

DataType

Helper 類別,用於處理支持的數據行類型 (int、bool、string 等 ) 的適當操作。 目前與 MLTable.convert_column_types (...) & from_delimited_files (...) 搭配使用,以指定要轉換數據行的類型。 已選取不同類型的 DataType.from_ (...) * 方法。

MLTable

代表MLTable。

MLTable 會定義一系列延遲評估、不可變的作業,以從數據源載入數據。 除非要求 MLTable 傳遞數據,否則不會從來源載入數據。

初始化新的MLTable。

此建構函式不應該直接叫用。 MLTable 旨在使用 load來建立。

Metadata

對應至MLTable之元數據區段的類別。

支援 & 新增arbritrary元資料屬性。

Traits

對應至 MLTable 之特性區段的類別。

目前支援的特性:timestamp_column和index_columns

列舉

MLTableFileEncoding

定義從檔案讀取數據以建立 MLTable 時如何處理編碼的選項。

這些列舉值會用於MLTable類別中。

MLTableHeaders

定義從檔案讀取數據以建立 MLTable 時,如何處理數據行標頭的選項。

這些列舉值會用於MLTable類別中。

MLTablePartitionSize

協助程式列舉,代表配置給讀取各種分割區的記憶體,以便跨不同記憶體單位選取檔格式。 目前用於讀取分隔符或 JSON 行檔案時。

支援以二進位表示的位元組、KB、MB 和 GB 作為記憶體單位。

MLTableSaveOverwriteOption

定義如何在 MLTable.save 中處理檔案衝突的選項 () 。 如果發生衝突,請引發錯誤、以新檔案覆寫現有的檔案,或讓現有檔案保持原狀。

函式

from_delimited_files

從指定的分隔檔案清單中建立MLTable。

from_delimited_files(paths, header='all_files_same_headers', delimiter=',', support_multi_line=False, empty_as_string=False, encoding='utf8', include_path_column=False, infer_column_types=True)

參數

名稱 Description
paths
必要

路徑支援具有本機或雲端路徑的檔案或資料夾。 相對本機檔案路徑假設是相對於目前的工作目錄。 如果父目錄的本機檔案路徑相對於 不是目前的工作目錄,則建議將該路徑當作絕對檔案路徑傳遞。

header
必要

從檔案讀取時如何處理數據行標頭。 使用列舉 MLTableHeaders指定的選項。 支援的標頭為 'no_header'、'from_first_file'、'all_files_different_headers' 和 'all_files_same_headers'。

delimiter
必要
str

用來分割數據行的分隔符

support_multi_line
必要

如果為 False,所有換行符,包括引號域值中的換行符,都會解譯為記錄分隔符。 以這種方式讀取資料,更快且更適合在多個 CPU 核心上平行執行。 不過,它可能會導致以無訊息模式產生更多具有未對齊域值的記錄。 當已知分隔的檔案包含引號換行符時,這應該設定為 True。

假設此 csv 檔案為範例,數據會根據support_multi_line以不同的方式讀取。

A,B,C A1,B1,C1 A2,“B2”,C2


   from mltable import from_delimited_files

   # default behavior: support_multi_line=False
   mltable = from_delimited_files(path)
   print(mltable.to_pandas_dataframe())
   #      A   B     C
   #  0  A1  B1    C1
   #  1  A2   B  None
   #  2  2"  C2  None

   # to handle quoted line breaks
   mltable = from_delimited_files(path, support_multi_line=True)
   print(mltable.to_pandas_dataframe())
   #      A       B   C
   #  0  A1      B1  C1
   #  1  A2  B\r\n2  C2
empty_as_string
必要

應如何處理空白欄位。 如果 True 會將空白字段讀取為空字串,否則會讀取為 Null。 如果 True 且數據行包含日期時間或數值數據,則空白欄位仍會讀取為 Null。

encoding
必要

使用列舉 MLTableFileEncoding指定檔案編碼。 支援的編碼方式如下:

  • utf8 as “utf8”, “utf-8”, “utf-8 bom”
  • iso88591 as “iso88591” or “iso-8859-1”
  • latin1 作為 “latin1” 或 “latin-1”
  • utf16 為 “utf16” 或 “utf-16”
  • windows1252 為 “windows1252” 或 “windows-1252”
include_path_column
必要

將路徑資訊保留為 MLTable 中的數據行,在讀取多個檔案時很有用,而且您想要知道特定記錄的來源檔案,或保留可能儲存在檔案路徑中的實用資訊。

infer_column_types
必要

如果為 True,則會自動推斷所有數據行類型。 如果為 False,則會將數據行保留為字串。 如果字典,表示類型要設定為指定類型的數據行, (推斷其他所有數據行) 。 字典可能包含一個名為 sample_size 對應至正整數位的索引鍵,代表用於推斷數據行類型的數據列數目。 字典也可能包含名為 『column_type_overrides』 的索引鍵。 字典中的每個索引鍵都是代表數據行名稱的字串,或是代表數據行名稱群組的字串 Tuple。 每個值都是字串 (其中一個 'boolean'、'string'、'float' 或 'int') 或 DataType。 mltable。不支援DataType.to_stream () 。 如果指定空的字典,假設為 True。 預設值為 True。

如何 格式化infer_column_types的範例。


   from mltable import from_delimited_files

   # default behavior: support_multi_line=False
   mltable = from_delimited_files(paths, infer_column_types={
       'sample_size': 100,
       'column_type_overrides': {
           'colA': 'boolean'
           ('colB', 'colC'): DataType.to_int()
       }
   })

傳回

類型 Description

MLTable

備註

必須有有效的路徑字串。


   # load mltable from local delimited file
   from mltable import from_delimited_files
   paths = [{"file": "./samples/mltable_sample/sample_data.csv"}]
   mltable = from_delimited_files(paths)

from_delta_lake

建立 MLTable 物件,以從 Delta Lake 數據表讀取 Parquet 檔案。

from_delta_lake(delta_table_uri, timestamp_as_of=None, version_as_of=None, include_path_column=False)

參數

名稱 Description
delta_table_uri
必要
str

指向包含要讀取之 delta Lake parquet 檔案之差異數據表目錄的 URI。 支援的 URI 類型包括:本機路徑 URI、記憶體 URI、長格式資料存放區 URI 或數據資產 URI。

timestamp_as_of
必要

RFC-3339/ISO-8601 格式的 datetime 字串,用來從特定時間點比對 parquet 檔案中讀取。 ex) “2022-10-01T00:00:00Z”, “2022-10-01T00:00:00+08:00”, “2022-10-01T01:30:00-08:00”

version_as_of
必要
int

用來讀取特定 Parquet 檔案版本的整數版本。

include_path_column
必要

將路徑資訊保留為數據行,在讀取多個檔案時很有用,而且您想要知道特定記錄的來源檔案,或保留可能儲存在檔案路徑中的實用資訊。

傳回

類型 Description

MLTable 實例

備註

from_delta_lake 會建立 MLTable 物件,該物件會定義將數據從 delta Lake 資料夾載入表格式表示的作業。

若要讓 Azure Machine Learning 存取的數據, 路徑 必須指向差異數據表目錄,而參考的差異湖檔案必須由 AzureML 服務或公用 Web URL 存取。

from_delta_lake 支援從指向的 URI 讀取 Delta Lake 數據:本機路徑、Blob、ADLS Gen1 和 ADLS Gen2

用戶可以藉由在傳回的MLTable上呼叫 to_pandas_dataframe () 來讀取和具體化數據


   # create an MLTable object from a delta lake using timestamp versioning and materialize the data
   from mltable import from_delta_lake
   mltable_ts = from_delta_lake(delta_table_uri="./data/delta-01", timestamp_as_of="2021-05-24T00:00:00Z")
   pd = mltable_ts.to_pandas_dataframe()

   # create  an MLTable object from a delta lake using integer versioning and materialize the data
   from mltable import from_delta_lake
   mltable_version = from_delta_lake(delta_table_uri="./data/delta-02", version_as_of=1)
   pd = mltable_version.to_pandas_dataframe()

from_json_lines_files

從指定的 JSON 檔案路徑清單中建立 MLTable。

from_json_lines_files(paths, invalid_lines='error', encoding='utf8', include_path_column=False)

參數

名稱 Description
paths
必要

路徑支援具有本機或雲端路徑的檔案或資料夾。 相對本機檔案路徑假設是相對於目前的工作目錄。 如果父目錄的本機檔案路徑相對於 不是目前的工作目錄,則建議將該路徑當作絕對檔案路徑傳遞。

invalid_lines
必要
str

如何處理無效 JSON 的行,可以是 'drop' 或 'error'。 如果卸除 『drop』 無效的行,則會引發錯誤。

encoding
必要

使用列舉 MLTableFileEncoding指定檔案編碼。 支援的檔案編碼:

  • utf8 as “utf8”, “utf-8”, “utf-8 bom”
  • iso88591 as “iso88591” or “iso-8859-1”
  • latin1 作為 “latin1” 或 “latin-1”
  • utf16 為 “utf16” 或 “utf-16”
  • windows1252 為 “windows1252” 或 “windows-1252”
include_path_column
必要

將路徑資訊保留為數據行,在讀取多個檔案時很有用,而且您想要知道特定記錄的來源檔案,或保留可能儲存在檔案路徑中的實用資訊。

傳回

類型 Description

MLTable

備註

必須有有效的路徑字典


   # load mltable from local JSON paths
   from mltable import from_json_lines_files
   paths = [{'file': './samples/mltable_sample/sample_data.jsonl'}]
   mltable = from_json_lines_files(paths)

from_parquet_files

從指定的 parquet 檔案清單中建立 MLTable。

from_parquet_files(paths, include_path_column=False)

參數

名稱 Description
paths
必要

路徑支援具有本機或雲端路徑的檔案或資料夾。 相對本機檔案路徑假設是相對於目前的工作目錄。 如果父目錄的本機檔案路徑相對於 不是目前的工作目錄,則建議將該路徑當作絕對檔案路徑傳遞。

include_path_column
必要

將路徑資訊保留為數據行,在讀取多個檔案時很有用,而且您想要知道特定記錄的來源檔案,或保留可能儲存在檔案路徑中的實用資訊。

傳回

類型 Description

MLTable 實例

備註

必須有有效的路徑字典


   # load mltable from local parquet paths
   from mltable import from_parquet_files
   paths = [{'file': './samples/mltable_sample/sample.parquet'}]
   mltable = from_parquet_files(paths)

from_paths

從指定的路徑建立 MLTable。

from_paths(paths)

參數

名稱 Description
paths
必要

路徑支援具有本機或雲端路徑的檔案或資料夾。 相對本機檔案路徑假設是相對於目前的工作目錄。 如果父目錄的本機檔案路徑相對於 不是目前的工作目錄,則建議將該路徑當作絕對檔案路徑傳遞。

傳回

類型 Description

MLTable 實例

備註

必須有有效的路徑字典


   # load mltable from local paths
   from mltable import from_paths
   tbl = from_paths([{'file': "./samples/mltable_sample"}])

   # load mltable from cloud paths
   from mltable import load
   tbl = from_paths(
       [{'file': "https://<blob-storage-name>.blob.core.windows.net/<path>/sample_file"}])

load

載入 MLTable 檔案 (YAML) 指定的 URI。

storage_options 支援 'subscription'、'resource_group'、'workspace' 或 'location' 的密鑰。 所有都必須找到 Azure Machine Learning 工作區。

load(uri, storage_options: dict = None, ml_client=None)

參數

名稱 Description
uri
必要
str

uri 支援長格式資料存放區 URI、記憶體 URI、本機路徑或數據資產 URI 或數據資產簡短 URI

storage_options
必要

URI 是 AML 資產時的 AML 工作區資訊

ml_client
必要

傳回

類型 Description

MLTable

備註

指定的 URI 上必須存在名為 'MLTable' 的有效 MLTable YAML 檔案。


   # load mltable from local folder
   from mltable import load
   tbl = load('.\samples\mltable_sample')

   # load mltable from azureml datastore uri
   from mltable import load
   tbl = load(
       'azureml://subscriptions/<subscription-id>/
       resourcegroups/<resourcegroup-name>/workspaces/<workspace-name>/
       datastores/<datastore-name>/paths/<mltable-path-on-datastore>/')

   # load mltable from azureml data asset uri
   from mltable import load
   tbl = load(
         'azureml://subscriptions/<subscription-id>/
         resourcegroups/<resourcegroup-name>/providers/Microsoft.MachineLearningServices/
         workspaces/<workspace-name>/data/<data-asset-name>/versions/<data-asset-version>/')

   # load mltable from azureml data asset short uri
   from mltable import load
   from azure.ai.ml import MLClient
   from azure.identity import DefaultAzureCredential
   credential = DefaultAzureCredential()
   ml_client = MLClient(credential, <subscription_id>, <resourcegroup-name>, <workspace-name>)
   tbl = load('azureml:<data-asset-name>:<version>', ml_client=ml_client)