跳到主要内容

typeof:获取数据类型

速查结论

typeof(expr) 是 Spark SQL 中用于获取表达式数据类型的 DDL 格式字符串的函数。返回如 intstringarray<int> 等类型名称,非常适合数据探查和调试。

语法

typeof(expr)

参数说明

参数说明
expr任意表达式

返回值:输入表达式数据类型的 DDL 格式字符串。

Since: 3.0.0

示例

基础类型

-- 基本类型
SELECT typeof(1);
-- 结果: int

SELECT typeof(1.5);
-- 结果: decimal(2,1)

SELECT typeof('hello');
-- 结果: string

复杂类型

-- 数组类型
SELECT typeof(array(1));
-- 结果: array<int>

-- Map 类型
SELECT typeof(map('a', 1));
-- 结果: map<string,int>

-- Struct 类型
SELECT typeof(named_struct('name', 'Alice', 'age', 30));
-- 结果: struct<name:string,age:int>

数据探查

-- 探查表中各列的数据类型
SELECT
typeof(col1) AS col1_type,
typeof(col2) AS col2_type
FROM t
LIMIT 1;

常见报错与避坑指南

typeof 不返回 SQL 标准类型名

typeof 返回 DDL 格式的类型名(如 int 而非 INTEGER),与 DESCRIBE 命令的输出格式一致。

SELECT typeof(CAST(1 AS INTEGER));
-- 结果: int(DDL 格式,不是 INTEGER)
📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看