powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Tabular grand total
4 сообщений из 4, страница 1 из 1
Tabular grand total
    #39462817
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги подскажите пожалуйста, есть куб табличной модели, в нем некоторая мера осуществляет следующий расчет:

Если Сумма( поле) <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
Tabular grand total
    #39462945
mbabkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Tabular grand total
    #39462983
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое Вам спасибо за ответ!
Это будет корректно работать? ведь заранее неизвестно какие атрибуты выбрал пользователь, в результате которых 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
Tabular grand total
    #39463086
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbabkin

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


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