Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MDX для выяснения просроченного долга
|
|||
|---|---|---|---|
|
#18+
В таблице фактов есть поля 1. ДатаОперации (день когда прошла операция) 2. ОплатитьДо (день после котрого оплата считается просроченной) 3. Сумма (сумма денег) 4. ЭтоОплата (1 если оплата, 0 если закуп) В итоге надо получить 1. сумму просроченного/непросроченного долга на дату 2. Количество дней просрочки на дату Использую MS AS В качестве клиента - Excel Вопрос - как построить вычисляемый мембер, для 1 и 2 На самом деле даже немного проще - как сравнить даты? Когда пишу datediff("d",[ДатаОперации].currentMember,[Оплатитьдо].currentMember) для выснения сколько дней в прошло просрочке - выдает #ERR Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2004, 15:09 |
|
||
|
MDX для выяснения просроченного долга
|
|||
|---|---|---|---|
|
#18+
Нашел на форуме что необходимо измерение дата/время делать на отдельной таблице. Сгенерировал такую таблицу (дата, номер дня , тип дня, признак банковского дня). Увязал с таблицей фактов, только вот не знаю, правильно ли сязывать две таблицы по дате, или надо было выделять отдельную колонку с идами. Легче не стало. Все равно не могу посчитать просроченный/не просроченный долг и дни просрочки. Даже просто бинарный признак - долг просрочен (1-да, 0 - нет) не могу придумать как сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 11:54 |
|
||
|
MDX для выяснения просроченного долга
|
|||
|---|---|---|---|
|
#18+
В общем сделал так - К измерению ДатаОперации добавил уровень - документ у которого есть 2 свойства "ДатаОперации" и "оплатитьДо". Просроченный долг вычисляется так - sum(filter([ДатаОперации].CurrentMember.Children, datediff("d", [ДатаОперации].CurrentMember.Properties("ОплатитьДо"), [ДатаОперации].CurrentMember.Properties("ДатаОперации")) > 0), [Measures].[НарПлюсДолг]-[Measures].[МинусДолг]) (об этом было написано в отдной из веток на том форуме) понимаю что это не правильно. Должен быть вариант проще. Как сделать проще не знаю. Может поскажите, мэтры? И еще - в условиях такого определния просроченного долга, не определяется долг для уровней выше чем НомерДокумента. Пишет #ERR Как побороть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 16:09 |
|
||
|
MDX для выяснения просроченного долга
|
|||
|---|---|---|---|
|
#18+
Продолжение борьбы ДатаОперации и ДатаОплаты - измерения ГМД, построенные по отдельной таличке дат. Делаю запрос with set DatesOper as '{descendants( [ДатаОперации].members, ДатаОперации].[day])}' set DatesOplata as '{descendants( [ДатаОплаты].members, [ДатаОплаты].[day])}' member [Measures].[Sumer] as ' sum ( nonemptycrossJoin ({DatesOper.currentMember},{DatesOplata}), ([Debkred].[All Debkred].[0],[Measures].[Долг]) ) - sum ( nonemptycrossJoin ({DatesOper.currentMember},{DatesOplata}), ([Debkred].[All Debkred].[1],[Measures].[Долг]))' SELECT ({[Measures].[Sumer] ,[Measures].[Долг]}) ON COLUMNS , {DatesOper} ON ROWS FROM [Деньга] WHERE ([Клиент].&[ 1V0]) ([Debkred].[All Debkred].[0],[Measures].[Долг]) ) - выбирает увеличение долга ([Debkred].[All Debkred].[1],[Measures].[Долг]) ) - выбирает уменьшение долга [Measures].[Sumer] - не считается. Выдает #Err Если правильно понимаю, nonemptycrossJoin ({DatesOper.currentMember},{DatesOplata}) должно вернуть множество дат из таблицы фактов где ДатаОперации=DatesOper.currentMember и всех ДатОплаты. Почему же не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 16:43 |
|
||
|
MDX для выяснения просроченного долга
|
|||
|---|---|---|---|
|
#18+
Можно поинтересоваться, что возвращает Ваш NonEmptyCrossJoin? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 17:52 |
|
||
|
MDX для выяснения просроченного долга
|
|||
|---|---|---|---|
|
#18+
Видимо, #ERR из-за того, что обе оси зависят од одного измерения: DatesOper используется для вычисления [Measures].[Sumer] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 18:04 |
|
||
|
MDX для выяснения просроченного долга
|
|||
|---|---|---|---|
|
#18+
GvyntВидимо, #ERR из-за того, что обе оси зависят од одного измерения: DatesOper используется для вычисления [Measures].[Sumer] В кубе это два разных измерения (если я правлино понимаю это dimensions) ДатаОперации и ДатаОплаты (правда строятся по одной и той же таблице) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 20:38 |
|
||
|
MDX для выяснения просроченного долга
|
|||
|---|---|---|---|
|
#18+
GvyntМожно поинтересоваться, что возвращает Ваш NonEmptyCrossJoin? Может и ламерский вопрос, но я не знаю как смотреть результат NonEmptyCrossJoin. Если написать такой запрос SELECT ({[Measures].[Долг]}) ON COLUMNS , {nonemptycrossjoin({DatesoPer} ,{DatesOplata})} ON ROWS то возвращает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 20:41 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32625997&tid=1872399]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
132ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 451ms |

| 0 / 0 |
