我正在使用大型OLAP多维数据集,我正在构建非常基本的搜索功能,以帮助我解析数据量(~30个事实表,30个维度,加上计算的度量),但我来了跨越一个有趣的问题。当我访问事实表成员或计算度量的CubeField.Name
属性时,它会以[Measures].[FieldName]
的形式出现,而不是指向正确的事实表/计算度量文件夹。
这是我正在使用的代码:
Sub X()
Dim pvtTable As PivotTable
Dim oCubeField As CubeField
Set pvtTable = ActiveSheet.PivotTables(1)
For Each oCubeField In pvtTable.CubeFields
If InStr(LCase(oCubeField.Name), "spread") > 0 Then
Debug.Print oCubeField.Parent & ": " & oCubeField.Name
End If
Next
End Sub
关于如何实际获取事实表名称的任何想法?或计算出的度量的文件夹结构?谢谢!
答案 0 :(得分:0)
也许尝试oCubeField.Value
。 CubeField对象的reference表示:
名称返回表示对象名称的String值。
值返回表示指定字段名称的String值。
答案 1 :(得分:0)
不幸的是,您不能这样做,因为度量表达式可能链接到一些事实表。
但是您可以使用OpenSchema()函数查询和分析多维数据集元数据。
类似这样的东西:
Sub GetMeasuresList()
Const adSchemaMeasures = 36
Set ADOCon = ActiveCell.PivotTable.PivotCache.ADOConnection
Set RecSet = ADOCon.OpenSchema(adSchemaMeasures)
While Not RecSet.EOF
Debug.Print RecSet!MEASURE_NAME & ": " & RecSet!EXPRESSION
RecSet.MoveNext
Wend
End Sub