本文介绍类型转换函数的基本语法及示例。
如果您在查询与分析数据时,需要区分更细维度的数据类型,您可以在查询与分析语句中使用类型转换函数转换数据的数据类型。
函数名称 | 语法 | 说明 |
cast 函数 | cast(x as type) | 转换x的数据类型。 使用 cast 函数转换数据类型时,如果某个值转换失败,将终止整个查询与分析操作。 |
try_cast 函数 | try_cast(x as type) | 转换x的数据类型。 使用 try_cast 函数转换数据类型时,如果某个值转换失败,该值返回 NULL,并跳过该值继续处理。 |
typeof 函数 | typeof(x) | 返回 x 的数据类型。 |
说明
日志中可能有脏数据时,建议使用 try_cast 函数,避免因脏数据造成整个查询与分析操作失败。
cast 函数
cast 函数用于转换 x 的数据类型。使用 cast 函数转换数据类型时,如果某个值转换失败,将终止整个查询与分析操作。
语法
cast(x as type)
参数说明
参数 | 说明 |
x | 参数值可以为任意类型。 |
type | SQL 数据类型,可选值为 bigint、varchar、double、boolean、timestamp、decimal、array 或 map。 |
说明:
type 为 timestamp 时,x 需为毫秒级时间戳或 ISO 8601格式的时间字符串,例如:1597807109000或2019-12-25T16:17:01+08:00。
将UNIX时间戳转为timestamp时,采用UTC+0时区,如需转换为其它时区可使用具备指定时区功能的函数(例如
from_unixtime(__TIMESTAMP__/1000, 'Asia/Shanghai')
)或手动添加时区偏移(例如 cast(__TIMESTAMP__+8*60*60*1000 as timestamp)
或cast(__TIMESTAMP__ as timestamp)+ INTERVAL 8 HOUR
)返回值类型
由您配置的 type 参数决定。
示例
1. 将数值0.01转换为 bigint 格式。
* | select cast(0.01 as bigint)
2. 将日志服务附带的日志采集时间
__TIMESTAMP__
转换为 TIMESTAMP 类型
* | select cast(__TIMESTAMP__ as timestamp)
try_cast 函数
try_cast 函数用于转换x的数据类型。使用 try_cast 函数转换数据类型时,如果某个值转换失败,该值返回 NULL,并跳过该值继续处理。
语法
try_cast(x as type)
参数说明
参数 | 说明 |
x | 参数值可以为任意类型。 |
type | SQL 数据类型,可选值为 bigint、varchar、double、boolean、timestamp、decimal、array 或 map。 |
返回值类型
由您配置的 type 参数决定。
示例
将 remote_user 字段值转换为 varchar 格式。
* | select try_cast(remote_user as varchar)
附录:数据类型映射关系
索引数据类型和 SQL 数据类型的对应关系如下表所示:
索引的数据类型 | SQL 的数据类型 |
long | bigint |
text | varchar |
double | double |
json | varchar |