Skip to main content
Version: v4

Table Function (表函數)

表函數是從來源回傳完整的 Table 的函數。 它可以在查詢的 FROM 子句內呼叫。

資料來源支持

目前只有 Elasticsearch 資料來源提供了該表功能。

raw_query(varchar) -> 表

raw_query 函數可以直接查詢底層資料庫。 該函數需要 Elastic Query DSL 語法,因為完整的查詢是在 Elasticsearch 中下推和處理的。 這對於從 Canner 中執行不支援的函數或在查詢直接在原始的資料來源查詢。

從資料來源查詢回傳必須為一個表格作為結果。 Passthrough queries 只能用於讀取資料。

raw_query 函數需要兩個參數:

  • index:屬於Elasticsearch資料來源的canner表名稱(此處不允許外部查詢表)。

  • query:要執行的查詢,用 Elastic Query DSL 寫。 請注意,這裡的 DSL 只接受 query 參數,其他參數將被忽略(例如 fromsize

    • 例如, query 參數中的 size 將被忽略,並且不會傳送到 Elasticsearch。

       raw_query(
      index => 'nation',
      query => '{
      "size": 1000,
      "query": {
      "match": {
      "name": "ALGERIA"
      }
      }
      }'
      )

例如,使用 raw_query 表函數在 nation 索引中搜尋國家名稱為 ALGERIA 的文件:

SELECT
*
FROM
TABLE(
raw_query(
index => 'nation',
query => '{
"query": {
"match": {
"name": "ALGERIA"
}
}
}'
)
);