SSAS如何处理维度且不影响已发布多维数据集可用性?
根因说明
你碰到的是SSAS共享维度处理的默认机制问题:只要单独对共享维度执行ProcessFull或者ProcessData,SSAS会自动把所有关联这个维度的Cube分区标记为未处理状态,这时候Excel、PowerBI发起查询就会直接报对象未就绪的错误,和你后续补不补Cube处理没关系,中间必然存在不可用窗口。
你之前直接处理Cube不用ProcessData模式能保持可用,本质是因为Cube级别的非数据类处理不会触发已上线版本的元数据下线,全程走的是后台新版本构建、构建完原子切换的逻辑。
零停机处理DimDate维度的实操方案
- 日常维度增量更新场景,直接把维度处理模式换成
ProcessUpdate,不要用ProcessFull/ProcessData。这个模式会在后台增量同步维度成员变更,处理全程旧版维度数据对外正常提供查询服务,更新完成后原子切换到新版本,用户侧完全无感知。处理时把维度事务隔离级别设为Serializable即可,DimDate这种日期维度日常新增日期数据量极小,处理耗时基本在秒级,完全不会影响业务访问。 - 如果你改了DimDate的结构(比如调整层级、新增属性、改了维度键规则)必须全量重刷维度,不要单独执行维度处理任务,直接走Cube级别的处理流程:选择
ProcessDefault处理模式,勾选「自动处理受影响对象」,把事务配置改成「为每个处理对象单独启动事务」。这种模式下SSAS会先在后台构建新版本的DimDate维度,再逐个滚动更新关联的Cube分区,整个过程中已上线的旧版Cube和维度全程对外服务,所有对象更新完成后才会原子切换元数据,不会出现访问报错的情况。 - 生产环境红线:绝对不要单独对任何共享维度执行
ProcessFull/ProcessData操作,只要跑了就必然触发关联Cube的不可用窗口,没有例外。
实操小提示:DimDate这类相对静态的维度,建议用视图做数据源层,平时新增日期数据用
ProcessUpdate增量同步即可,除非调整维度结构否则根本不需要全量处理,稳定性会高很多。
内容的提问来源于stack exchange,提问作者fdkgfosfskjdlsjdlkfsf
相关产品推荐
相关产品推荐

