我经常与基于OLAP的大量数据透视表进行交互。通常这些或多或少没有记录。因此,他们很难真正包围并有效地使用。
我了解正在呈现的数据的一种策略是鼠标悬停在数据透视表字段列表中的字段,然后按向下箭头以查看选项中值的不同列表。见下图。
我想“哇,也许我可以写一些VBA为我做这个,我可以在立方体中生成一个唯一值列表,这样我就可以快速扫描/搜索我要找的东西。”
现在,我在VBA方面相当擅长,但我似乎无法得到它。我猜我不需要的方法。但是,我以为我会在这里试试。
首次尝试:
Sub list_cube_fields()
Set objNewSheet = Worksheets.Add
objNewSheet.Activate
intRow = 1
For Each objCubeFld In Worksheets("Sheet1").PivotTables(1).CubeFields
objNewSheet.Cells(intRow, 1).Value = objCubeFld.Name
intRow = intRow + 1
Next objCubeFld
End Sub
这会生成一个包含所有可用数据透视表字段的列表(实际上可能很有用!),但似乎没有办法获取{{1}的子/ /叶子/后代}
接下来我尝试了:
Cubefield
这会获取我在数据透视表中使用的所有唯一值的列表,但是甚至不会触及未使用的字段。同样,这可能会有所帮助,但它并不存在。
我真正需要的是每一个都适合我的想法,我不认为这些方法存在。我确实理解我所要求的可能是计算上昂贵且可能非常慢并且我没有使用正确的工具来完成手头的任务。 “OLAP尊重[应用程序]权限,而给予[我]直接SQL访问不会”是我的IT部门的借口。
无论如何,如果你有任何想法,我会全力以赴。
谢谢! 汤姆
答案 0 :(得分:1)
我将使用允许编写普通MDX请求的客户端工具直接连接到OLAP服务器:您仍然满足IT人员的安全要求; - )
在MDX中,很容易获得任何层次结构中的成员列表并过滤它们。如果使用SSAS,每个层次结构甚至可以作为多维数据集使用(名称中包含$),但这不是必需的。
如果没有可用的工具,那么你可以在Excel中编写普通的MDX请求 - 我猜的交互性较少但是应该可以使用数据透视表来首先识别层次结构;我不是Excel的专家,但这里有解释如何:
的链接https://msolap.wordpress.com/2008/10/07/returning-mdx-query-results-in-an-excel-matrix-formula/
http://cwebbbi.wordpress.com/2009/12/18/binding-an-excel-table-to-the-results-of-an-mdx-query/