跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

表格函数

本文介绍与表格操作相关的函数。

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 |
+---+---+