External Query Table
This feature is only available after version 2.4.3
過往所有在 Canner Enterprise 中執行的 SQL 都需要透過其中的 SQL Engine 進行運算及處理。但現在,我們支援了 External Query Table (簡稱 EQT) 功能,允許使用者可以將某一段的 SQL 查詢交給原始的 Database / Data Warehouse 進行查詢及運算。此外,透過 EQT,您也可以執行原始 Database / Data Warehouse 的專有語法,例如 BigQuery 中的 Wildcard 查詢。
支援使用 EQT 的資料來源
- BigQuery
- Generic JDBC
- MySQL
- Oracle
- PostgreSQL
- SQL Server
- Teradata
一般使用限制
- 建立 EQT 時,使用的 SQL 語法為原始資料庫的語法,而非 Canner Enterprise 中使用的 ANSI SQL 語法
- 僅支援查詢操作,以
SELECT
開頭或以WITH
開頭,再接SELECT
的語句 - 針對 JDBC Connectors 相關的資料來源 (MySQL, Oracle, PostgreSQL, SQL Server, Teradata, Generic JDBC),在執行查詢時
TABLE_NAME
需使用schema.table
SELECT * FROM SCHEMA.TABLE
各資料來源使用限制
BigQuery
Table Name 需要使用完整名稱
SELECT * FROM `Project ID`.`Dataset ID`.`TABLE_NAME`
Teradata
- 無法使用
ORDER BY
(參考連結)
- 無法使用
PostgreSQL
- 不支援使用有
Array
型別的欄位
- 不支援使用有
SQL Server
- 不支援使用
ORDER BY
及WITH
- 不支援使用
如何建立 EQT
Step 1: 進入 EQT 頁面
首先,在側欄中,先選取要在哪個資料來源建立 EQT,選取後,進入到 External Query Table(EQT)
的標籤頁中。
Step 2: 建立 EQT
點擊 Create an External Query Table
按鈕。
設定該 EQT 的名稱,以及要建立 EQT 的 SQL 查詢語句。
點擊 Preview Data
按鈕,即可進行資料預覽。
建立完成後,即可在頁面列表中看到完成建立的 EQT。
完成建立的 EQT,也可以和一般 Data Source 中的 Table 一樣,進行 Metadata 的編輯。
如何在側欄中區分 Data Source 中 Table 以及 EQT
若看到 Icon 中呈現 Table 與箭頭時 (如下圖所示),則代表此為 EQT。
Step 3: 將 EQT 匯入工作區
建立好後的 EQT 可以匯入工作區中與其他 Dataset 一起進行使用。匯入的流程與一般 Dataset 匯入流程 相同。
進入工作區後,點擊 Create Dataset
按鈕,選擇 Create a Table
。
選擇資料來源以及前面步驟所建立的 EQT。
建立完成後,可以在列表中看到該 EQT 已經成功匯入工作區中。
Step 4: 使用 EQT 進行資料轉換
切換到 Analysis 功能頁面中,EQT 就跟工作區中的 Dataset(Table) 一樣,可以在此進行資料轉換,以此查詢為例:
select *
from supplier_13633 cross join demo_64487
limit 10
執行此段 SQL 查詢時,由於 demo_64487
這個 Table 是我們建立的 EQT,所以該 Table 的查詢會交給原本的資料庫/資料倉儲中去執行。