typeof:获取数据类型
速查结论
typeof(expr) 是 Spark SQL 中用于获取表达式数据类型的 DDL 格式字符串的函数。返回如 int、string、array<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真题
