套用 SQL 轉換

本文描述 Azure Machine Learning 設計工具的元件。

「套用 SQL 轉換」元件的用途:

  • 建立結果的資料表,並將資料集儲存在可攜式 SQLite 資料庫中。

  • 資料型別,在執行自訂轉換,或建立彙總。

  • 執行 SQL 查詢陳述式來篩選或改變資料並傳回查詢結果為資料表。

重要

此元件中使用的 SQL 引擎為 SQLite。 如需 SQLite 語法的詳細資訊,請參閱 SQLite 可理解的 SQL。 此元件會將資料推向 SQLite (在記憶體 DB),因此元件執行需要更多記憶體,可能會遇到 Out of memory 錯誤。 請確定電腦有足夠的 RAM。

如何設定套用 SQL 轉換

此模組最多接受三個資料集做為輸入。 當您參考的資料集各連線到每個輸入連接埠時,必須使用名稱 t1t2t3。 這些數字表示輸入連接埠的索引。

以下範例程式碼說明如何聯結兩個資料表。 t1 和 t2 這兩個資料集連線至套用 SQL 轉換的左方和中間輸入連接埠:

SELECT t1.*
    , t3.Average_Rating
FROM t1 join
    (SELECT placeID
        , AVG(rating) AS Average_Rating
    FROM t2
    GROUP BY placeID
    ) as t3
on t1.placeID = t3.placeID

其餘的參數是 SQL 查詢,會使用 SQLite 語法。 在 [SQL 指令碼] 文字輸入框中輸入多行時,請使用分號終止每個陳述式。 否則,插入換行符號會轉換成空格。

此元件支援 SQLite 語法的所有標準陳述式。 關於不支援的陳述式清單,請參閱技術提示一節。

技術說明

本節包含實作詳細資料、提示和常見問題集的解答。

  • 連接埠 1 一律需要輸入。

  • 如果資料行識別碼包含空格或其他特殊字元,則在 SELECTWHERE 子句中參考資料行時,請一律以方括弧或雙引號括住資料行識別碼。

  • 如果您在套用 SQL 轉換之前已使用 [編輯中繼資料] 來指定資料行中繼資料 (分類或欄位),則套用 SQL 轉換的輸出不會包含這些屬性。 套用 SQL 轉換之後,您必須使用 [編輯中繼資料] 來編輯資料行。

不支援的陳述式

雖然 SQLite 支援大部分的 ANSI SQL 標準,它不包含許多商業的關聯式資料庫系統所支援的功能。 如需詳細資訊,請參閱 SQLite 可理解的 SQL。 此外,在建立 SQL 陳述式時,請留意下列限制:

  • 不過,不像大多數的 SQL 資料庫系統,SQLite 使用動態輸入的值,而非指定類型至資料行。 它弱型別,並允許隱含型別轉換。

  • 實作 LEFT OUTER JOIN,而不是 RIGHT OUTER JOINFULL OUTER JOIN

  • 您可以使用RENAME TABLEADD COLUMN陳述式與ALTER TABLE命令,但其他子句不支援,包括DROP COLUMNALTER COLUMN,和ADD CONSTRAINT

  • 您可以建立一個檢視內 SQLite,但之後檢視是唯讀。 無法執行DELETEINSERT,或UPDATE檢視上的陳述式。 不過,您可以建立會引發觸發程序,在嘗試DELETEINSERT,或UPDATE檢視上並執行其他作業的觸發程序主體中。

除了官方 SQLite 網站所提供不支援的函數清單,下列 Wiki 提供其他不支援的功能清單:SQLite - Unsupported SQL

後續步驟

請參閱 Azure Machine Learning 可用的元件集