Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 Вместо нулей в вычисляемой мере выводит бесконечномалые типаE-11  [new]
Вячеслав Го.
Member

Откуда:
Сообщений: 12
В вычисляемой мере (CALCULATE MEMBER) Оборот = Дебет-Кредит вместо нулевых значений часто выводит что-то типа 2,91038E-11
Причём сами слагаемые вполне обычные числа с 2-мя знаками после запятой.

Пришлось вместо Дебет-Кредит нагородить round([Measures].[Дебет]-[Measures].[Кредит],6)
Но мне возникновение микроошибочки осталось непонятным. Наверно это связано со способом хранения числа двоичном виде, но почему AS не отлавливает такое?

Может кто знает как радикально исправить это, а не использовать Round

PS
Хранилище на MS SQL 2014, куб на MS SSAS 2014
FORMAT_STRING = "#,##0.00;-#,##0.00",
19 дек 17, 17:01    [21046327]     Ответить | Цитировать Сообщить модератору
 Re: Вместо нулей в вычисляемой мере выводит бесконечномалые типаE-11  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 2750
Вячеслав Го.
В вычисляемой мере (CALCULATE MEMBER) Оборот = Дебет-Кредит вместо нулевых значений часто выводит что-то типа 2,91038E-11
Причём сами слагаемые вполне обычные числа с 2-мя знаками после запятой.

Пришлось вместо Дебет-Кредит нагородить round([Measures].[Дебет]-[Measures].[Кредит],6)
Но мне возникновение микроошибочки осталось непонятным. Наверно это связано со способом хранения числа двоичном виде, но почему AS не отлавливает такое?

Может кто знает как радикально исправить это, а не использовать Round

PS
Хранилище на MS SQL 2014, куб на MS SSAS 2014
FORMAT_STRING = "#,##0.00;-#,##0.00",


Таки наверное нужно скрыть в пустоту.

CREATE MEMBER CURRENTCUBE.[Measures].[Оборот]
iif(
([Measures].[Дебет]-[Measures].[Кредит])<0.01 and ([Measures].[Дебет]-[Measures].[Кредит])>-0.01,
null,
([Measures].[Дебет]-[Measures].[Кредит])
), 
FORMAT_STRING = "#,##0.00;-#,##0.00", 
VISIBLE = 1;                                                                             
19 дек 17, 17:14    [21046369]     Ответить | Цитировать Сообщить модератору
 Re: Вместо нулей в вычисляемой мере выводит бесконечномалые типаE-11  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 393
Вячеслав Го.,

Так ведь SSAS числа хранит только в двоичной системе. Десятичную он не поддерживает.
А то, что 1/10 в двоичной системе исчисления есть бесконечная дробь, Вы не измените.
Так что остается только руками такое отсеивать/округлять.
19 дек 17, 17:30    [21046407]     Ответить | Цитировать Сообщить модератору
 Re: Вместо нулей в вычисляемой мере выводит бесконечномалые типаE-11  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 30745
Блог
Вячеслав Го.,

я бы проверил, что же все-таки за тип у "Дебет" и "Кредит", ибо "обычные числа с 2-мя знаками после запятой" - несерьезно
19 дек 17, 17:38    [21046441]     Ответить | Цитировать Сообщить модератору
 Re: Вместо нулей в вычисляемой мере выводит бесконечномалые типаE-11  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 393
Критик
я бы проверил, что же все-таки за тип у "Дебет" и "Кредит"

Если речь про MS SSAS, то есть только Double и Currency (начиная с 2012-го, если не ошибаюсь).
У ТС из этих двух явно Double со всеми вытекающими.
19 дек 17, 17:47    [21046477]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить