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
參數,其他參數將被忽略(例如from
、size
)例如,
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"
}
}
}'
)
);