如果您在查询与分析数据时需要区分更细维度的数据类型,您可以在查询与分析语句中使用类型转换函数转换数据的数据类型。
日志服务支持如下类型转换函数。
在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'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 |