Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 Как создать процентную ось с диапазонами 0-10%, 10-20% и т.д.?  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
Добрый день!

Есть люди и длительность их на стриме:
Имя длительность Дата (минут)
Иванов 55 январь
Петров 78 февраль
Сидоров 3 ноябрь
..ров 5 ноябрь

Для описанных данных видно, что распределение такое:
Процент сколько народу в диапазоне
90-100% 1
80-90% 1
0-10% 2

Т.е. 78 взят за максимум.

Но если я укажу уже конкретный месяц - ноябрь, то картинка поменяется. Максимумом станет 5, поэтому распределение будет таким:
Процент сколько народу в диапазоне
90-100% 1
60-70% 1

Во вторую строку попал Сидоров со своей тройкой.

Как в многомерном SSAS получить такое распределение?
25 авг 20, 13:53    [22186900]     Ответить | Цитировать Сообщить модератору
 Re: Как создать процентную ось с диапазонами 0-10%, 10-20% и т.д.?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
Charles Weyland,

Поставьте задачу более корректно. Вы где хотите получить распределение на показателях, на измерениях?

Сделайте вычисляемые показатели 0-10% 10-20% ... 90-100%. 10 штук. Поделите конкретные значение на ваш максимум.
25 авг 20, 14:23    [22186927]     Ответить | Цитировать Сообщить модератору
 Re: Как создать процентную ось с диапазонами 0-10%, 10-20% и т.д.?  [new]
iShvedsky
Member

Откуда:
Сообщений: 47
Charles Weyland, если я правильно понял и если вопрос "про процентную ось" (ака размерность), то быстро посмотреть и поиграться можно такими параметрами размерности:

К сообщению приложен файл. Размер - 5Kb
25 авг 20, 15:13    [22186962]     Ответить | Цитировать Сообщить модератору
 Re: Как создать процентную ось с диапазонами 0-10%, 10-20% и т.д.?  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
Я сделал таблицу
IdFromToName
1-1100-10%
2102010-20%
3203020-30%
4304030-40%
5405040-50%
6506050-60%
7607060-70%
8708070-80%
9809080-90%
109010090-100%

И по ней "висящие в воздухе" (не связанное в кубе с другими мерами и измерениями) измерение с мерой, опишу на псевдокоде (ибо делал в интерфейсе:
[Measures].[From]=Minimum(From)
[Measures].[To]  =Maximum(To)

[Measures].MaxDuration = Maximum(длительность)

и меру
CREATE MEMBER CURRENTCUBE.[Распределение]
AS
    Aggregate(
            FILTER(
                [Зрители].[Имя].[Имя]
                , [Measures].[Длительность]       *100 /([Зрители].[Имя].[All], [Measures].MaxDuration) >  [Measures].[From]
                    and [Measures].[Длительность] *100 /([Зрители].[Имя].[All], [Measures].MaxDuration) <= [Measures].[To]
                    and [Measures].[Количество строк в таблице зрителей] > 0
            )
        ,[Measures].[Количество строк в таблице зрителей]
    )
, VISIBLE = 1;

Единственный косяк - это то, что [Зрители].[Имя].[All] снимает фильтры и MaxDuration считается не в текущем контексте, а вообще абсолютный максимум по данным. И если выбираю "Ноябрь", то максимум остаётся абсолютным. Очевидна причина, но пока не понял, как указать правильно. Кроме месяца там ещё куча всяких параметров.
25 авг 20, 15:16    [22186964]     Ответить | Цитировать Сообщить модератору
 Re: Как создать процентную ось с диапазонами 0-10%, 10-20% и т.д.?  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
iShvedsky
Charles Weyland, если я правильно понял и если вопрос "про процентную ось" (ака размерность), то быстро посмотреть и поиграться можно такими параметрами размерности:

оо, тут что-то прикольное. Не знал, надо поэкспериментировать

Сообщение было отредактировано: 25 авг 20, 15:15
25 авг 20, 15:19    [22186965]     Ответить | Цитировать Сообщить модератору
 Re: Как создать процентную ось с диапазонами 0-10%, 10-20% и т.д.?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
Charles Weyland
iShvedsky
Charles Weyland, если я правильно понял и если вопрос "про процентную ось" (ака размерность), то быстро посмотреть и поиграться можно такими параметрами размерности:

оо, тут что-то прикольное. Не знал, надо поэкспериментировать


Может вам сделать измерение из 10 элементов 0-9 ( 0-10% 10-20% ... 90-100%.) и а вашем MEMBER CURRENTCUBE.[Распределение] отталкиваетесь от currentmember этого элемента?
25 авг 20, 16:57    [22187062]     Ответить | Цитировать Сообщить модератору
 Re: Как создать процентную ось с диапазонами 0-10%, 10-20% и т.д.?  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
a_voronin
Может вам сделать измерение из 10 элементов 0-9 ( 0-10% 10-20% ... 90-100%.) и а вашем MEMBER CURRENTCUBE.[Распределение] отталкиваетесь от currentmember этого элемента?

Так я как раз выше описал, что именно так и сделал.

Дискретизация вообще ничем не помогла, там чуть иначе, поэтому вернулся к своему решению.

Единственное, что не пойму, как сделать правильно - это как обратиться к максимуму вне контекста конкретного зрителя.

Т.е. у меня есть особенная мера - "Самый долгий просмотр из всех зрителей". Можно выбрать "Ноябрь" и будет самый долгий просмотр среди ноябрьских зрителей. Или выбрать "мужики", тогда среди мужиков.
Если я пишу так:
CREATE MEMBER CURRENTCUBE.[Распределение]
AS
    Aggregate(
            FILTER(
                [Зрители].[Имя].[Имя]
                , [Measures].[Длительность]       *100 / [Measures].MaxDuration >  [Measures].[From]
                    and [Measures].[Длительность] *100 / [Measures].MaxDuration <= [Measures].[To]
                    and [Measures].[Количество строк в таблице зрителей] > 0
            )
        ,[Measures].[Количество строк в таблице зрителей]
    )
, VISIBLE = 1;

то в контексте "[Зрители].[Имя].[Имя]" у каждого зрителя будет своё персональное значение максимума и оно будет равняться единственному значению - его длительности. А чтобы взять максимум из всех зрителей, приходится писать так:

CREATE MEMBER CURRENTCUBE.[Распределение]
AS
    Aggregate(
            FILTER(
                [Зрители].[Имя].[Имя]
                , [Measures].[Длительность]       *100 /([Зрители].[Имя].[All], [Measures].MaxDuration) >  [Measures].[From]
                    and [Measures].[Длительность] *100 /([Зрители].[Имя].[All], [Measures].MaxDuration) <= [Measures].[To]
                    and [Measures].[Количество строк в таблице зрителей] > 0
            )
        ,[Measures].[Количество строк в таблице зрителей]
    )
, VISIBLE = 1;

Но тогда я снимаю вообще все фильтры со всех зрителей
25 авг 20, 17:08    [22187066]     Ответить | Цитировать Сообщить модератору
 Re: Как создать процентную ось с диапазонами 0-10%, 10-20% и т.д.?  [new]
PassedBI
Member

Откуда:
Сообщений: 321
Charles Weyland,

([Зрители].[Имя].[All], [Measures].MaxDuration) - не должна такая конструкция снимать фильтр с календаря, это же другое измерение и в данном кортеже вообще не представлено в явном виде, так что выбор на календаре таким и останется.
Попробуйте прям это выражение потестить отдельно, по зрителям будет одинаково, но по другим связанным измерениям должно меняться.
25 авг 20, 22:11    [22187145]     Ответить | Цитировать Сообщить модератору
 Re: Как создать процентную ось с диапазонами 0-10%, 10-20% и т.д.?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
iShvedsky
Charles Weyland, если я правильно понял и если вопрос "про процентную ось" (ака размерность), то быстро посмотреть и поиграться можно такими параметрами размерности:


Бакеты в его случае не помогут. Бакеты должны меняться динамически, а эти фиксируются в момент процессинга.
26 авг 20, 07:58    [22187208]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить