场景
星瀚合并报表应用、费用预算或全面预算等应用使用到多维库,如在使用过程中由于星瀚版本或者误操作等原因,经业务组研发人员判断并确认需要手工删除维度或成员,可参考本文档进行相关操作。
一、删除维度
1. 操作风险说明
删除维度的原理如下:
A | B | C | FMONEY |
A1 | B1 | C1 | 3.14 |
A1 | B2 | C2 | 4.14 |
A1 | B1 | C3 | 5.14 |
当删除维度C后结果如下:
A | B | FMONEY |
A1 | B1 | 8.28 |
A1 | B2 | 4.14 |
可以看到删除维度C后,第一笔记录和第三笔记录的维度组合均是【A1,B1】,所以系统会将他们的度量值进行累加(3.14 + 5.14 = 8.24),并合成一笔记录。而第二笔记录在删除维度C后没有其他记录跟其维度组合一致【A1,B2】,所以保持原来的度量值数据(4.14)。
从上面的例子可看到,删除维度有累加数据的情况,可能会产生非期望的业务结果,请在操作前进行评估。
而如果维度C中只有一个成员有数据,则可避免相关风险,如果可以的话先进行删除成员操作,使其仅剩下一个有数据的成员。例如:
A | B | C | FMONEY |
A1 | B1 | C1 | 3.14 |
A1 | B2 | C1 | 4.14 |
A1 | B3 | C1 | 5.14 |
当删除维度C后结果如下:
A | B | FMONEY |
A1 | B1 | 3.14 |
A1 | B2 | 4.14 |
A1 | B3 | 5.14 |
可简单通过MDD界面查询确定是否只有一个成员有数据:
C1维度有两个成员C1None和a
通过查询确定了成员a没有数据,所以可以确定只有C1None有数据,可安全进行删除维度操作。
2. 操作流程
1. 备份需要操作的cube,备份文件请保管好!
2. 根据操作1产生的备份文件,还原一个测试cube(另起名字,例如TestForDeleteDimension)
3. 使用测试cube进行删除维度操作,操作方法及工具见三、 操作方法及工具,操作成功后在MDD界面进行简单查询验证,验证没问题的话则可以对正式cube进行操作。
二、删除成员
1. 操作风险说明
删除成员的原理如下:
A | B | C | FMONEY |
A1 | B1 | C1 | 3.14 |
A1 | B2 | C2 | 4.14 |
A1 | B1 | C3 | 5.14 |
当删除维度C的成员C1后结果如下:
A | B | C | FMONEY |
A1 | B2 | C2 | 4.14 |
A1 | B1 | C3 | 5.14 |
可以看到成员C1有数据的(第一笔记录),当删除成员C1后,会将这些数据也连同删除,可能会产生非期望的业务结果,请评估是否符合相关的业务情况。
2. 操作流程
1. 备份需要操作的cube,备份文件请保管好!
2. 根据操作1产生的备份文件,还原一个测试cube(另起名字,例如TestForDeleteMember)
3. 使用测试cube进行删除维度操作,操作方法及工具见三、 操作方法及工具,操作成功后在MDD界面进行简单查询验证,验证没问题的话则可以对正式cube进行操作。
三、 操作方法及工具
删除维度或成员是通过发送http请求到多维数据库服务器完成的,常见的发送http请求有以下两种方式:Postman 和 Linux系统curl命令,现对这两种方法进行说明。
Postman
可使用chrome的postman插件或者postman应用程序
URL(POST):http://localhost:8080/mdd/services/httpolap/updateMetadata
Headers:
cubeName: 需要进行操作的cube名称
Authorization: 通过下图的方式获取
Signature: 通过下图的方式获取
ClientVersion: 2.688
Content-Type: application/json
删除成员(需要替换? cubeName?,? dimensionName?,?memberName?)
{"type":"updateMetadata.v1","metadataType":"Member","action":"drop","ownerUniqueName":"?cubeName?.?dimensionName?","name":"?memberName?","properties":{"allowDropMemberWhenRowReferenced":"true"}}
删除维度(需要替换?cubeName?,?dimensionName?)
{"type":"updateMetadata.v1","metadataType":"Dimension","action":"drop","ownerUniqueName":"?cubeName?","name":"?dimensionName?"}
Linux系统curl命令
如果因各种原因无法安装postman,可以使用linux系统的curl命令进行执行,postman提供快速生成的工具,可以填写相关参数再生成对应的curl命令行:
或者更改下面的命令行:
curl -X POST -H "cubeName: testCube" -H "Authorization: OAuth YWRtaW46T2xhcEAyMDE4" -H "Signature: 8bce2352a3955f5dc4a1" -H "ClientVersion: 2.688" -H "Content-Type: application/json" -d '{"type":"updateMetadata.v1","metadataType":"Dimension","action":"drop","ownerUniqueName":"?cubeName?","name":"?dimensionName?"}' "http://localhost:8080/mdd/services/httpolap/updateMetadata"
Postman_v4.1.3.zip(5.88MB)
推荐阅读