多维数据库删除维度或成员说明文档原创
金蝶云社区-多维数据库
多维数据库
2人赞赏了该文章 1,082次浏览 未经作者许可,禁止转载编辑于2023年03月20日 17:22:25


场景

       星瀚合并报表应用、费用预算或全面预算等应用使用到多维库,如在使用过程中由于星瀚版本或者误操作等原因,经业务组研发人员判断并确认需要手工删除维度或成员,可参考本文档进行相关操作。

一、删除维度

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

1.png

       通过查询确定了成员a没有数据,所以可以确定只有C1None有数据,可安全进行删除维度操作。

2.png

2. 操作流程

1. 备份需要操作的cube,备份文件请保管好!

3.png

2. 根据操作1产生的备份文件,还原一个测试cube(另起名字,例如TestForDeleteDimension)

4.png

5.png

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,备份文件请保管好!

3.png

2. 根据操作1产生的备份文件,还原一个测试cube(另起名字,例如TestForDeleteMember)

4.png

5.png

3. 使用测试cube进行删除维度操作,操作方法及工具见三、 操作方法及工具,操作成功后在MDD界面进行简单查询验证,验证没问题的话则可以对正式cube进行操作。

三、 操作方法及工具

       删除维度或成员是通过发送http请求到多维数据库服务器完成的,常见的发送http请求有以下两种方式:Postman 和 Linux系统curl命令,现对这两种方法进行说明。

Postman

可使用chrome的postman插件或者postman应用程序

image.png

URL(POST):http://localhost:8080/mdd/services/httpolap/updateMetadata

Headers:

    cubeName: 需要进行操作的cube名称

    Authorization: 通过下图的方式获取

    Signature: 通过下图的方式获取

    ClientVersion: 2.688

    Content-Type: application/json

7.png

 8.png

删除成员(需要替换? 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?"}

9.png


Linux系统curl命令

       如果因各种原因无法安装postman,可以使用linux系统的curl命令进行执行,postman提供快速生成的工具,可以填写相关参数再生成对应的curl命令行:

10.png

      或者更改下面的命令行:

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"


赞 2