如果您在查詢與分析資料時需要區分更細維度資料類型,您可以在查詢與分析語句中使用類型轉換函式轉換資料的資料類型。
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) -
查詢和分析結果返回結果為
true,即整數1被成功轉換為布爾值。
SPL
將數字1轉換為boolean格式。
-
查詢和分析語句
* | extend a = cast(1 as boolean)
-
查詢和分析結果中,a的值為
true,即數字1被成功轉換為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) -
查詢和分析結果返回一列
_col0,包含兩行資料,值均為owner-01。
typeof函數
typeof函數用於返回x的資料類型。
文法
typeof(x)
參數說明
|
參數 |
說明 |
|
x |
參數值可以為任意資料類型。 |
傳回值類型
varchar類型。
樣本
判斷request_time欄位值的資料類型。
-
查詢和分析語句
* |SELECT typeof(request_time) -
查詢和分析結果:查詢結果顯示
request_time欄位的資料類型為double。
附錄:資料類型映射關係
索引資料類型和SQL資料類型的對應關係如下表所示:
|
索引的資料類型 |
SQL的資料類型 |
|
long |
bigint |
|
text |
varchar |
|
double |
double |
|
json |
varchar |