powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Возможен ли такой MDX
7 сообщений из 7, страница 1 из 1
Возможен ли такой MDX
    #32081480
sasV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть куб [сбыт_дог] измерения [договор_период].[категория].[контрагент].[договор], время, [Measures].[вес]
у [договор] есть Properties("дата") - начала действия договора (тип DateTime)

Два вопроса
1 Как обратиться к свойству как к дате.Запрос ( [договор_период].Properties("дата")>"01.01.2003") работает со строкой
2 Нужно ответить на такой вопрос средствами MDX: С кем из контрагентов(у которых есть отгрузка в 2002году) НЕ заключены

договора на 2003 год (отгрузки в 2003 году ещё нет)

Жду помощи 2003 год близко.

Алексанр.
...
Рейтинг: 0 / 0
Возможен ли такой MDX
    #32081543
Ирина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Возможен ли такой MDX
    #32081618
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку данных нет, то давайте я покажу, как аналогичная задача (если только я правильно понял ее смысл) решается на БД 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.
...
Рейтинг: 0 / 0
Возможен ли такой MDX
    #32081624
lubimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему бы не построить виртуальное измерение на этой проперти и не вывести его как фильтр или ось в отчет?
...
Рейтинг: 0 / 0
Возможен ли такой MDX
    #32081863
sasV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для Дед Маздай
Ваш запрос очень помог
на его основе мой выглядит так

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

Спасибо.
...
Рейтинг: 0 / 0
Возможен ли такой MDX
    #32082312
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле проверки, была ли по данному контрагенту отгрузка в 2002 г.? ([Контрагент].CurrentMember, Measures.[Отгрузка]) > 0. А у Вас [Контрагент] и [Договор] - два разных измерения? Как тогда понять, что вот этот договор вот по данному контрагенту?
...
Рейтинг: 0 / 0
Возможен ли такой MDX
    #32083014
sasV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А у Вас [Контрагент] и [Договор] - два разных измерения?
Как тогда понять, что вот этот договор вот по данному контрагенту?

Измерение одно [договор_период].[категория].[контрагент]. [договор]
Если посмотреть отгрузку по [договор_период].[категория].[контрагент] то она больше 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 [сбыт_дог]
проходит

Прошу прощения за длительные перерывы между сообщениями
Спасибо заранее.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Возможен ли такой MDX
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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