|
Разделение Null и Ноль ?
|
|||
---|---|---|---|
#18+
MSSQL 2016 Ent, VS 2019, SSAS Доброго дня! В кубе считаю Среднее и Медиану по числовому ряду. Числовой ряд это мера таблицы фактов [Measures].[_t Cronos] , которая содержит простые числа, а также значения Null и "0"(Ноль). Считаю в CM куба вдоль измерения, созданного на базе суррогатного первичного ключа [SALES].[ID KEY].[ID KEY] таблицы фактов. Получается рассчитать без учета Null и "0". Или с ними: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
И все это не то, что надо Заказчику. Он требует учитывать в расчете средних и медианы, наряду с числами, еще и значение "Ноль". А вот Null не учитывать в расчетах. Кто знает как это решить на уровне СМ, не переходя в ETL? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2021, 08:06 |
|
Разделение Null и Ноль ?
|
|||
---|---|---|---|
#18+
Nivatu, Вы объясните задачу в целом, а то у вас объяснение вида нужно посчитать среднее по X , а еще надо делить на 0. Если надо среднее по всем дням, включая пустые, то рекомендую завести показатель "кол-во дней", который посчитать по календарю, и на него делить. В любом случае посчитайте показатели "числитель" и "знаменатель". И поделите в конечном показателе. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2021, 14:13 |
|
Разделение Null и Ноль ?
|
|||
---|---|---|---|
#18+
Nivatu, ну, вообще-то, прочитайте внимательно про AVG - она не учитывает пустые ячейки в расчете. и в документации написано, что если надо их учитывать (обратная задача Вашей) используйте CoalesceEmpty или любое выражение возвращающее для пустых ячеек 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2021, 14:28 |
|
Разделение Null и Ноль ?
|
|||
---|---|---|---|
#18+
a_voronin, В целом задача такая: Нужно за календарные периоды считать статистику затрат времени (среднее и медиану) на обработку группы уникальных событий, которые в заданный период происходили. События в таблице фактов. Для каждого события отведена одна строка со своим уникальным Id-шником и календарной датой. По нему в этой же строке, но в другом столбце [t_Cronos] простым числом регистрируется затраты времени в минутах. В формулу должны идти только те строки, где затраты времени не равны Null. А поле с нолем (в примере строка #105)должно быть учтено в счетчике формул, т.к. событие в обработке все-таки было. [img=https://www.sql.ru/images/Исходные данные.png] В итоге трудность этой задачи сводится не к тому "как рассчитать медиану или среднее?", а к тому "как учесть Ноль в счетчике формулы и при этом не учитывать Null?" AVG() и Median() не различают Ноль и Null ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2021, 07:14 |
|
Разделение Null и Ноль ?
|
|||
---|---|---|---|
#18+
ShIgor, Спасибо за полезный совет. Описание AVG в MS документации действительно шире чем в ином справочнике. В моем случае Avg учитывает все Null и Ноли. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
А вот так не учитывает ни Null ни Ноли: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
т.е. isEmpty() тоже метет Пустые и Ноли как одно C CoalesceEmpty "каменный цветок" пока тоже не получается. Разбираюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2021, 09:11 |
|
Разделение Null и Ноль ?
|
|||
---|---|---|---|
#18+
Nivatu, а если вот так, то результат прям вот как на скриншоте? или вместо null стоят 0? Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2021, 21:19 |
|
Разделение Null и Ноль ?
|
|||
---|---|---|---|
#18+
ShIgor, Что называется "картина маслом". Результат все объясняет (( В нижней строке в исходнике Null. Тип агрегирования Sum. Как же эффективней всего поменять модель данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2021, 07:07 |
|
Разделение Null и Ноль ?
|
|||
---|---|---|---|
#18+
Nivatu, если у Вас SSAS MD так все просто. у Вас в настройках обработки нулл-ов 'ZeroOrBlank'. смените на 'Preserve'. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2021, 09:12 |
|
Разделение Null и Ноль ?
|
|||
---|---|---|---|
#18+
но я бы пошел другим путем. создал бы еще измерение "С учетом нулл-ов" да/нет и флаг в источнике iif(value is null, 0, 1). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2021, 09:38 |
|
|
start [/forum/topic.php?fid=49&msg=40057090&tid=1857167]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 250ms |
total: | 383ms |
0 / 0 |