文档

TRANS_COLS

更新时间:

将一行数据转为多行数据的UDTF,将不同的列拆分为不同的行。

使用限制

  • 所有作为key的列必须处在前面,而要转置的列必须放在后面。

  • 在一个select中只能有一个UDTF,不可以再出现其他的列。

命令格式

trans_cols (<num_keys>, <key1>,<key2>,…,<col1>, <col2>,<col3>) as (<idx>, <key1>,<key2>,…,<col1>, <col2>)

参数说明

  • num_keys:必填。BIGINT类型常量,值必须>=0。在转为多行时作为转置key的列的个数。

  • keys:必填。转置时作为key的列, 个数由num_keys指定。如果num_keys指定所有的列都作为key(即num_keys等于所有列的个数),则只返回一行。

  • idx:必填。转换后的行号。

  • cols:必填。 要转为行的列。

返回值说明

返回转置后的行,新的列名由as指定。输出的第一列是转置的下标,下标从1开始。作为key的列类型保持不变,其余所有的列与原来的数据类型一致。

使用示例

例如表t_table中的数据如下。

+----------+----------+------------+
| Login_id | Login_ip1 | Login_ip2 |
+----------+----------+------------+
| wangwangA | 192.168.0.1 | 192.168.0.2 |
+----------+----------+------------+
--执行SQL。
select trans_cols(1, login_id, login_ip1, login_ip2) as (idx, login_id, login_ip) from t_table;
--返回结果如下。
idx    login_id    login_ip
1    wangwangA    192.168.0.1
2    wangwangA    192.168.0.2

相关函数

TRANS_COLS函数属于其他函数,更多其他业务场景的函数请参见其他函数