如果您在查询与分析数据时需要区分更细维度的数据类型,您可以在查询与分析语句中使用类型转换函数转换数据的数据类型。
日志服务支持如下类型转换函数。
函数名称 | 语法 | 说明 | 支持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 |