我有
Geography Dimension
-> Admin Hierarchy
-> Province level
-> District level
-> Facility level.
现在我想查找省='北京'和设施='测试'。我应该怎么做 ? 我写这样的MDX代码:
SELECT
{} ON 0,
{[Geography.Admin].[BeiJing].[All Geography.Admin].[test]} ON 1
FROM [EIDCube]
但它没有用。当我设置特殊省份和设施时,如何将所有省/区/设施数据作为表格?
答案 0 :(得分:0)
在AdvWrks
中,以下内容会引发错误
查询(4,5)客户地理层次结构不止一次使用 在Crossjoin函数中。
当我尝试运行以下内容时抛出此内容:
SELECT
[Measures].[Internet Sales Amount] ON 0
,
[Customer].[Customer Geography].[Country]
*
[Customer].[Customer Geography].[State-Province] ON 1
FROM [Adventure Works];
解决这个问题的方法是使用[Customer Geography]
用户层次结构的级别构成的属性层次结构,如下所示:
SELECT
[Measures].[Internet Sales Amount] ON 0
,
[Country].[Country]
*
[State-Province].[State-Province] ON 1
FROM [Adventure Works];
现在,如果我想要Australia
和Queensland
,我可以交叉加入几个单一成员集:
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 :(得分:0)
假设你的等级结构是
Geography-->Geography.Admin-->Province-->District-->Facility
(dimension) (hierarchy) (level 1) (level 2) (level 3)
这是MDX要做的很长的事情(直接在查询中提供值的简短方法,这出乎意料地不起作用)
select [Geography].[Geography.Admin].CHILDREN
having
[Geography].[Geography.Admin].currentmember.member_caption = "test" and
ancestors([Geography].[Geography.Admin].currentmember, 3).item(0).member_caption = "BeiJing"
on 1,
{} on 0
from EIDCube]
答案 2 :(得分:-1)
我认为你可以使用它:
SELECT
{} ON 0,
([Geography].[Admin].[BeiJing],[Geography].[Admin].[Province].[District].[test]) ON 1
FROM [EIDCube]
编辑1:我之前的回答是错误的。
所以现在我认为更好的解决方案是为仅由级别 [Facility] 组成的地理维度创建新的层次结构 [admin2] 并使用此查询。
SELECT
{} ON 0,
([Geography].[Admin].[BeiJing],[Geography].[Admin2].[Facility].[test]) ON 1
FROM [EIDCube]