我有一张hive 表基于hive catalog基表创建物化视图,基表数据修改信息,businessflow (该表用sr的catalog管理进来),希望借助与sr的物化视图,每当hive表数据变化时候,就自动计算以下逻辑
Querysql=
SELECT B1.BRANCH_NAME, B1.NAME, B1.MOBILE,B1.CREATE_DATE,B1.CREATE_TIME,B1.OPERATION_STEP,tradingday ,
CASE
WHEN B1.OPERATION_STEP = ‘完善资料信息’ THEN ‘nocard’
WHEN B1.OPERATION_STEP IN (‘阅读协议’,‘接受视频验证’) THEN ‘novideo’
ELSE ‘others’
END AS CALL_TYPE
FROM hive_catalog.ztqh.businessflow B1
WHERE EXISTS(
SELECT 1
FROM
(SELECT B.ACCEPTANCE_NUMBER AS ANT,
MAX(CONCAT(B.CREATE_DATE ,LPAD(B.CREATE_TIME,6,‘0’))) LASTBF
FROM hive_catalog.ztqh.businessflow B --ztqh.businessflow
WHERE B.BUSINESS_TYPE = ‘开立期货账户’
GROUP BY B.ACCEPTANCE_NUMBER) T
WHERE T.ANT = B1.ACCEPTANCE_NUMBER
AND T.LASTBF = CONCAT(B1.CREATE_DATE ,LPAD(B1.CREATE_TIME,6,‘0’)))
–AND B1.OPERATION_STEP NOT IN (‘复核通过’, ‘办结成功’, ‘提交申请’, ‘放弃业务’)
AND (trim(B1.BRANCH_NAME)!=’’
OR (trim(B1.BRANCH_NAME)=’’
and
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 3 DAY), ‘%Y%m%d’) >= create_date
)
)
group by 1,2,3,4,5,6,7;
第一步创建物化视图
CREATE MATERIALIZED VIEW rtdata_sr.aicall_exception
refresh ASYNC EVERY (interval 3 minute)
as
Querysql
第二步 ,向hive表 businessflow 的分区 20240716 分区中插入数据,此时发现物化视图中已经有数据了。
第三步,修改一行数据,再次向hive表businessflow 的分区 20240716 覆盖插入数据,等待3分钟后,使用 SHOW MATERIALIZED VIEWS LIKE ‘aicall_exception’;
查看视图已经刷新完毕,并且成功了,但是查询物化视图,发现并不是新的数据。
手动执行物化视图的select部分的Querysql, 数据是最新数据。
此时怀疑是异步刷新不好使,执行手动刷新
REFRESH MATERIALIZED VIEW rtdata_sr.aicall_exception; 发现数据依旧没有更新。
后来又尝试了在手动刷新之前,刷新catalog,执行以下语句,
refresh external table hive_catalog.ztqh.businessflow;
sr的物化视图数据还是老的数据。
【是否存算分离】 否
【StarRocks版本】3.1.13
【集群规模】3fe+3be独立部署
【机器信息】16C,64G内存
【联系方式】社区14-良民 , 186OO668587