跳至主要内容
版本: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 BY 及 WITH

如何建立 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 的查詢會交給原本的資料庫/資料倉儲中去執行。