如果您在查詢與分析資料時需要區分更細維度資料類型,您可以在查詢與分析語句中使用類型轉換函式轉換資料的資料類型。
Log Service支援如下類型轉換函式。
在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如:'status'表示字串status,status或"status"表示日誌欄位status。
函數名稱 | 文法 | 說明 | 支援SQL | 支援SPL |
cast(x as type) | 轉換x的資料類型。 使用cast函數轉換資料類型時,如果某個值轉換失敗,將終止整個查詢與分析操作。 | √ | √ | |
try_cast(x as type) | 轉換x的資料類型。 使用try_cast函數轉換資料類型時,如果某個值轉換失敗,該值返回NULL,並跳過該值繼續處理。 說明 日誌中可能有髒資料,建議使用try_cast函數,避免因髒資料造成整個查詢與分析操作失敗。 | √ | × | |
typeof(x) | 返回x的資料類型。 | √ | × |
cast函數
cast函數用於轉換x的資料類型。使用cast函數轉換資料類型時,如果某個值轉換失敗,將終止整個查詢與分析操作。
文法
cast(x as type)
參數說明
參數 | 說明 |
x | 參數值可以為任意類型。 |
type | SQL資料類型,可選值為bigint、varchar、double、boolean、timestamp、decimal、array或map。 例如 索引資料類型和SQL資料類型的映射關係,請參見附錄:資料類型映射關係。 |
傳回值類型
由您配置的type參數決定。
樣本
SQL
將數字1轉換為boolean格式。
查詢和分析語句
* | select cast(1 as boolean)
查詢和分析結果
SPL
將數字1轉換為boolean格式。
查詢和分析語句
* | extend a = cast(1 as boolean)
查詢和分析結果
try_cast函數
try_cast函數用於轉換x的資料類型。使用try_cast函數轉換資料類型時,如果某個值轉換失敗,該值返回NULL,並跳過該值繼續處理。
文法
try_cast(x as type)
參數說明
參數 | 說明 |
x | 參數值可以為任意類型。 |
type | SQL資料類型,可選值為bigint、varchar、double、boolean、timestamp、decimal、array或map。 例如 索引資料類型和SQL資料類型的映射關係,請參見附錄:資料類型映射關係。 |
傳回值類型
由您配置的type參數決定。
樣本
將uid欄位值轉換為varchar類型。
查詢和分析語句
* | select try_cast(uid as varchar)
查詢和分析結果
typeof函數
typeof函數用於返回x的資料類型。
文法
typeof(x)
參數說明
參數 | 說明 |
x | 參數值可以為任意資料類型。 |
傳回值類型
varchar類型。
樣本
判斷request_time欄位值的資料類型。
查詢和分析語句
* |SELECT typeof(request_time)
查詢和分析結果
附錄:資料類型映射關係
索引資料類型和SQL資料類型的對應關係如下表所示:
索引的資料類型 | SQL的資料類型 |
long | bigint |
text | varchar |
double | double |
json | varchar |