跳至主要内容
版本:v2

External Query Table

Info

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

一般使用限制

  1. 建立 EQT 時,使用的 SQL 語法為原始資料庫的語法,而非 Canner Enterprise 中使用的 ANSI SQL 語法
  2. 僅支援查詢操作,以 SELECT 開頭或以 WITH 開頭,再接SELECT的語句
  3. 針對 JDBC Connectors 相關的資料來源 (MySQL, Oracle, PostgreSQL, SQL Server, Teradata, Generic JDBC),在執行查詢時 TABLE_NAME 需使用 schema.table
SELECT * FROM SCHEMA.TABLE

各資料來源使用限制

  1. BigQuery

    1. 支援使用 Google Standard SQL 語法

    2. Table Name 需要使用完整名稱

      SELECT * FROM `Project ID`.`Dataset ID`.`TABLE_NAME`
  2. Teradata

    1. 無法使用 ORDER BY (參考連結)
  3. PostgreSQL

    1. 不支援使用有 Array 型別的欄位
  4. SQL Server

    1. 不支援使用 ORDER BYWITH

如何建立 EQT

Step 1: 進入 EQT 頁面

首先,在側欄中,先選取要在哪個資料來源建立 EQT,選取後,進入到 External Query Table(EQT) 的標籤頁中。

1_eqt

Step 2: 建立 EQT

點擊 Create an External Query Table 按鈕。

2_eqt

設定該 EQT 的名稱,以及要建立 EQT 的 SQL 查詢語句。

3_eqt

點擊 Preview Data按鈕,即可進行資料預覽。

4_eqt

建立完成後,即可在頁面列表中看到完成建立的 EQT。

5_eqt

完成建立的 EQT,也可以和一般 Data Source 中的 Table 一樣,進行 Metadata 的編輯。

6_eqt

如何在側欄中區分 Data Source 中 Table 以及 EQT

若看到 Icon 中呈現 Table 與箭頭時 (如下圖所示),則代表此為 EQT。

Step 3: 將 EQT 匯入工作區

建立好後的 EQT 可以匯入工作區中與其他 Dataset 一起進行使用。匯入的流程與一般 Dataset 匯入流程 相同。

進入工作區後,點擊 Create Dataset 按鈕,選擇 Create a Table

8_eqt

選擇資料來源以及前面步驟所建立的 EQT。

9_eqt

建立完成後,可以在列表中看到該 EQT 已經成功匯入工作區中。

10_eqt

Step 4: 使用 EQT 進行資料轉換

切換到 Analysis 功能頁面中,EQT 就跟工作區中的 Dataset(Table) 一樣,可以在此進行資料轉換,以此查詢為例:

select *
from supplier_13633 cross join demo_64487
limit 10

11_eqt

執行此段 SQL 查詢時,由於 demo_64487 這個 Table 是我們建立的 EQT,所以該 Table 的查詢會交給原本的資料庫/資料倉儲中去執行。