setColumnarTuple!
语法
setColumnarTuple!(X, [on=true])
详情
将 tuple 原地标记为 columnar tuple,或取消 columnar tuple 标记。
columnar tuple 仍然是由标量或向量组成的 ANY 类型元组,但系统会按照类似数组向量的列式规则解释它:tuple 中的每个元素对应表列中的一行值;当元素为向量时,该行保存一个数组。普通 tuple 则按元组规则解释,作为表列时每一行是一个完整的 ANY 类型元素。
例如,对包含向量元素的表列调用 ungroup 时,普通 tuple
列不会被展开;转换为 columnar tuple 后,ungroup 会将每行中的向量元素展开。
参数
X 由相同数据类型的向量或标量组成的 tuple。
on 可选参数,布尔值,表示是否将 X 标记为 columnar tuple。默认值为 true。
-
当 on = true 时,将普通 tuple 转换为 columnar tuple。
-
当 on = false 时,取消 columnar tuple 标记,将其转换为普通 tuple。
返回值
返回修改后的 X。
-
当 on = true 时,返回 columnar tuple。
-
当 on = false 时,返回普通 tuple。
例子
将普通 tuple 转换为 columnar tuple。
tp = [[1,2,3], [4,5,6], [7,8]]
isColumnarTuple(tp)
// output: false
tp.setColumnarTuple!()
isColumnarTuple(tp)
// output: true
普通 tuple 作为表列时,每一行是一个 ANY 类型元素,ungroup 不会展开其中的向量。
t = table([1,2] as id, ([10,11], 12) as v)
ungroup(t)
| id | v |
|---|---|
| 1 | [10,11] |
| 2 | 12 |
将普通 tuple 转换为 columnar tuple 后,ungroup 会按照数组向量的规则展开 v 列。
t = table([1,2] as id, ([10,11], 12).setColumnarTuple!() as v)
ungroup(t)
| id | v |
|---|---|
| 1 | 10 |
| 1 | 11 |
| 2 | 12 |
取消 columnar tuple 标记。
v = ([10,11], 12).setColumnarTuple!()
isColumnarTuple(v)
// output: true
v.setColumnarTuple!(false)
isColumnarTuple(v)
// output: false
