7 个回答
保留第一行
通过指定 `merge-engine` = `first-row`,可以保留相同主键的第一条记录。这与去重合并引擎不同,因为在 `first-row` 合并引擎中,它将生成仅插入的变更日志。
通过指定 `merge-engine` = `first-row`,可以保留相同主键的第一条记录。这与去重合并引擎不同,因为在 `first-row` 合并引擎中,它将生成仅插入的变更日志。
1、不能指定 `sequence.field`。
2、不接受 `DELETE` 和 `UPDATE_BEFORE` 消息。可以通过配置 `ignore-delete` 来忽略这两种记录。
3、可见性保证:使用 `First Row` 引擎的表,最新的文件只有在合并后才会可见。因此,默认情况下,合并且是同步的,如果开启异步合并,可能会导致数据延迟。
发布于:4个月前 (12-20) IP属地:四川省
聚合更新
有时我们只关心聚合结果。聚合合并引擎根据聚合函数逐个聚合相同主键下的每个值字段。
每个非主键字段都可以指定一个聚合函数,通过 fields..aggregate-function 表属性来指定,否则将默认使用 last_non_null_value 聚合。
使用示例如下:CREATE TABLE my_table (
product_id BIGINT,
price DOUBLE,
sales BIGINT,
PRIMARY KEY (product_id) NOT ENFORCED
)
WITH
(
'merge-engine' = 'aggregation',
'fields.price.aggregate-function' = 'max',
'fields.sales.aggregate-function' = 'sum'
);
发布于:4个月前 (12-20) IP属地:四川省
部分更新
通过指定 `merge-engine` = `partial-update`,可以逐步更新记录的列。这是通过逐个更新值字段来实现的。需要注意的是,空值在这一过程中不会去覆盖非空的值。
对于流查询,部分更新合并引擎必须与查找(lookup)或全量合并变更日志生成器(full-compaction changelog producer)一起使用。(`input` 变更日志生成器也支持,但仅返回输入记录。)
默认情况下,部分更新不能删除记录,可以选择以下解决方案之一:1、配置 `ignore-delete` 以忽略删除记录。
2、配置 `partial-update.remove-record-on-delete` 以在接收到删除记录时删除整行。
3、配置 `sequence-group` 以撤回部分列。
发布于:4个月前 (12-20) IP属地:四川省
聚合部分更新的使用说明:
可以为输入字段指定聚合函数,所有聚合函数都支持。示例sql如下:
可以为输入字段指定聚合函数,所有聚合函数都支持。示例sql如下:
CREATE TABLE t (
k INT,
a INT,
b INT,
c INT,
d INT,
PRIMARY KEY (k) NOT ENFORCED
)
WITH
(
'merge-engine' = 'partial-update',
'fields.a.sequence-group' = 'b',
'fields.b.aggregate-function' = 'first_value',
'fields.c.sequence-group' = 'd',
'fields.d.aggregate-function' = 'sum'
);
发布于:4个月前 (12-20) IP属地:四川省
序列组的聚合列更新使用说明:
一个序列字段无法解决多流更新中部分更新表的无序问题,因为在多流更新过程中,序列字段可能会被另一流的最新数据覆盖。因此,我们为部分更新表引入了序列组机制。它可以解决以下问题:
一个序列字段无法解决多流更新中部分更新表的无序问题,因为在多流更新过程中,序列字段可能会被另一流的最新数据覆盖。因此,我们为部分更新表引入了序列组机制。它可以解决以下问题:
1、多流更新中的无序问题。每个流定义自己的序列组。
2、真正的部分更新,而不仅仅是非空更新。
示例sql如下:CREATE TABLE t (
k INT,
a INT,
b INT,
c INT,
d INT,
PRIMARY KEY (k) NOT ENFORCED
)
WITH
(
'merge-engine' = 'partial-update',
'fields.g_1.sequence-group' = 'a,b',
'fields.g_2.sequence-group' = 'c,d'
);
发布于:4个月前 (12-20) IP属地:四川省
去重
去重合并引擎是默认的合并引擎。Paimon只会保留最新的记录,并丢弃其他具有相同主键的记录。
具体来说,如果最新的记录是DELETE记录,那么所有具有相同主键的记录都将被删除。可以通过配置 `ignore-delete` 来忽略这一行为。
发布于:4个月前 (12-20) IP属地:四川省
我来回答
您需要 登录 后回答此问题!