有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
本文介绍类型转换函数的基本语法及示例。
如果您在查询与分析数据时,需要区分更细维度的数据类型,您可以在查询与分析语句中使用类型转换函数转换数据的数据类型。
函数名称
语法
说明
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。
索引数据类型和 SQL 数据类型的映射关系,请参见 附录:数据类型映射关系
说明:
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。
索引数据类型和 SQL 数据类型的映射关系,请参见 附录:数据类型映射关系

返回值类型

由您配置的 type 参数决定。

示例

remote_user 字段值转换为 varchar 格式。
* | select try_cast(remote_user as varchar)

附录:数据类型映射关系

索引数据类型和 SQL 数据类型的对应关系如下表所示:
索引的数据类型
SQL 的数据类型
long
bigint
text
varchar
double
double
json
varchar