TabularDatasetFactory 類別

包含建立 Azure Machine Learning 表格式數據集的方法。

使用from_*這個類別中的方法建立 ,TabularDataset例如 方法 from_delimited_files

如需使用表格式資料集的詳細資訊,請參閱筆記本 https://aka.ms/tabulardataset-samplenotebook

繼承
builtins.object
TabularDatasetFactory

建構函式

TabularDatasetFactory()

方法

from_delimited_files

建立 TabularDataset 來代表分隔檔案中的表格式數據, (e.g. CSV 和 TSV) 。

from_json_lines_files

建立 TabularDataset 來代表 JSON Lines 檔案中的表格式數據, (http://jsonlines.org/) 。

from_parquet_files

建立 TabularDataset 來代表 Parquet 檔案中的表格式數據。

from_sql_query

建立 TabularDataset 來代表 SQL 資料庫中的表格式數據。

register_dask_dataframe

注意

這是實驗性方法,可以隨時變更。 請參閱 https://aka.ms/azuremlexperimental 以取得詳細資訊。

從 dask 數據框架建立數據集。

register_pandas_dataframe

從 pandas 數據框架建立數據集。

register_spark_dataframe

注意

這是實驗性方法,可以隨時變更。 請參閱 https://aka.ms/azuremlexperimental 以取得詳細資訊。

從 Spark 資料框架建立資料集。

from_delimited_files

建立 TabularDataset 來代表分隔檔案中的表格式數據, (e.g. CSV 和 TSV) 。

static from_delimited_files(path, validate=True, include_path=False, infer_column_types=True, set_column_types=None, separator=',', header=True, partition_format=None, support_multi_line=False, empty_as_string=False, encoding='utf8')

參數

path
Union[str, list[str], DataPath, list[DataPath], (Datastore, str), list[(Datastore, str)]]
必要

原始程式檔的路徑,可以是單一值或 url 字串清單, (HTTP[s]|abfs[s]|wasb[s]) 、 DataPath 物件或 tuple Datastore 和相對路徑。 請注意,路徑清單不能同時包含URL和資料存放區。

validate
bool
必要

布爾值,以驗證是否可以從傳回的數據集載入數據。 預設值為 True。 驗證需要從目前的計算存取數據來源。 若要停用驗證,「infer_column_types」也必須設定為 False。

include_path
bool
必要

布爾值,將路徑資訊保留為數據集中的數據行。 預設為 False。 這在讀取多個檔案時很有用,而且想要知道特定記錄的來源檔案,或保留檔案路徑中有用的資訊。

infer_column_types
bool
必要

布爾值來推斷數據行數據類型。 預設值為 True。 類型推斷需要從目前的計算存取數據源。 目前型別推斷只會提取前 200 列。 如果數據包含多個類型的值,最好是透過 set_column_types 自變數提供所需的類型做為覆寫。 如需有關set_column_types的程式代碼範例,請參閱一節。

set_column_types
dict[str, DataType]
必要

用來設定資料列資料類型的字典,其中索引鍵是資料行名稱,而值是 DataType

separator
str
必要

用來分割數據行的分隔符。

header
boolPromoteHeadersBehavior
必要

控制從檔案讀取時如何升級數據行標頭。 所有具有相同標頭的檔案預設為 True。 檔案將讀取為沒有標頭 When header=False。 您可以使用 的 PromoteHeadersBehavior列舉值來指定更多選項。

partition_format
str
必要

指定路徑的數據分割格式。 默認值為 [無]。 每個路徑的數據分割信息都會根據指定的格式擷取到數據行中。 格式元件 '{column_name}' 會建立字串數據行,而 '{column_name:yyyy/MM/dd/HH/mm/ss}' 會建立 datetime 數據行,其中 'yyyy'、'MM'、'dd'、'HH'、'mm' 和 'ss' 用來擷取日期時間類型的年、月、日、小時、分鐘和秒。 格式應該從第一個分割區索引鍵的位置開始,直到檔案路徑的結尾為止。 例如,指定路徑 '.。/Accounts/2019/01/01/data.csv',其中分割區是依部門名稱和時間, partition_format='/{Department}/{PartitionDate:yyyy/MM/dd}/data.csv' 會建立字符串數據行 'Department',其值為 'Accounts' 和日期時間數據行 'PartitionDate',其值為 '2019-01-01'。

support_multi_line
bool
必要

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

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

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


   from azureml.core import Dataset, Datastore
   from azureml.data.datapath import DataPath

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

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

指定是否應該將空白域值載入為空字串。 默認 (False) 會將空的域值讀取為 null。 將此值傳遞為 True 會將空白域值當做空字串來讀取。 如果值轉換成數值或日期時間,則這沒有任何作用,因為空值會轉換成 Null。

encoding
str
必要

指定檔案編碼。 支援的編碼方式為 'utf8'、'iso88591'、'latin1'、'ascii'、'utf16'、'utf32'、'utf8bom' 和 'windows1252'

傳回

傳回 TabularDataset 物件。

傳回類型

備註

from_delimited_files 會建立 類別的物件 TabularDataset ,它會定義將數據從分隔檔案載入表格式表示的作業。

若要讓 Azure Machine Learning 存取數據, 路徑 所指定的分隔檔案必須位於 Datastore 或位於 Blob、ADLS Gen1 和 ADLS Gen2 的公用 Web URL 或 URL 後方。 如果使用者的 AAD 令牌直接呼叫下列其中一個函式,則會在筆記本或本機 Python 程式中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files Experiment.submit 所提交的作業中將會使用計算目標的身分識別以進行數據存取驗證。 深入了解:https://aka.ms/data-access

數據行數據類型預設會從分隔檔案中的數據推斷。 提供 set_column_types 會覆寫傳回的 TabularDataset 中指定數據行的數據類型。


   from azureml.core import Dataset, Datastore

   # create tabular dataset from a single file in datastore
   datastore = Datastore.get(workspace, 'workspaceblobstore')
   tabular_dataset_1 = Dataset.Tabular.from_delimited_files(path=(datastore,'weather/2018/11.csv'))

   # create tabular dataset from a single directory in datastore
   datastore = Datastore.get(workspace, 'workspaceblobstore')
   tabular_dataset_2 = Dataset.Tabular.from_delimited_files(path=(datastore,'weather/'))

   # create tabular dataset from all csv files in the directory
   tabular_dataset_3 = Dataset.Tabular.from_delimited_files(path=(datastore,'weather/**/*.csv'))

   # create tabular dataset from multiple paths
   data_paths = [(datastore, 'weather/2018/11.csv'), (datastore, 'weather/2018/12.csv')]
   tabular_dataset_4 = Dataset.Tabular.from_delimited_files(path=data_paths)

   # create tabular dataset from url
   tabular_dataset_5 = Dataset.Tabular.from_delimited_files(path='https://url/weather/2018/12.csv')

   # use `set_column_types` to set column data types
   from azureml.data import DataType
   data_types = {
       'ID': DataType.to_string(),
       'Date': DataType.to_datetime('%d/%m/%Y %I:%M:%S %p'),
       'Count': DataType.to_long(),
       'Latitude': DataType.to_float(),
       'Found': DataType.to_bool()
   }
   web_path = [
       'https://url/weather/2018/11.csv',
       'https://url/weather/2018/12.csv'
   ]
   tabular = Dataset.Tabular.from_delimited_files(path=web_path, set_column_types=data_types)

from_json_lines_files

建立 TabularDataset 來代表 JSON Lines 檔案中的表格式數據, (http://jsonlines.org/) 。

static from_json_lines_files(path, validate=True, include_path=False, set_column_types=None, partition_format=None, invalid_lines='error', encoding='utf8')

參數

path
Union[str, list[str], DataPath, list[DataPath], (Datastore, str), list[(Datastore, str)]]
必要

原始程式檔的路徑,可以是單一值或 url 字串清單, (HTTP[s]|abfs[s]|wasb[s]) 、 DataPath 物件或 tuple Datastore 和相對路徑。 請注意,路徑清單不能同時包含URL和資料存放區。

validate
bool
必要

布爾值,以驗證是否可以從傳回的數據集載入數據。 預設值為 True。 驗證需要從目前的計算存取數據來源。

include_path
bool
必要

布爾值,將路徑資訊保留為數據集中的數據行。 預設為 False。 這在讀取多個檔案時很有用,而且想要知道特定記錄的來源檔案,或保留檔案路徑中有用的資訊。

set_column_types
dict[str, DataType]
必要

要設定數據行數據類型的字典,其中索引鍵是數據行名稱和值 DataType

partition_format
str
必要

指定路徑的數據分割格式。 默認值為 [無]。 每個路徑的數據分割信息都會根據指定的格式擷取到數據行中。 格式元件 '{column_name}' 會建立字串數據行,而 '{column_name:yyyy/MM/dd/HH/mm/ss}' 會建立 datetime 數據行,其中 'yyyy'、'MM'、'dd'、'HH'、'mm' 和 'ss' 用來擷取日期時間類型的年、月、日、小時、分鐘和秒。 格式應該從第一個分割區索引鍵的位置開始,直到檔案路徑的結尾為止。 例如,指定路徑 '.。/Accounts/2019/01/01/data.jsonl',其中分割區是依部門名稱和時間, partition_format='/{Department}/{PartitionDate:yyyy/MM/dd}/data.jsonl' 會建立字符串數據行 'Department',其值為 'Accounts',而日期時間數據行 'PartitionDate' 的值為 '2019-01-01'。

invalid_lines
str
必要

如何處理無效 JSON 的行。 支援的值為 『error』 和 『drop』。

encoding
str
必要

指定檔案編碼。 支援的編碼方式為 'utf8'、'iso88591'、'latin1'、'ascii'、'utf16'、'utf32'、'utf8bom' 和 'windows1252'

傳回

傳回 TabularDataset 物件。

傳回類型

備註

from_json_lines_files 會建立 類別的物件 TabularDataset ,它會定義將數據從 JSON Lines 檔案載入表格式表示的作業。

若要讓 Azure Machine Learning 存取數據, 路徑 所指定的 JSON Lines 檔案必須位於 Datastore 或位於 Blob、ADLS Gen1 和 ADLS Gen2 的公用 Web URL 或 URL 後方。 如果使用者的 AAD 令牌直接呼叫下列其中一個函式,則會在筆記本或本機 Python 程式中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files Experiment.submit 所提交的作業中將會使用計算目標的身分識別以進行數據存取驗證。 深入了解:https://aka.ms/data-access

數據行數據類型是從儲存在 JSON Line 檔案中的數據類型讀取。 提供 set_column_types 會覆寫傳回的 TabularDataset 中指定數據行的數據類型。


   from azureml.core import Dataset, Datastore

   # create tabular dataset from a single file in datastore
   datastore = Datastore.get(workspace, 'workspaceblobstore')
   tabular_dataset_1 = Dataset.Tabular.from_json_lines_files(path=(datastore,'weather/2018/11.jsonl'))

   # create tabular dataset from a single directory in datastore
   datastore = Datastore.get(workspace, 'workspaceblobstore')
   tabular_dataset_2 = Dataset.Tabular.from_json_lines_files(path=(datastore,'weather/'))

   # create tabular dataset from all jsonl files in the directory
   tabular_dataset_3 = Dataset.Tabular.from_json_lines_files(path=(datastore,'weather/**/*.jsonl'))

   # create tabular dataset from multiple paths
   data_paths = [(datastore, 'weather/2018/11.jsonl'), (datastore, 'weather/2018/12.jsonl')]
   tabular_dataset_4 = Dataset.Tabular.from_json_lines_files(path=data_paths)

   # create tabular dataset from url
   tabular_dataset_5 = Dataset.Tabular.from_json_lines_files(path='https://url/weather/2018/12.jsonl')

   # use `set_column_types` to set column data types
   from azureml.data import DataType
   data_types = {
       'ID': DataType.to_string(),
       'Date': DataType.to_datetime('%d/%m/%Y %I:%M:%S %p'),
       'Count': DataType.to_long(),
       'Latitude': DataType.to_float(),
       'Found': DataType.to_bool()
   }
   web_path = [
       'https://url/weather/2018/11.jsonl',
       'https://url/weather/2018/12.jsonl'
   ]
   tabular = Dataset.Tabular.from_json_lines_files(path=web_path, set_column_types=data_types)

from_parquet_files

建立 TabularDataset 來代表 Parquet 檔案中的表格式數據。

static from_parquet_files(path, validate=True, include_path=False, set_column_types=None, partition_format=None)

參數

path
Union[str, list[str], DataPath, list[DataPath], (Datastore, str), list[(Datastore, str)]]
必要

原始程式檔的路徑,可以是單一值或 url 字串清單, (HTTP[s]|abfs[s]|wasb[s]) 、 DataPath 物件或 tuple Datastore 和相對路徑。 請注意,路徑清單不能同時包含URL和資料存放區。

validate
bool
必要

布爾值,以驗證是否可以從傳回的數據集載入數據。 預設值為 True。 驗證需要從目前的計算存取數據來源。

include_path
bool
必要

布爾值,將路徑資訊保留為數據集中的數據行。 預設為 False。 這在讀取多個檔案時很有用,而且想要知道特定記錄的來源檔案,或保留檔案路徑中有用的資訊。

set_column_types
dict[str, DataType]
必要

用來設定資料列資料類型的字典,其中索引鍵是資料行名稱,而值是 DataType

partition_format
str
必要

指定路徑的數據分割格式。 默認值為 [無]。 每個路徑的數據分割信息都會根據指定的格式擷取到數據行中。 格式元件 '{column_name}' 會建立字串數據行,而 '{column_name:yyyy/MM/dd/HH/mm/ss}' 會建立 datetime 數據行,其中 'yyyy'、'MM'、'dd'、'HH'、'mm' 和 'ss' 用來擷取日期時間類型的年、月、日、小時、分鐘和秒。 格式應該從第一個分割區索引鍵的位置開始,直到檔案路徑的結尾為止。 例如,指定路徑 '.。/Accounts/2019/01/01/data.parquet',其中分割區是依部門名稱和時間,partition_format='/{Department}/{PartitionDate:yyyy/MM/dd}/data.parquet' 會建立字符串數據行 'Department',其值為 'Accounts' 和日期時間數據行 'PartitionDate',其值為 '2019-01-01'。

傳回

傳回 TabularDataset 物件。

傳回類型

備註

from_parquet_files 會建立 類別的物件 TabularDataset ,它會定義將數據從 Parquet 檔案載入表格式表示的作業。

若要讓 Azure Machine Learning 存取數據, 路徑 所指定的 Parquet 檔案必須位於 Datastore 或位於 Blob、ADLS Gen1 和 ADLS Gen2 的公用 Web URL 或 URL 後方。 如果使用者的 AAD 令牌直接呼叫下列其中一個函式,則會在筆記本或本機 Python 程式中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files Experiment.submit 所提交的作業中將會使用計算目標的身分識別以進行數據存取驗證。 深入了解:https://aka.ms/data-access

數據行數據類型是從儲存在 Parquet 檔案中的數據類型讀取。 提供 set_column_types 將會覆寫傳回之 TabularDataset 中指定數據行的數據類型。


   # create tabular dataset from a single file in datastore
   datastore = Datastore.get(workspace, 'workspaceblobstore')
   tabular_dataset_1 = Dataset.Tabular.from_parquet_files(path=(datastore,'weather/2018/11.parquet'))

   # create tabular dataset from a single directory in datastore
   datastore = Datastore.get(workspace, 'workspaceblobstore')
   tabular_dataset_2 = Dataset.Tabular.from_parquet_files(path=(datastore,'weather/'))

   # create tabular dataset from all parquet files in the directory
   tabular_dataset_3 = Dataset.Tabular.from_parquet_files(path=(datastore,'weather/**/*.parquet'))

   # create tabular dataset from multiple paths
   data_paths = [(datastore, 'weather/2018/11.parquet'), (datastore, 'weather/2018/12.parquet')]
   tabular_dataset_4 = Dataset.Tabular.from_parquet_files(path=data_paths)

   # create tabular dataset from url
   tabular_dataset_5 = Dataset.Tabular.from_parquet_files(path='https://url/weather/2018/12.parquet')

   # use `set_column_types` to set column data types
   from azureml.data import DataType
   data_types = {
       'ID': DataType.to_string(),
       'Date': DataType.to_datetime('%d/%m/%Y %I:%M:%S %p'),
       'Count': DataType.to_long(),
       'Latitude': DataType.to_float(),
       'Found': DataType.to_bool()
   }
   web_path = [
       'https://url/weather/2018/11.parquet',
       'https://url/weather/2018/12.parquet'
   ]
   tabular = Dataset.Tabular.from_parquet_files(path=web_path, set_column_types=data_types)

from_sql_query

建立 TabularDataset 來代表 SQL 資料庫中的表格式數據。

static from_sql_query(query, validate=True, set_column_types=None, query_timeout=30)

參數

query
Union[DataPath, (Datastore, str)]
必要

SQL 類型的數據存放區和查詢。

validate
bool
必要

布爾值,可驗證是否可以從傳回的數據集載入數據。 預設值為 True。 驗證要求數據源可從目前的計算存取。

set_column_types
dict[str, DataType]
必要

用來設定資料列資料類型的字典,其中索引鍵是資料行名稱,而值為 DataType

query_timeout
必要

設定在終止執行命令併產生錯誤之前,) 以秒為單位 (等候時間。 預設值為 30 秒。

傳回

傳回 TabularDataset 物件。

傳回類型

備註

from_sql_query 會建立 類別的物件 TabularDataset ,定義將數據從 SQL 資料庫載入表格式表示的作業。 目前,我們僅支援 MSSQLDataSource。

若要讓 Azure Machine Learning 存取的數據,所 query 指定的 SQL 資料庫必須位於 , Datastore 而且數據存放區類型必須是 SQL 類型。

數據行數據類型是從 SQL 查詢結果中的數據類型讀取。 提供 set_column_types 將會覆寫傳回之 TabularDataset 中指定數據行的數據類型。


   from azureml.core import Dataset, Datastore
   from azureml.data.datapath import DataPath

   # create tabular dataset from a SQL database in datastore
   datastore = Datastore.get(workspace, 'mssql')
   query = DataPath(datastore, 'SELECT * FROM my_table')
   tabular = Dataset.Tabular.from_sql_query(query, query_timeout=10)
   df = tabular.to_pandas_dataframe()

   # use `set_column_types` to set column data types
   from azureml.data import DataType
   data_types = {
       'ID': DataType.to_string(),
       'Date': DataType.to_datetime('%d/%m/%Y %I:%M:%S %p'),
       'Count': DataType.to_long(),
       'Latitude': DataType.to_float(),
       'Found': DataType.to_bool()
   }
   tabular = Dataset.Tabular.from_sql_query(query, set_column_types=data_types)

register_dask_dataframe

注意

這是實驗性方法,可以隨時變更。 請參閱 https://aka.ms/azuremlexperimental 以取得詳細資訊。

從 dask 數據框架建立數據集。

static register_dask_dataframe(dataframe, target, name, description=None, tags=None, show_progress=True)

參數

dataframe
<xref:dask.dataframe.core.DataFrame>
必要

需要上傳 dask 數據框架。

target
Union[DataPath, Datastore, tuple(Datastore, str)]
必要

必要數據存放區路徑,數據框架 parquet 資料將會上傳至其中。 guid 資料夾將會在目標路徑下產生,以避免發生衝突。

name
str
必要

必要,已註冊數據集的名稱。

description
str
必要

選擇性。 數據集的文字描述。 默認為 [無]。

tags
dict[str, str]
必要

選擇性。 索引鍵值標籤的字典,以提供數據集。 默認為 [無]。

show_progress
bool
必要

選擇性,指出是否要在控制台中顯示上傳的進度。 預設值為 True。

傳回

已註冊的數據集。

傳回類型

register_pandas_dataframe

從 pandas 數據框架建立數據集。

static register_pandas_dataframe(dataframe, target, name, description=None, tags=None, show_progress=True, row_group_size=None, make_target_path_unique=True)

參數

dataframe
DataFrame
必要

需要,在要上傳的記憶體數據框架中。

target
Union[DataPath, Datastore, tuple(Datastore, str)]
必要

必要數據存放區路徑,數據框架 parquet 資料將會上傳至其中。 guid 資料夾將會在目標路徑下產生,以避免發生衝突。

name
str
必要

必要,已註冊數據集的名稱。

description
int
必要

選擇性。 數據集的文字描述。 默認為 [無]。

tags
dict[str, str]
必要

選擇性。 索引鍵值標籤的字典,以提供數據集。 默認為 [無]。

show_progress
bool
必要

選擇性,指出是否要在控制台中顯示上傳的進度。 預設值為 True。

row_group_size
必要

選擇性。 寫入 parquet 檔案時要使用的數據列群組大小上限。 默認為 [無]。

make_target_path_unique
必要

選擇性,指出是否應該在目標中建立唯一的子資料夾。 預設值為 True。

傳回

已註冊的數據集。

傳回類型

register_spark_dataframe

注意

這是實驗性方法,可以隨時變更。 請參閱 https://aka.ms/azuremlexperimental 以取得詳細資訊。

從 Spark 資料框架建立資料集。

static register_spark_dataframe(dataframe, target, name, description=None, tags=None, show_progress=True)

參數

dataframe
DataFrame
必要

需要,在要上傳的記憶體數據框架中。

target
Union[DataPath, Datastore, tuple(Datastore, str)]
必要

必要數據存放區路徑,數據框架 parquet 資料將會上傳至其中。 guid 資料夾將會在目標路徑下產生,以避免發生衝突。

name
str
必要

必要,已註冊數據集的名稱。

description
str
必要

選擇性。 數據集的文字描述。 默認為 [無]。

tags
dict[str, str]
必要

選擇性。 索引鍵值標籤的字典,以提供數據集。 默認為 [無]。

show_progress
bool
必要

選擇性,指出是否要在控制台中顯示上傳的進度。 預設值為 True。

傳回

已註冊的數據集。

傳回類型