Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Tabular grand total / 4 сообщений из 4, страница 1 из 1
31.05.2017, 08:45
    #39462817
IDVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tabular grand total
Коллеги подскажите пожалуйста, есть куб табличной модели, в нем некоторая мера осуществляет следующий расчет:

Если Сумма( поле) <0
тогда Сумма( поле)
иначе Пусто

т.е. мера выводит результат агрегата только в том случае, если он имеет отрицательный результат. Но общие итоги в сводной таблице отображают не совсем корректное значение, т.к. расчет выполняется по алгоритму меры, в то время как мне нужна простая сумма значений рассчитанных в сводной таблице (получается что мне нужно некая динамика в общих итогах)

пример на T-SQL:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
Drop table if exists dbo.fact_test
go
Create table dbo.fact_test
(  Sku       VarChar (64)  not null
 , TitleSku  VarChar (128) not null
 , TypeGroup Char(1)       not null
 , QTY       int           not null
)

Insert into dbo.fact_test
(  sku
 , TitleSku
 , TypeGroup
 , QTY
)
Values ( 'Sku 1', 'Товар 1',   'A',  10)
     , ( 'Sku 2', 'Товар 2',   'A', -10)
     , ( 'Sku 3', 'Товар 3',   'B',  3)
     , ( 'Sku 4', 'Товар 4',   'B',  10)
     , ( 'Sku 4', 'Товар 4',   'B', -60)
     , ( 'Sku 4', 'Товар 4',   'B',  10)
     , ( 'Sku 5', 'Товар 5',   'A',  8)
     , ( 'Sku 5', 'Товар 5',   'A', -13)
     , ( 'Sku 6', 'Товар n/a', 'C',  6)
     , ( 'Sku 6', 'Товар n/a', 'C',  6)
     , ( 'Sku 6', 'Товар n/a', 'C', -20)
     , ( 'Sku 7', 'Товар n/a', 'C',  10)
     , ( 'Sku 7', 'Товар n/a', 'C',  10)
     , ( 'Sku 7', 'Товар n/a', 'C',  10)
     , ( 'Sku 7', 'Товар n/a', 'C', -99)

-- Мера выводит результат агрегата в том случае, если его значение отрицательное

Select Sku
     , Case when Sum( QTY) < 0
            then Sum( QTY)
            else null end as Мера1
     , Sum( QTY) as AllSumQty
from dbo.fact_test
group by Sku                         -- grand total должен быть -132, по факту равен -119

Select Sku
     , TypeGroup
     , Case when Sum( QTY) < 0
            then Sum( QTY)
            else null end as Мера1
     , Sum( QTY) as AllSumQty
from dbo.fact_test
group by Sku
       , TypeGroup                    -- grand total должен быть -132, по факту равен -119



в итоге: в общих итогах сводной таблицы мне необходимо получить сумму по колонке "Мера1", но сейчас получаю сумму по колонке "AllSumQty" (разумеется если она отрицательная). Можно ли как-то в табулярке управлять общими итогами?
...
Рейтинг: 0 / 0
31.05.2017, 11:15
    #39462945
mbabkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tabular grand total
IDVT,
Вам нужно предварительно рассчитать таблицу с нужными агрегатами, используя SUMMARIZE или GROUPBY (Смотря какая версия Tabular у вас), потом ее отфильтровать и заново сделать суммирование.
Схематично примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Мера2 :=
SUMX (
    FILTER (
        SUMMARIZE (
            'fact_test';
            [Sku];
            [TitleSku];
            [TypeGroup];
            "Мера1"; SUM ( [QTY] )
        );
        [Мера1] < 0
    );
    [Мера1]
)
...
Рейтинг: 0 / 0
31.05.2017, 11:59
    #39462983
IDVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tabular grand total
Большое Вам спасибо за ответ!
Это будет корректно работать? ведь заранее неизвестно какие атрибуты выбрал пользователь, в результате которых grand total будет динамически менять значение, или я уже совсем загнался в поисках решения.....
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Мера2 :=
SUMX (
    FILTER (
        SUMMARIZE (
            'fact_test';
            [Sku];                    <--
            [TitleSku];              <--
            [TypeGroup];           <--
            "Мера1"; SUM ( [QTY] )
        );
        [Мера1] < 0
    );
    [Мера1]
)
...
Рейтинг: 0 / 0
31.05.2017, 13:59
    #39463086
IDVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tabular grand total
mbabkin

Большое спасибо за содействие! все получилось! голову совсем забил себе =)
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Tabular grand total / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]