匯入資料資產 (預覽)
適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)
在本文中,您將了解如何將資料從外部來源匯入至 Azure Machine Learning 平台。 成功匯入資料時,會以在匯入期間所提供的名稱,自動建立並註冊 Azure Machine Learning 資料資產。 Azure Machine Learning 資料資產類似於網頁瀏覽器書籤 (我的最愛)。 您不需要記住指向您最常使用之資料的長儲存體路徑 (URI)。 相反地,您可以建立資料資產,然後使用自訂名稱存取該資產。
資料匯入會建立來源資料與中繼資料的快取,以在 Azure Machine Learning 定型作業中更快且可靠地存取資料。 資料快取可避免網路和連線限制。 快取的資料已設定版本,以支援重現性。 這會針對從 SQL Server 來源匯入的資料,提供版本設定功能。 此外,快取的資料會提供資料譜系以進行稽核工作。 資料匯入會在幕後使用 ADF (Azure Data Factory 管線),這表示使用者可以避免與 ADF 進行複雜的互動。 在幕後,Azure Machine Learning 也會管理 ADF 計算資源集區大小、計算資源佈建和卸除,藉由判斷適當的平行處理來最佳化資料傳輸。
傳輸的資料會分割並安全地儲存在 Azure 儲存體中,作為 parquet 檔案。 這可在定型期間加速處理。 ADF 計算成本只涉及資料傳輸所用的時間。 儲存體成本只與快取資料所需的時間有關,因為快取的資料是從外部來源匯入的資料複本。 Azure 儲存體裝載該外部來源。
快取功能與預先計算和儲存體成本有關。 不過,相較於在定型期間直接連線到外部來源資料,其會自行支付費用,而且可以節省成本,因為其可減少週期性定型計算成本。 其會將資料快取為 parquet 檔案,讓作業定型更快速且更可靠,以防止較大型資料集發生連線逾時。 這會減少重新執行次數,並降低低定型失敗次數。
您可以從 Amazon S3、Azure SQL 和 Snowflake 匯入資料。
必要條件
若要建立並使用資料資產,您需要:
注意
若要成功匯入資料,請確認您已安裝適用於 SDK 的最新 azure-ai-ml 套件 (1.15.0 版或更新版本) 以及 ml 延伸模組 (2.15.1 版或更新版本)。
如果您有較舊的 SDK 套件或 CLI 擴充功能,請移除舊版本,並使用索引標籤區段中所示的程式碼來安裝新套件。 請遵循 SDK 和 CLI 的指示操作,如下所示:
程式碼版本
az extension remove -n ml
az extension add -n ml --yes
az extension show -n ml #(the version value needs to be 2.15.1 or later)
pip install azure-ai-ml
pip show azure-ai-ml #(the version value needs to be 1.15.0 or later)
從外部資料庫匯入為 mltable 資料資產
注意
外部資料庫可以有 Snowflake、Azure SQL 等格式。
下列程式碼範例可從外部資料庫匯入資料。 處理匯入動作的 connection
會決定外部資料庫資料來源中繼資料。 在此範例中,程式碼從 Snowflake 資源匯入資料。 連線指向 Snowflake 來源。 只要輕微修改,連線便可指向 Azure SQL 資料庫來源和 Azure SQL 資料庫來源。 從外部資料庫來源匯入的資產 type
為 mltable
。
建立 YAML
檔案 <file-name>.yml
:
$schema: http://azureml/sdk-2-0/DataImport.json
# Supported connections include:
# Connection: azureml:<workspace_connection_name>
# Supported paths include:
# Datastore: azureml://datastores/<data_store_name>/paths/<my_path>/${{name}}
type: mltable
name: <name>
source:
type: database
query: <query>
connection: <connection>
path: <path>
接下來,在 CLI 中執行下列命令:
> az ml data import -f <file-name>.yml
from azure.ai.ml.entities import DataImport
from azure.ai.ml.data_transfer import Database
from azure.ai.ml import MLClient
# Supported connections include:
# Connection: azureml:<workspace_connection_name>
# Supported paths include:
# path: azureml://datastores/<data_store_name>/paths/<my_path>/${{name}}
ml_client = MLClient.from_config()
data_import = DataImport(
name="<name>",
source=Database(connection="<connection>", query="<query>"),
path="<path>"
)
ml_client.data.import_data(data_import=data_import)
注意
這裡看到的範例描述 Snowflake 資料庫的程序。 不過,此程序涵蓋 Azure SQL 等其他外部資料庫格式。
瀏覽至 Azure Machine Learning 工作室。
在左側導覽的 [資產] 下,選取 [資料]。 接下來,選取 [資料匯入] 索引標籤。然後選取 [建立],如以下螢幕擷取畫面所示:
在 [資料來源] 畫面上,選取 [Snowflake],然後選取 [下一步],如此螢幕擷取畫面所示:
在 [資料類型] 畫面上,填入值。 [類型] 值預設為 [表格 (mltable)]。 然後選取 [下一步],如此螢幕擷取畫面所示:
在 [建立資料匯入] 畫面中填入值,然後選取 [下一步],如此螢幕擷取畫面所示:
在 [選擇要輸出的資料存放區] 畫面中填入值,然後選取 [下一步],如此螢幕擷取畫面所示。 預設會選取 [工作區受控資料存放區];當您選擇受控資料存放區時,系統會自動指派路徑。 如果您選取 [工作區受控資料存放區],則會出現 [自動刪除設定] 下拉式清單。 依預設提供 30 天的資枓刪除時間範圍,如何管理已匯入的資料資產中說明如何變更此值。
注意
若要選擇您自己的資料存放區,請選取 [其他資料存放區]。 在此情況下,您必須選取資料快取位置的路徑。
您可以新增排程。 選取 [新增排程],如此螢幕擷取畫面所示:
隨即開啟新的面板,您可以在其中定義 [定期] 排程或 [Cron] 排程。 此螢幕擷取畫面顯示 [定期] 排程的面板:
- 名稱:工作區內排程的唯一識別碼。
- 說明:排程說明。
- 觸發程式:排程的定期模式,包含以下屬性。
- 時區:觸發時間是依時區計算;預設是(UTC)國際標準時間。
- 定期或 Cron 運算式:選取定期以指定週期性模式。 在定期下,您可以指定定期頻率 - 依分鐘、小時、天、週或月。
- 開始:排程在這個日期生效。 預設是這個排程的建立日期。
- 結束:過了這個日期之後,排程將失效。 預設是 NONE,表示排程會一直作用,直到您手動停用為止。
- 標籤:選取的排程標籤。
注意
開始使用排程的時區,指定開始日期和時間。 如果省略開始,則開始時間等於排程建立時間。 如果開始時間已過,第一個作業將在下一個算出的執行階段執行。
下一個螢幕擷取畫面顯示此程序的最後一個畫面。 檢閱您的選擇,然後選取 [建立]。 在此畫面中,以及此程序的其他畫面,選取 [上一步] 即可移至先前的畫面,以變更您選擇的值。
此螢幕擷取畫面顯示 [Cron] 排程的面板:
名稱:工作區內排程的唯一識別碼。
說明:排程說明。
觸發程式:排程的定期模式,包含以下屬性。
時區:觸發時間依此時區計算;預設是 (UTC) 國際標準時間。
定期或 Cron 運算式:選取 Cron 運算式以指定 Cron 詳細資料。
(必要項目) expression
使用標準 crontab 運算式來表示週期性排程。 單一運算式由五個空格分隔欄位組成:
MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
如需 crontab 表達式的詳細資訊,請瀏覽 GitHub 上的 Crontab 表達式 Wiki (英文)。
重要
不支援 DAYS
和 MONTH
。 如果您傳遞其中一個值,系統將忽略該值,並將該值視為 *
。
- 開始:排程在這個日期生效。 預設是這個排程的建立日期。
- 結束:過了這個日期之後,排程將失效。 預設是 NONE,表示排程會一直作用,直到您手動停用為止。
- 標籤:選取的排程標籤。
注意
開始使用排程的時區,指定開始日期和時間。 如果省略開始,則開始時間等於排程建立時間。 如果開始時間已過,第一個作業將在下一個算出的執行階段執行。
下一個螢幕擷取畫面顯示此程序的最後一個畫面。 檢閱您的選擇,然後選取 [建立]。 在此畫面中,以及此程序的其他畫面,選取 [上一步] 即可移至先前的畫面,以變更您選擇的值。
從外部檔案系統匯入資料,作為資料夾資料資產
注意
Amazon S3 資料資源可作為外部檔案系統資源。
處理資料匯入動作的 connection
會決定外部資料來源的各個層面。 連線會將 Amazon S3 貯體定義為目標。 連線需要有效的 path
值。 從外部檔案系統來源匯入的資產值具有 uri_folder
的 type
。
下一個程式碼範例會從 Amazon S3 資源匯入資料。
建立 YAML
檔案 <file-name>.yml
:
$schema: http://azureml/sdk-2-0/DataImport.json
# Supported connections include:
# Connection: azureml:<workspace_connection_name>
# Supported paths include:
# path: azureml://datastores/<data_store_name>/paths/<my_path>/${{name}}
type: uri_folder
name: <name>
source:
type: file_system
path: <path_on_source>
connection: <connection>
path: <path>
接下來,在 CLI 中執行此命令:
> az ml data import -f <file-name>.yml
from azure.ai.ml.entities import DataImport
from azure.ai.ml.data_transfer import FileSystem
from azure.ai.ml import MLClient
# Supported connections include:
# Connection: azureml:<workspace_connection_name>
# Supported paths include:
# path: azureml://datastores/<data_store_name>/paths/<my_path>/${{name}}
ml_client = MLClient.from_config()
data_import = DataImport(
name="<name>",
source=FileSystem(connection="<connection>", path="<path_on_source>"),
path="<path>"
)
ml_client.data.import_data(data_import=data_import)
瀏覽至 Azure Machine Learning 工作室。
在左側導覽的 [資產] 下,選取 [資料]。 接下來,選取 [資料匯入] 索引標籤。然後選取 [建立],如此螢幕擷取畫面所示:
在 [資料來源] 畫面上,選取 [S3],然後選取 [下一步],如此螢幕擷取畫面所示:
在 [資料類型] 畫面上,填入值。 [類型] 值預設為 Folder (uri_folder)。 然後選取 [下一步],如此螢幕擷取畫面所示:
在 [建立資料匯入] 畫面中填入值,然後選取 [下一步],如此螢幕擷取畫面所示:
在 [選擇要輸出的資料存放區] 畫面中填入值,然後選取 [下一步],如此螢幕擷取畫面所示。 預設會選取 [工作區受控資料存放區];當您選擇受控資料存放區時,系統會自動指派路徑。 如果您選取 [工作區受控資料存放區],則會出現 [自動刪除設定] 下拉式清單。 依預設提供 30 天的資枓刪除時間範圍,如何管理已匯入的資料資產中說明如何變更此值。
您可以新增排程。 選取 [新增排程],如此螢幕擷取畫面所示:
隨即開啟新的面板,您可以在其中定義 [定期] 排程或 [Cron] 排程。 此螢幕擷取畫面顯示 [定期] 排程的面板:
- 名稱:工作區內排程的唯一識別碼。
- 說明:排程說明。
- 觸發程式:排程的定期模式,包含以下屬性。
- 時區:觸發時間是依時區計算;預設是(UTC)國際標準時間。
- 定期或 Cron 運算式:選取定期以指定週期性模式。 在定期下,您可以指定定期頻率 - 依分鐘、小時、天、週或月。
- 開始:排程在這個日期生效。 預設是這個排程的建立日期。
- 結束:過了這個日期之後,排程將失效。 預設是 NONE,表示排程會一直作用,直到您手動停用為止。
- 標籤:選取的排程標籤。
注意
開始使用排程的時區,指定開始日期和時間。 如果省略開始,則開始時間等於排程建立時間。 如果開始時間已過,第一個作業將在下一個算出的執行階段執行。
如下一個螢幕擷取畫面所示,請檢閱您在此程序最後一個畫面上的選擇,然後選取 [建立]。 在此畫面中,以及此程序的其他畫面,如果您要變更您選擇的值,請選取 [上一步] 即可移至先前的畫面。
下一個螢幕擷取畫面顯示此程序的最後一個畫面。 檢閱您的選擇,然後選取 [建立]。 在此畫面中,以及此程序的其他畫面,選取 [上一步] 即可移至先前的畫面,以變更您選擇的值。
此螢幕擷取畫面顯示 [Cron] 排程的面板:
名稱:工作區內排程的唯一識別碼。
說明:排程說明。
觸發程式:排程的定期模式,包含以下屬性。
時區:觸發時間依此時區計算;預設是 (UTC) 國際標準時間。
定期或 Cron 運算式:選取 Cron 運算式以指定 Cron 詳細資料。
(必要項目) expression
使用標準 crontab 運算式來表示週期性排程。 單一運算式由五個空格分隔欄位組成:
MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
如需 crontab 表達式的詳細資訊,請瀏覽 GitHub 上的 Crontab 表達式 Wiki (英文)。
重要
不支援 DAYS
和 MONTH
。 如果您傳遞其中一個值,系統將忽略該值,並將該值視為 *
。
- 開始:排程在這個日期生效。 預設是這個排程的建立日期。
- 結束:過了這個日期之後,排程將失效。 預設是 NONE,表示排程會一直作用,直到您手動停用為止。
- 標籤:選取的排程標籤。
注意
開始使用排程的時區,指定開始日期和時間。 如果省略開始,則開始時間等於排程建立時間。 如果開始時間已過,第一個作業將在下一個算出的執行階段執行。
下一個螢幕擷取畫面顯示此程序的最後一個畫面。 檢閱您的選擇,然後選取 [建立]。 在此畫面中,以及此程序的其他畫面,選取 [上一步] 即可移至先前的畫面,以變更您選擇的值。
檢查外部資料來源的匯入狀態
資料匯入動作是非同步動作。 可能需要很長的時間。 透過 CLI 或 SDK 提交匯入資料動作之後,Azure Machine Learning 服務可能需要幾分鐘的時間才能連線到外部資料來源。 然後,服務會啟動資料匯入,並處理資料快取和註冊。 資料匯入所需的時間也取決於來源資料集的大小。
下一個範例會傳回已提交之資料匯入活動的狀態。 命令或方法會使用「資料資產」名稱作為輸入,以判斷資料具體化的狀態。
> az ml data list-materialization-status --name <name>
from azure.ai.ml.entities import DataImport
from azure.ai.ml import MLClient
ml_client = MLClient.from_config()
ml_client.data.show_materialization_status(name="<name>")
下一步