MDX:Sum,忽略名称重复的成员
我试图求一个类别及其子类别中所有产品的销售额之和,只需将具有相同产品维度键的产品的销售额相加一次 每个类别可以有任意数量的子类别,每个子类别可以有自己的任意数量的子类别,最多五个级别的子类别。子类别的数量可能有所不同。MDX:Sum,忽略名称重复的成员,mdx,iccube,iccube-reporting,Mdx,Iccube,Iccube Reporting,我试图求一个类别及其子类别中所有产品的销售额之和,只需将具有相同产品维度键的产品的销售额相加一次 每个类别可以有任意数量的子类别,每个子类别可以有自己的任意数量的子类别,最多五个级别的子类别。子类别的数量可能有所不同。 因此category\u维度中的category\u层次结构具有以下级别: main\u category,sub\u category\u 1,sub\u category\u 2,…,sub\u category\u 5 可能是这样的: id main_category
因此
category\u维度
中的category\u层次结构
具有以下级别:
main\u category
,sub\u category\u 1
,sub\u category\u 2
,…,sub\u category\u 5
可能是这样的:
id main_category sub_category_1 sub_category_2 sub_category_3 ...
1 Electronics
2 Electronics Camera & Photo
3 Electronics Camera & Photo Accessories
4 Electronics Camera & Photo Digital Cameras
5 Electronics Camera & Photo Film Photography Film Cameras
6 Electronics Camera & Photo Film Photography Film
7 Electronics Headphones
8 Home & Kitchen
...
在事实表中,每天每个类别的每个产品都有销售编号,每个产品可以属于多个类别(如果一个产品属于多个类别,则在每个类别中都有相同的销售编号),例如:
如果我现在运行一个简单的MDX查询来显示每个类别的销售数量,那么如果产品属于多个类别,它会将销售数量相加多次:
SELECT
{[DATE_DIMENSION].[DATE_HIERARCHY].ALLMEMBERS} ON COLUMNS
,NON EMPTY
{[CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].ALLMEMBERS}
*
{[PRODUCT_DIMENSION].[PRODUCT_HIERARCHY].ALLMEMBERS} ON ROWS
FROM [Cube]
WHERE [MEASURES].[SALES];
返回
2016-06-30 2016-06-29 ...
CATEGORY PRODUCT_ID SALES SALES
All Categories All Products 22 ...
1 12
2 10
Electronics All Products 22
1 12
2 10
Camera & Photo All Products 18
1 8
2 10
Digital Cameras All Products 5
2 5
Film Photography All Products 4
1 4
Film All Products 4
1 4
我希望在2016年6月30日,产品1的销售额为4,产品2的销售额为5(但仍然能够按周/月/年汇总销售额):
这还没有完成或测试-这只是最初的想法:一旦我有权访问它,我需要针对AdvWrks进行测试 调整所有成员以满足您的需求是相当复杂的
WITH
SET [All_tuples] AS
ORDER(
{[CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[CATEGORY_HIERARCHY].MEMBERS}
* {[PRODUCT_DIMENSION].[PRODUCT_HIERARCHY].MEMBERS}
, [PRODUCT_DIMENSION].CURRENTMEMBER.MEMBER_CAPTION
, BDESC
)
SET [NoDupes] AS
FILTER(
[All_tuples] AS X,
X.CURRENT.ITEM(1) NOT IS X.CURRENT.LAG(1).ITEM(1)
)
MEMBER [CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[All].[Category I NEW] AS
AGGREGATE(
[NoDupes]
)
SELECT
{[Measures].[Sales]} ON COLUMNS
,NON EMPTY
[CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[All].[Category I NEW] ON ROWS
FROM [Cube];
这还没有完成或测试-这只是最初的想法:一旦我有权访问它,我需要针对AdvWrks进行测试 调整所有成员以满足您的需求是相当复杂的
WITH
SET [All_tuples] AS
ORDER(
{[CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[CATEGORY_HIERARCHY].MEMBERS}
* {[PRODUCT_DIMENSION].[PRODUCT_HIERARCHY].MEMBERS}
, [PRODUCT_DIMENSION].CURRENTMEMBER.MEMBER_CAPTION
, BDESC
)
SET [NoDupes] AS
FILTER(
[All_tuples] AS X,
X.CURRENT.ITEM(1) NOT IS X.CURRENT.LAG(1).ITEM(1)
)
MEMBER [CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[All].[Category I NEW] AS
AGGREGATE(
[NoDupes]
)
SELECT
{[Measures].[Sales]} ON COLUMNS
,NON EMPTY
[CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[All].[Category I NEW] ON ROWS
FROM [Cube];
如果(产品A/子类别1)的销售额=5和(产品A/子类别2)=3怎么办?如果(产品A/子类别1)的销售额始终=(产品A/子类别2)编辑了问题以澄清类别结构。如果(产品A/子类别1)的销售额=5和(产品A/子类别2)=3怎么办?如果(产品A/子类别1)的销售额始终=(产品a/子类别2)编辑了问题以澄清类别结构。这将返回语法错误。另外,添加新的主类别成员也不会有帮助,因为a)主类别的数量不是固定的,可能会随时间而变化;b)问题可能已经在子类别级别发生。我扩展了我原来的问题以澄清类别结构。这返回了一个语法错误。另外,添加一个新的主类别成员也不会有帮助,因为a)主类别的数量不是固定的,可能会随时间而变化;b)问题可能已经在子类别级别发生。我扩展了我原来的问题,以澄清类别结构。
WITH
SET [All_tuples] AS
ORDER(
{[CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[CATEGORY_HIERARCHY].MEMBERS}
* {[PRODUCT_DIMENSION].[PRODUCT_HIERARCHY].MEMBERS}
, [PRODUCT_DIMENSION].CURRENTMEMBER.MEMBER_CAPTION
, BDESC
)
SET [NoDupes] AS
FILTER(
[All_tuples] AS X,
X.CURRENT.ITEM(1) NOT IS X.CURRENT.LAG(1).ITEM(1)
)
MEMBER [CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[All].[Category I NEW] AS
AGGREGATE(
[NoDupes]
)
SELECT
{[Measures].[Sales]} ON COLUMNS
,NON EMPTY
[CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[All].[Category I NEW] ON ROWS
FROM [Cube];