关于StarRocks --- REPLACE_IF_NOT_NULL场景

关于REPLACE_IF_NOT_NULL

这个聚合类型的含义是当且仅当新导入数据是非NULL值时会发生替换行为, 如果新导入的数据是NULL,那么StarRocks仍然会保留原值。 注意:如果用在建表时REPLACE_IF_NOT_NULL列指定了NOT NULL,那么StarRocks仍然会将其转化NULL,不会向用户报错。

建表示例:

create table t1_not_null (
inc_date datetime,
uid int,
v1 string  REPLACE_IF_NOT_NULL ,
v2 string  REPLACE_IF_NOT_NULL ,
v3 int  REPLACE_IF_NOT_NULL )
AGGREGATE KEY(`inc_date`, `uid`)
DISTRIBUTED BY HASH(`uid`) BUCKETS 3
;

测试数据,插入1条

insert into t1_not_null values
('2021-06-22', 101, '101-v1', '101-v2', 1);

结果查询

mysql> select * from t1_not_null;
+---------------------+------+--------+--------+------+
| inc_date            | uid  | v1     | v2     | v3   |
+---------------------+------+--------+--------+------+
| 2021-06-22 00:00:00 |  101 | 101-v1 | 101-v2 |    1 |
+---------------------+------+--------+--------+------+
1 row in set (0.00 sec)

插入第2条

insert into t1_not_null values ('2021-06-22', 101, null, '101-v2-test-replace', 2);

结果查询
v1不变,v2,v3被更新

mysql> select * from t1_not_null;
+---------------------+------+--------+---------------------+------+
| inc_date            | uid  | v1     | v2                  | v3   |
+---------------------+------+--------+---------------------+------+
| 2021-06-22 00:00:00 |  101 | 101-v1 | 101-v2-test-replace |    2 |
+---------------------+------+--------+---------------------+------+
1 row in set (0.01 sec)

插入第3条

  • 新的key
insert into t1_not_null values
('2021-06-22', 102, '102-v1', '102-v2', null);
mysql> select * from t1_not_null;
+---------------------+------+--------+---------------------+------+
| inc_date            | uid  | v1     | v2                  | v3   |
+---------------------+------+--------+---------------------+------+
| 2021-06-22 00:00:00 |  101 | 101-v1 | 101-v2-test-replace |    2 |
| 2021-06-22 00:00:00 |  102 | 102-v1 | 102-v2              | NULL |
+---------------------+------+--------+---------------------+------+
2 rows in set (0.01 sec)
当你在使用 NODE_OPTIONS 环境变量时,出现"--openssl-legacy-provider is not allowed in NODE_OPTIONS"的错误提示,这是因为当前版本的 Node.js 不允许在 NODE_OPTIONS 中使用 --openssl-legacy-provider 选项。 要解决这个问题,你可以尝试以下方法: 1. 清空 NODE_OPTIONS 环境变量:运行命令"export NODE_OPTIONS=",或者在 Windows 系统中运行"set NODE_OPTIONS=",这样可以清空 NODE_OPTIONS 环境变量,避免 --openssl-legacy-provider 选项的影响。 2. 去掉 --openssl-legacy-provider 选项:如果你需要保留 NODE_OPTIONS 环境变量中的其他选项,可以尝试去掉 --openssl-legacy-provider 选项。你可以在命令行中运行 node,然后在控制台中输入"process.env.NODE_OPTIONS = process.env.NODE_OPTIONS.replace('--openssl-legacy-provider', '')",然后回车,即可去掉该选项。 请根据你的具体需求选择适合的方法来解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [windows报错node: --openssl-legacy-provider is not allowed in NODE_OPTIONS解决](https://blog.csdn.net/zhu_liu_kun/article/details/130840151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值