Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Реализовать аналог LastNonEmpty в MDX / 15 сообщений из 15, страница 1 из 1
04.05.2019, 21:30
    #39809789
Baters
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Доброго времени суток спецы MDX.

Установлен Ms2012 Standart, в связи с чем не работает такая функция как LastNonEmpty.
В таблице с движениями и остатками (движения +остаток на 1 число каждого месяца) создан столбец "Остаток0" (по умолчанию значение NULL).

Ранее (при реализации Olap на другой работе) применял к "Остаток0" - LastNonEmpty, а затем определял результат в мере (см ниже);

([Дата].[День].[День], [Measures].[Остаток0]) = sum(mtd(), [Measures].[Движения])

все работало, сейчас возможности применить LastNonEmpty НЕТ, попробовал применить LastChild, но результат не тот....

Подскажите, как можно реализовать LastNonEmpty в мере, если можно, то русскоязычным примером.

Данная мера считает остаток на каждый день за выбранные период. Использую mtd(), так как, это быстрее чем считать движения с начала времен.
...
Рейтинг: 0 / 0
04.05.2019, 21:47
    #39809791
bideveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Baters,

А где в вашей формуле используется остаток на начало месяца?
...
Рейтинг: 0 / 0
04.05.2019, 22:31
    #39809801
Baters
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
bideveloper,

В мере ни где не используется, это я описал логику хранимых данных в источнике (вдруг, кто то по другому остатки добывает и есть другие варианты).
...
Рейтинг: 0 / 0
04.05.2019, 23:28
    #39809816
Sutasu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Ищете по форуму, задача неоднократно обсуждалась.
...
Рейтинг: 0 / 0
04.05.2019, 23:29
    #39809818
bideveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Baters,

А как тогда может получится правильный остаток? Ведь mtd считает с начала месяца. У меня на проекте считается с начала времен и мера LastChild, все работает корректно и быстро.
...
Рейтинг: 0 / 0
04.05.2019, 23:46
    #39809823
bideveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Baters,

Или приплюсуйте в формуле остаток на начало месяца, тоже должно корректно работать.
...
Рейтинг: 0 / 0
05.05.2019, 08:51
    #39809864
Baters
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
bideveloper,

да, mtd() считает с начала месяца- начало месяца=остаток на 1 число, прибавляем все приходы и расходы и получаем актуальный остаток на любой момент.

То, что у вас LastChild работает корректно...а как вы сделали иерархию дат (день-мес-год)?
...
Рейтинг: 0 / 0
05.05.2019, 09:22
    #39809867
Baters
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Sutasu,

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

(Tail(nonempty((null:[Периоды].[Дата].CurrentMember),[Measures].[FACT]),1),[Measures].FACT]).item(0)
...
Рейтинг: 0 / 0
05.05.2019, 12:50
    #39809882
bideveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Baters,

Даты обычно делаю с помощью таблицы, это самый гибкий способ

Date_id Date DateDescription CalendarYear CalendarYearLabel CalendarHalfYear CalendarHalfYearLabel CalendarQuarter CalendarQuarterLabel CalendarMonth CalendarMonthLabel CalendarISOYear
19000101 1900-01-01 00:00:00.000 1900//01/01 1900 1900 г. 19001 1 полугодие 1900 г. 19001 1 кв. 1900 г. 190001 Январь 1900 г. 1900
20000101 2000-01-01 00:00:00.000 2000/01/01 2000 2000 г. 20001 1 полугодие 2000 г. 20001 1 кв. 2000 г. 200001 Январь 2000 г. 1999
20070101 2007-01-01 00:00:00.000 2007/01/01 2007 2007 г. 20071 1 полугодие 2007 г. 20071 1 кв. 2007 г. 200701 Январь 2007 г. 2007
20070102 2007-01-02 00:00:00.000 2007/01/02 2007 2007 г. 20071 1 полугодие 2007 г. 20071 1 кв. 2007 г. 200701 Январь 2007 г. 2007

Т.е. для иерархии целые значения, например 12 сентября 2018 года будет:
Дата_id = 20180912
Месяц = 201809
Год = 2018
...
Рейтинг: 0 / 0
05.05.2019, 13:15
    #39809886
Baters
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
bideveloper,
у меня так и реализовано))
меня не устраивает LastChild, тем, что если я выберу 2019 год (тупо год закину в строки), то остаток получается NULL ибо LastChild у года 20191200, а он NULL.

Нужно получать именно LastNonEmpty, даже на уровне итогов(((

(Tail(nonempty((null:[Периоды].[Дата].CurrentMember),[Measures].[FACT]),1),[Measures].FACT]).item(0)

тоже не помогло((
...
Рейтинг: 0 / 0
05.05.2019, 13:49
    #39809894
bideveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Baters,
20191200 - у меня нет таких дат в таблице
и LastChild года будет 20191231 и он не Null (а по моей формуле сумма от начала времен до 20191231)
...
Рейтинг: 0 / 0
05.05.2019, 13:54
    #39809895
bideveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Baters,

Проверьте вашу иерархию дат, что связи корректны. И проверьте, что она указана в проекте именно как измерение времени (чтобы Analysis Services знал по какому измерению считать LastChild).
...
Рейтинг: 0 / 0
05.05.2019, 13:56
    #39809896
bideveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Baters,

вернее так, LastChild года будет LastChild от последнего месяца года, т. е. 201912, что равно значению меры от 20191231.
...
Рейтинг: 0 / 0
06.05.2019, 08:19
    #39810004
Baters
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
bideveloper,

связь вроде норм (Дт- М/Г-Г).
А не могли бы вы скинуть меру которой просчитываете остаток с начала времен?
...
Рейтинг: 0 / 0
06.05.2019, 13:13
    #39810160
bideveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализовать аналог LastNonEmpty в MDX
Baters,

// Остаток на конец периода
([Дата].[Дата].[Дата], [Measures].[Остаток]) = sum(null:[Дата].[Дата].CurrentMember,[Measures].[Движение]);
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Реализовать аналог LastNonEmpty в MDX / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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