Я пытаюсь суммировать сумму продаж всех продуктов в категории и ее подкатегориях, добавляя сумму продаж для продуктов с одним и тем же ключом измерения продукта только один раз.
Каждая категория может иметь любое количество подкатегорий, и каждая подкатегория может иметь любое количество собственных подкатегорий, до пяти уровней подкатегорий. Количество подкатегорий может варьироваться.
Итак, 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