如何从给定的 MDX 查询中获取多维数据集名称

How to get a cube name from the given MDX query

如何从给定的 MDX 查询中获取 cube name

例如:我有如下查询,

SELECT [Date].[Calendar Year].MEMBERS on 0 , TOPCOUNT( [Product].[Product].MEMBERS , 10 , [Measures].[Sales Amount] ) ON 1 FROM [Adventure Works]

如何从上述查询中获取 cube name Adventure Works

您需要解析 MDX。您的解析器需要多复杂取决于您可以投入的努力、您对潜在错误的容忍度,还可能取决于您构建解析器的经验。

只是提纲:

您应该搜索关键字 FROM。在 MDX 语法中,这只能后跟多维数据集名称或子选择。子选择可以通过括号后跟关键字 SELECT 来识别。 并且可以识别关键字,因为它们不包含在注释、字符串或方括号中。

由于子选择应该正确嵌套,我认为您甚至可以只搜索最后一个关键字 FROM。这应该始终跟在方括号中或作为有效标识符的多维数据集名称之后。