全部產品
Search
文件中心

MaxCompute:TRANS_COLS

更新時間:Feb 28, 2024

將一行資料轉為多行資料的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函數屬於其他函數,更多其他業務情境的函數請參見其他函數