匯出至 Azure 資料表

本文說明如何在 Azure Machine Learning Studio 的「匯出資料」模組中使用 [匯出至 azure ] 選項 (傳統) 。

注意

適用于 : Machine Learning Studio (傳統)

此內容僅適用于 Studio (傳統) 。 Azure Machine Learning 設計工具中已新增類似的拖放模組。 若要深入瞭解 這兩個版本,請參閱這篇文章

當您想要將來自機器學習服務實驗的結果或中繼資料匯出至 Azure 資料表時,此選項非常有用。 Azure 表格服務是 Azure 中的資料管理服務,可儲存大量的結構化、非關聯式資料。 它是一種 NoSQL 資料存放區,可接受來自 Azure 內外經過驗證的呼叫。

如何將資料匯出至 Azure 資料表

  1. 將「 匯出資料 」模組新增至您的實驗。 您可以在 Studio (傳統) 的 資料輸入和輸出 類別中找到此模組。

  2. 將它連接至模組,以產生您想要匯出至 Azure 資料表儲存體的資料。

  3. 藉由設定 驗證類型 選項,指定要將資料匯出至公用共用資源或需要登入認證的私人儲存體帳戶。

    • 公用 (SAS url):如果帳戶支援透過 SAS url 存取,請選擇此選項。 在 [ 資料表 SAS URI ] 欄位中,輸入或貼上定義帳戶和公用 blob 的完整 URI。

      SAS URL 是有時間限制的存取 URL,可讓您使用 Azure 儲存體公用程式來產生。 在可透過 SAS URL 存取的頁面中,只能使用下列格式來儲存資料: CSV、TSV 及 ARFF。

    • 帳戶:如果您的資料位於 私人 帳戶,請選擇此選項。 您也必須提供包含帳戶名稱和金鑰的認證。

  4. 如果您想要將資料匯出至安全的私人儲存體,請提供存取帳戶所需的認證:

    • 資料表帳戶名稱:輸入或貼上包含您想要存取之 blob 的帳戶名稱。 例如,如果儲存體帳戶的完整 URL 是 https://myshared.table.core.windows.net ,您會輸入 myshared

    • 資料表帳戶金鑰:貼上與儲存體帳戶相關聯的存取金鑰。

    • 資料表名稱:輸入您想要讀取之特定資料表的名稱。

  5. 使用資料行屬性,指定要儲存至資料表存放區的資料行,以及要使用哪些資料行來定義資料表架構。

    • 分割 區索引鍵:選擇應該用於分割 Azure 儲存體中資料表已儲存資料集的資料行。 Azure 中的資料表會分割,以支援跨儲存體節點進行負載平衡。 所有資料表實體都會依資料分割來組織;因此,所有資料表作業都需要 PartitionKey 屬性。

    • Azure 資料表 資料列索引鍵:選擇要用於 RowKey 屬性的資料行。 RowKey 屬性是資料表中每個實體所需的系統屬性。 除了 PartitionKey 屬性之外,它還會針對資料表中的每個資料列形成唯一的索引。

    注意

    您必須針對 RowKeyPartitionKey 使用不同的資料行。 請確定您為 RowKey 或 PartitionKey 選取的任何資料行也都包含在目的地資料行清單中,否則會引發錯誤。

    • Azure 資料表來來源資料行:選取您想要儲存至 Azure 資料表之資料集內的任何其他資料行。 您也必須包含針對 PartitionKeyRowKey 選取的資料行。

    如需有關 Azure 儲存體中之資料表的詳細資訊,請參閱 瞭解表格服務資料模型

  6. 指定要寫入資料表的資料行名稱。

    重要

    您必須針對輸出至資料表的每個資料行提供資料行名稱,包括 RowKeyPartitionKey 和所有原始資料行。

    如果您提供的資料行名稱數目不符合輸出資料行的數目,就會引發錯誤。

    如果您輸入新的資料行名稱,則必須以來源資料行的資料行索引順序提供這些名稱。

  7. Azure 資料表寫入模式:指出當資料已存在於 Azure 資料表中時,您希望 匯出資料 的行為。

    • 插入:作業 Insert Entity 會使用唯一主鍵插入新實體,該索引鍵是由 PartitionKeyRowKey 屬性的組合所組成。

    • Merge:作業會更新 Merge Entity 實體的屬性來更新現有實體。 這項作業不會取代現有的實體。

    • 取代:作業會 Update Entity 取代資料表中給定實體的內容。

    • InsertOrReplace:如果實體不存在,此作業 InsertOrReplace Entity 會插入實體。 如果實體存在,則會取代現有的實體。

    • InsertOrMerge:如果實體不存在,此作業 InsertOrMerge Entity 會插入實體。 如果實體存在,則會合併提供的實體屬性與現有的屬性。

  8. 使用 快取的結果:指出您是否要在每次執行實驗時重新整理資料。

    如果您選取此選項,則在第一次執行實驗時,「 匯出資料 」模組會將資料儲存至指定的資料表,之後除非有上游變更,否則不會執行寫入。

    如果您取消選取此選項,無論資料是否相同,資料都會在每次執行實驗時寫入目的地。

  9. 執行實驗。

技術說明

本節包含對常見問題的執行詳細資料、秘訣和解答。

常見問題

為什麼我在寫入現有的資料表時收到錯誤

檢查資料表的架構,以確保資料行的名稱和資料類型相同。 例如,在 Azure 資料表儲存體中,[識別碼] 資料行應該是字串。

如果您收到錯誤, 錯誤0027:傳遞的物件大小不一致,請確認資料表是否存在於指定的容器中。 Azure ML 目前只能寫入現有的資料表。

為什麼我會收到錯誤,指出找不到現有的資料行

如果您未執行實驗,則 匯出資料有時不會偵測到上游資料行。 如果您在實驗中進行任何上游變更,您可能需要移除「 匯出資料 」模組,然後新增並重新設定它。

如何避免不必要地重新撰寫相同的資料

如果您實驗中的資料因為任何原因而變更,則 [ 匯出資料 ] 模組一律會寫入新的資料。

但是,如果您是以其他不會影響結果的變更來執行實驗,請將 [使用快取的 結果 ] 選項設定為 [TRUE]。 此模組會使用相同的選項來檢查實驗是否已執行,如果找到先前的結果,則不會將資料寫入 Azure 資料表。

是否可以將資料匯出至不同的地理區域

是。 不過,如果儲存體帳戶與用於機器學習實驗的計算節點位於不同的區域,則資料存取可能會變慢。 此外,您需支付訂用帳戶的資料輸入和輸出費用。

範例

如需如何使用這些機器學習模組的範例,請參閱 AZURE AI 資源庫

模組參數

公用或 SAS-公用選項

Name 範圍 類型 預設 描述
資料表 SAS URI 任意 String

帳戶-私用帳戶選項

Name 範圍 類型 預設 描述
資料表帳戶名稱
資料表帳戶金鑰 任意 SecureString

儲存體選項

Name 範圍 類型 預設 描述
資料表名稱 String
分割區索引鍵 任意 SecureString 在分割資料表時,選擇要用來作為索引鍵的資料行。 如果未選取任何資料行,則會以資料行名稱做為所有專案的資料分割索引鍵
Azure 資料表資料列索引鍵 任意 ColumnPicker 選擇包含資料表資料列之唯一識別碼的資料行。 預設為以 GUID 為基礎的資料列索引鍵
Azure 資料表原始資料行 任意 ColumnPicker 指定要包含在資料表中的資料行(依名稱或資料行索引)
Azure 資料表目的地資料行 任意 String 輸入要在目的地資料表中使用的資料行名稱
Azure 資料表寫入模式 清單: Insert、Merge、Replace、InsertOrReplace、InsertOrMerge 列舉
使用快取的結果 TRUE/FALSE Boolean FALSE 只有在有效的快取不存在時才會執行模組;否則,請使用先前執行的快取資料。

例外狀況

例外狀況 描述
錯誤 0027 當兩個物件的大小必須相同但卻不同時,就會發生例外狀況。
錯誤 0003 如果一或多個輸入是 Null 或空白,就會發生例外狀況。
錯誤 0029 傳遞無效的 URI 時,就會發生例外狀況。
錯誤 0030 無法下載檔案時,就會發生例外狀況。
錯誤 0002 如果有一或多個參數無法剖析或從指定的類型轉換成目標方法所需的類型,就會發生例外狀況。
錯誤 0009 如果指定的 Azure 儲存體帳戶名稱或容器名稱不正確,就會發生例外狀況。
錯誤 0048 無法開啟檔案時,就會發生例外狀況。
錯誤 0046 無法在指定的路徑上建立目錄時,就會發生例外狀況。
錯誤 0049 無法剖析檔案時,就會發生例外狀況。

如需 Studio (傳統) 模組特定的錯誤清單,請參閱 機器學習錯誤碼

如需 API 例外狀況的清單,請參閱 機器學習 REST API 錯誤碼

另請參閱

匯入資料
匯出資料
匯出至 Azure SQL Database
匯出至 Azure Blob 儲存體
匯出至 Hive 查詢