表格函数¶
本文介绍与表格操作相关的函数。
table_split()¶
将一个表格拆分为多个子表格,并返回包含这些子表格的列表。该函数适用于大数据集的并行处理或批量操作。
NULL 行为:默认
函数签名¶
table_split(t: TABLE) -> LIST
或
table_split(t: TABLE, size: UINT64) -> LIST
t:待拆分表格的变量。size:计算结果为每个子表格最大行数(最后一个子表格的行数可能较少)的值表达式。如果未指定,系统将根据内存分布自动确定拆分边界。size必须为正整数。
示例¶
拆分表格并统计总行数¶
'''
TABLE result_table TYPED TABLE {i INT, j INT}
FOR i IN range(1, 100)
FOR j IN range(1, 100)
EXPORT i, j INTO result_table
FOR t IN table_split(result_table)
RETURN sum(size(t))
'''
返回:
+--------------+
| sum(size(t)) |
+--------------+
| 10000 |
+--------------+
按指定大小拆分表格¶
'''
TABLE result_table TYPED TABLE {i INT, j INT}
FOR i IN range(1, 5)
FOR j IN range(1, 5)
EXPORT i, j INTO result_table
FOR t IN table_split(result_table, cast(10 as UINT))
RETURN size(t)
'''
返回:
+---------+
| size(t) |
+---------+
| 10 |
| 10 |
| 5 |
+---------+
该表格共有 25 行(5 * 5),被拆分为三个子表格:前两个各 10 行,最后一个 5 行。
遍历子表格中的行¶
'''
TABLE result_table TYPED TABLE {i INT, j INT}
FOR i IN range(1, 3)
FOR j IN range(1, 3)
EXPORT i, j INTO result_table
FOR t IN table_split(result_table)
FOR r IN t
RETURN r.i as i, r.j as j
'''
返回:
+---+---+
| i | j |
+---+---+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 3 | 1 |
| 3 | 2 |
| 3 | 3 |
+---+---+