MDX多级选择
我有 现在我想在省='BeiJing'和设施='test'时查找地理数据。我该怎么办? 我编写的MDX代码如下:MDX多级选择,mdx,Mdx,我有 现在我想在省='BeiJing'和设施='test'时查找地理数据。我该怎么办? 我编写的MDX代码如下: Geography Dimension -> Admin Hierarchy -> Province level -> District level -> Facility level. SELECT [Measures].[Internet Sales Amount] ON 0
Geography Dimension
-> Admin Hierarchy
-> Province level
-> District level
-> Facility level.
SELECT
[Measures].[Internet Sales Amount] ON 0
,
[Customer].[Customer Geography].[Country]
*
[Customer].[Customer Geography].[State-Province] ON 1
FROM [Adventure Works];
SELECT
[Measures].[Internet Sales Amount] ON 0
,
{[Country].[Country].[Australia]}
*
{[State-Province].[State-Province].[Queensland]} ON 1
FROM [Adventure Works];
但它不起作用。设置特殊省份和设施时,如何将所有省份/地区/设施数据作为表格获取 在
AdvWrks
中,以下内容引发错误
查询(4,5)客户地理层次结构被多次使用
在交叉连接函数中
当我尝试运行以下操作时,会引发此错误:
SELECT
{} ON 0,
{[Geography.Admin].[BeiJing].[All Geography.Admin].[test]} ON 1
FROM [EIDCube]
解决这一问题的方法是使用属性层次结构,[Customer Geography]
用户层次结构的级别由这些属性层次结构组成,如下所示:
Geography Dimension
-> Admin Hierarchy
-> Province level
-> District level
-> Facility level.
SELECT
[Measures].[Internet Sales Amount] ON 0
,
[Customer].[Customer Geography].[Country]
*
[Customer].[Customer Geography].[State-Province] ON 1
FROM [Adventure Works];
SELECT
[Measures].[Internet Sales Amount] ON 0
,
{[Country].[Country].[Australia]}
*
{[State-Province].[State-Province].[Queensland]} ON 1
FROM [Adventure Works];
现在,如果我想要澳大利亚
和昆士兰
我可以交叉加入两个单一成员集:
SELECT
[Measures].[Internet Sales Amount] ON 0
,
[Country].[Country]
*
[State-Province].[State-Province] ON 1
FROM [Adventure Works];
结果如下:
编辑 将上述内容应用到您的结构中,您应该能够做到以下几点:
Geography Dimension
-> Admin Hierarchy
-> Province level
-> District level
-> Facility level.
SELECT
[Measures].[Internet Sales Amount] ON 0
,
[Customer].[Customer Geography].[Country]
*
[Customer].[Customer Geography].[State-Province] ON 1
FROM [Adventure Works];
SELECT
[Measures].[Internet Sales Amount] ON 0
,
{[Country].[Country].[Australia]}
*
{[State-Province].[State-Province].[Queensland]} ON 1
FROM [Adventure Works];
我想你可以用这个:
SELECT
{[Measures].[someMeasureInCube]} ON 0
,
{[Province].[Province].[BeiJing]}
* {[Facility].[Facility].[test]} ON 1
FROM [EIDCube];
编辑1:我以前的答案是错误的
因此,现在我认为更好的解决方案是为仅由级别[Facility]组成的地理维度创建一个新的层次结构[admin2],并使用此查询
SELECT
{} ON 0,
([Geography].[Admin].[BeiJing],[Geography].[Admin].[Province].[District].[test]) ON 1
FROM [EIDCube]
假设您的层次结构是
SELECT
{} ON 0,
([Geography].[Admin].[BeiJing],[Geography].[Admin2].[Facility].[test]) ON 1
FROM [EIDCube]
这里是MDX的长途跋涉(短途跋涉是直接在查询中输入值,这出人意料地不起作用)
为结构提供的名称与查询中的名称不匹配!你说的是
Admin Hierarchy
,所以我希望有一个名为[Admin]
的层次结构,但在脚本中它说的是[Geography.Admin]
,而我希望看到的是[Geography].[Admin]
嗨,安吉拉。我们中有人以任何方式帮助过你吗?我们都花了时间试图提供帮助-你有时间反馈我们的答案吗?@polux2你刚刚尝试创建一个由来自同一层次结构的两个成员组成的元组-这怎么可能有效?@AngelaTian此技术有效-我使用AdvWrks
显示的脚本是一个经过充分测试的脚本-请适应您的环境。我不知道你的确切环境,因为你最初的问题没有给出足够的细节,所以我的最后一个脚本是部分猜测工作。请在您的初始问题中添加SSMS的屏幕打印,以便我们都能看到您的层次结构和级别的确切名称。