|
Возможен ли такой MDX
|
|||
---|---|---|---|
#18+
Есть куб [сбыт_дог] измерения [договор_период].[категория].[контрагент].[договор], время, [Measures].[вес] у [договор] есть Properties("дата") - начала действия договора (тип DateTime) Два вопроса 1 Как обратиться к свойству как к дате.Запрос ( [договор_период].Properties("дата")>"01.01.2003") работает со строкой 2 Нужно ответить на такой вопрос средствами MDX: С кем из контрагентов(у которых есть отгрузка в 2002году) НЕ заключены договора на 2003 год (отгрузки в 2003 году ещё нет) Жду помощи 2003 год близко. Алексанр. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2002, 08:50 |
|
Возможен ли такой MDX
|
|||
---|---|---|---|
#18+
1. Попробуйте воспользоваться одной из VBA ф-й поддерживаемых MDX, их список можно увидеть в BOL в статье "Visual Basic for Applications Functions", может DateValue, Day, Month и т.д. подойдут. 2. Если никто не подскажет, подумаю завтра:) Ирина ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2002, 10:28 |
|
Возможен ли такой MDX
|
|||
---|---|---|---|
#18+
Поскольку данных нет, то давайте я покажу, как аналогичная задача (если только я правильно понял ее смысл) решается на БД Foodmart 2000. Берем измерение Customer, добавляем к уровню Name свойство Birthdate, соответствующее аналогичной колонке реляционной таблички, и допустим, что нам надобно вывести всех клиентов, которые родились после 1970 г. и у которых были покупки на сумму более 100 у.е. Ну т.е. Birthdate уподобляем дате заключения контракта, а Unit Sales - отгрузке. Тогда это решается примерно так: with member Measures.[Дата рождения] as 'Customers.CurrentMember.Properties("Birthdate")' select filter(Customers.[Name].Members, year(Measures.[Дата рождения]) > 1970 and Measures.[Unit Sales] > 100) on columns, {Measures.[Дата рождения], Measures.[Unit Sales]} on rows from Sales Я исходил из предположения, что дата заключения договора никак не связана с измерением "Время". Чтобы не возиться с преобразованиями строки в дату, я задал ей тип DBTimeStamp - см. Data Type в закладке Advanced для Member Property. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2002, 11:43 |
|
Возможен ли такой MDX
|
|||
---|---|---|---|
#18+
а почему бы не построить виртуальное измерение на этой проперти и не вывести его как фильтр или ось в отчет? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2002, 11:51 |
|
Возможен ли такой MDX
|
|||
---|---|---|---|
#18+
для Дед Маздай Ваш запрос очень помог на его основе мой выглядит так with member Measures.[Дата] as '[договор_период].Properties("с") ' select filter( [договор_период].[договор].Members, VBA!year(Measures.[Дата]) = 2003 and ????????????????????<условие2> ) on rows , {Measures.[Дата], [Measures].[вес]} on columns from [сбыт_дог] НО отгрузки на 2003 нет но точно есть отгрузка на [категория].[контрагент] [категория] город [контрагент] иванов [договор] №1 с 01.01.2002 - есть отгрузка 200кг. №100 с 01.01.2003 - нет отгрузки но есть договор как в условие2 запихать проверку по отгрузке на [контрагент]? (для [контрагент].[иванов] она равна 200кг.) и на on rows отобразить [категория].[контрагент].Members Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2002, 14:20 |
|
Возможен ли такой MDX
|
|||
---|---|---|---|
#18+
В смысле проверки, была ли по данному контрагенту отгрузка в 2002 г.? ([Контрагент].CurrentMember, Measures.[Отгрузка]) > 0. А у Вас [Контрагент] и [Договор] - два разных измерения? Как тогда понять, что вот этот договор вот по данному контрагенту? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2002, 11:53 |
|
Возможен ли такой MDX
|
|||
---|---|---|---|
#18+
А у Вас [Контрагент] и [Договор] - два разных измерения? Как тогда понять, что вот этот договор вот по данному контрагенту? Измерение одно [договор_период].[категория].[контрагент]. [договор] Если посмотреть отгрузку по [договор_период].[категория].[контрагент] то она больше 0, т.к. состоит из сумм отгрузок по договорам за 2002 и 2003 год. Так вот задача определить у какого [контрагент] есть отгрузка и присутствует договор на 2003 год Лучше выводить в строках контрагента т.к. [договор] содержит только номер и дату заключения договора. Созданные запросы: 1 with member Measures.[Дата] as '[договор_период].Properties("с") ' select filter( [договор_период].[договор].Members , VBA!year(Measures.[Дата]) >= 2002 and [Measures].[вес]>0 ) on rows , {Measures.[Дата], [Measures].[вес]} on columns from [сбыт_дог] - выводит договора за 2002 год 2 with member Measures.[Дата] as '[договор_период].Properties("с") ' select filter( [договор_период].[договор].Members , VBA!year(Measures.[Дата]) >= 2003 and [Measures].[вес]>0 ) on rows , {Measures.[Дата], [Measures].[вес]} on columns from [сбыт_дог] - выводит ошибку "Cells cannot be created for this cellset because one of the axes contains no positions" оно и понятно отгрузки нет в 2003. 3 with member Measures.[Дата] as '[договор_период].Properties("с") ' select filter( [договор_период].[контрагент].Members , VBA!year(Measures.[Дата]) >= 2002 and [Measures].[вес]>0 ) on rows , {Measures.[Дата], [Measures].[вес]} on columns from [сбыт_дог] - выводит ошибку "The operator has failed because of in the COM component - unknown error" with member Measures.[Дата] as '[договор_период].CurrentMember.Properties("с") ' select filter( [договор_период].[контрагент].Members , VBA!year(Measures.[Дата]) >= 2002 and ([договор_период].[контрагент].CurrentMember ,[Measures].[вес])>0 ) on rows , {Measures.[Дата], [Measures].[вес]} on columns from [сбыт_дог] - выводит ошибку "Formula error - cannot bind: unknown dimension: [договор_период].[контрагент]" хотя запрос select [договор_период].[контрагент].Members on rows , {[Measures].[вес]} on columns from [сбыт_дог] проходит Прошу прощения за длительные перерывы между сообщениями Спасибо заранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2002, 12:50 |
|
|
start [/forum/topic.php?fid=49&fpage=416&tid=1873631]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 260ms |
total: | 374ms |
0 / 0 |