Я пытаюсь суммировать сумму продаж всех продуктов в категории и ее подкатегориях, добавляя количество продаж для продуктов с одним и тем же ключом размера продукта только один раз.MDX: Sum, игнорируя членов с дублирующимся именем
Каждая категория может иметь любое количество подкатегорий, и каждая подкатегория может иметь любое количество подкатегорий, до пяти уровней подкатегорий. Количество подкатегорий может меняться.
Так category_hierarchy
в category_dimension
имеет эти уровни:
main_category
, sub_category_1
, sub_category_2
, ..., sub_category_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
...
В таблице фактов есть номера продаж для каждого продукта на каждую категорию в день, и каждый продукт может принадлежать более чем одной категории (если продукт относится к более чем одной категории, он имеет одинаковые номера продаж в каждой из этих категорий), например ,
id product_id category_id date_id sales other_information
1 1 1 2016-06-30 4 AAA
2 1 2 2016-06-30 4 BBB
3 1 6 2016-06-30 4 CCC
4 2 2 2016-06-30 5 DDD
5 2 4 2016-06-30 5 EEE
...
Если я теперь запустить простой 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
Я хотел бы всегда получить продажи 4 для продукта 1 и продаж 5 для продукта 2 на 2016-06-30 (но по-прежнему иметь возможность агрегировать продажи на неделю/месяц/год):
2016-06-30 2016-06-29 ...
CATEGORY PRODUCT_ID SALES SALES
All Categories All Products 9 ...
1 4
2 5
Electronics All Products 9
1 4
2 5
Camera & Photo All Products 9
1 4
2 5
Digital Cameras All Products 5
2 5
Film Photography All Products 4
1 4
Film All Products 4
1 4
Что делать, если продажи для (ProductA/Подкатегории 1) = 5 и (ProductA/Подкатегория 2) = 3? – whytheq
Продажи для (ProductA/Подкатегории 1) всегда = (ProductA/Подкатегория 2) –
Отредактирован вопрос, чтобы уточнить структуру категории. –