powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / mdx запрос
38 сообщений из 38, показаны все 2 страниц
mdx запрос
    #38136919
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый!

Как написать mdx запрос который бы оъединил данные из нескольких кубов?

спасибо!
...
Рейтинг: 0 / 0
mdx запрос
    #38136926
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульдобрый!

Как написать mdx запрос который бы оъединил данные из нескольких кубов?

спасибо!
В одной и той же OLAP базе для кубов, подвязанных к одним и тем же измерениям, делаете примерно так
CREATE MEMBER CURRENTCUBE.[Measures].[Показатель1]
AS LookupCube("куб_сосед","([Measures].[показатель или мера из куба-соседа]
, "+[Измерение даты].[Иерархия даты].currentmember.uniquename+"
, "+[Измерение 2].[Иерархия измерения 2].currentmember.PrevMember.uniquename+")")

Ну и так далее. Удачи.
...
Рейтинг: 0 / 0
mdx запрос
    #38136932
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP,

Спасибо! сейчас попробую!
...
Рейтинг: 0 / 0
mdx запрос
    #38137622
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мугуль,

вопрос возник в excel набросано много фильтров из разных измерений

как мне это написать в mdx

select

мера on rows

from cube where измерение1, измерение2, измерение3


я написал но выводится ошибка

Указанные в функции два множества имеют различную размерность.
...
Рейтинг: 0 / 0
mdx запрос
    #38137656
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульмугуль,

вопрос возник в excel набросано много фильтров из разных измерений

как мне это написать в mdx

select

мера on rows

from cube where измерение1, измерение2, измерение3


я написал но выводится ошибка

Указанные в функции два множества имеют различную размерность.
Вариантов 2:
1. Запустить SSMS, открыть AS, выбрать профайлер, посмотреть MDX запрос, открыть в SSMS MDX query, скопировать из профайлера строку, отредактировать на свой вкус до состояния полной готовности.
2. Установить Просмотр MDX запросов прямо из Excel и наслаждаться жизнью.
...
Рейтинг: 0 / 0
mdx запрос
    #38137669
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP,

решил проблему так

select

мера on rows

from cube where {(измерение1), (измерение2)} * {(измерение3)}
...
Рейтинг: 0 / 0
mdx запрос
    #38138230
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мугуль,

WITH MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб]", "[Measures].[мера]") ----как сюда добавить "where"?

SELECT NON EMPTY
{MEASURES.LOOKUPCUBEDEMO,[Measures].[мера2]

}

on columns
FROM [куб2] where измерение
...
Рейтинг: 0 / 0
mdx запрос
    #38138283
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульмугуль,

WITH MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб]", "[Measures].[мера]") ----как сюда добавить "where"?

SELECT NON EMPTY
{MEASURES.LOOKUPCUBEDEMO,[Measures].[мера2]

}

on columns
FROM [куб2] where измерение
В конструкцию вписываете: LOOKUPCUBE("[куб]", " ваш mdx запрос ") в формате вычисляемого мебмера, т.е. как если бы вы его писали в простом запросе: with member [measures].[SuperMember] as (' ваш mdx запрос ')
...
Рейтинг: 0 / 0
mdx запрос
    #38138337
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user6278,

WITH MEMBER Measures.x AS
(
[Measures].[мера] -------------- сюда подставить where?
)

MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб]", "[Measures].[x]")


SELECT NON EMPTY
{[Measures].[x],
[Measures].[мера2]} on columns
FROM [куб2] where измерение
...
Рейтинг: 0 / 0
mdx запрос
    #38138384
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугуль,

Год телепатии продолжается ...

У Вас есть два запроса:
1. Запрос к кубу 1 с условием where
2. Запрос к кубу 2 + какие то данные из куба 1

Что нужно сделать:
1. Переписать запрос 1 переместив условие из where в with member (это нужно для того, чтобы вставить его в запрос 2)
2. Переписанный запрос 1 подставляете в запрос 2, в синтаксисе указанным ранее.
...
Рейтинг: 0 / 0
mdx запрос
    #38138413
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user6278,

у меня 2 куба

в кубе1
мера1
измерение1 - дата

в кубе2
мера2
измерение1 - дата



я хочу написать запрос: мера1+мера2 и измерение 1
...
Рейтинг: 0 / 0
mdx запрос
    #38138469
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульuser6278,

у меня 2 куба

в кубе1
мера1
измерение1 - дата

в кубе2
мера2
измерение1 - дата



я хочу написать запрос: мера1+мера2 и измерение 1
Пишите.
...
Рейтинг: 0 / 0
mdx запрос
    #38138494
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user6278,

у меня не поулчается поставить фильтр
на 2 куба сразу. только на 1
...
Рейтинг: 0 / 0
mdx запрос
    #38138514
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугуль,

Вам не надо ставить фильтр на два куба. Пишите запрос к кубу 2, и дописываете его с под запросом (через with member и lookupcube) к кубу 1 - и все. Все же выше уже расписано.
...
Рейтинг: 0 / 0
mdx запрос
    #38138552
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user6278,

with
MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб1]", "[Measures].[мера]")


SELECT NON EMPTY
MEASURES.LOOKUPCUBEDEMO on columns
FROM [куб2] where [даты]



проблема в том что эта мера "MEASURES.LOOKUPCUBEDEMO" на это условие не реагирует --> where [даты]
...
Рейтинг: 0 / 0
mdx запрос
    #38138566
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульuser6278,

with
MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб1]", "[Measures].[мера]")


SELECT NON EMPTY
MEASURES.LOOKUPCUBEDEMO on columns
FROM [куб2] where [даты]



проблема в том что эта мера "MEASURES.LOOKUPCUBEDEMO" на это условие не реагирует --> where [даты]
Ну это вообще элементарно.

CREATE MEMBER CURRENTCUBE.[Measures].[Сумма двух мер]
AS
LookupCube("первый_куб_сосед","([Measures].[мера_из_первого_куба_соседа]
, "+[Общее измерение даты OLAP базы].[Иерархия даты].currentmember.uniquename+"")")
+
LookupCube("второй_куб_сосед","([Measures].[мера_из_второго_куба_соседа]
, "+[Общее измерение даты OLAP базы].[Иерархия даты].currentmember.uniquename+"")")
...
Рейтинг: 0 / 0
mdx запрос
    #38138567
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульuser6278,

with
MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб1]", "[Measures].[мера]")


SELECT NON EMPTY
MEASURES.LOOKUPCUBEDEMO on columns
FROM [куб2] where [даты]



проблема в том что эта мера "MEASURES.LOOKUPCUBEDEMO" на это условие не реагирует --> where [даты]
Вписываете туда конструкцию для измерения времени: ... ,([Дата2].[Год - Месяц - День].[День]&[" + [Дата1].[Год - Месяц - День].currentmember.properties("key_value") + "])
Где [Дата2] - дата куба 2, [Дата1] - дата куба 1.
...
Рейтинг: 0 / 0
mdx запрос
    #38138614
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помошь. но увы, не получилось у меня :(
...
Рейтинг: 0 / 0
mdx запрос
    #38138624
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугуль,

Тянул Дед репку, и Бабку позвал, и Внучку и Жучку и Мышку и все никак не вытянул ....
...
Рейтинг: 0 / 0
mdx запрос
    #38138634
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user6278,

вот мой запрос

with
MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб1]", "[Measures].[мера]")


SELECT NON EMPTY
MEASURES.LOOKUPCUBEDEMO on columns
FROM [куб2] where [даты]


куда вписать эту штуку?


Вписываете туда конструкцию для измерения времени: ... ,([Дата2].[Год - Месяц - День].[День]&[" + [Дата1].[Год - Месяц - День].currentmember.properties("key_value") + "])
Где [Дата2] - дата куба 2, [Дата1] - дата куба 1.


куда эту конструкцию вписывать?
...
Рейтинг: 0 / 0
mdx запрос
    #38138890
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульдобрый!

Как написать mdx запрос который бы оъединил данные из нескольких кубов?

спасибо!

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

Lookup Cube это как раз крылья птицы киви.
...
Рейтинг: 0 / 0
mdx запрос
    #38139444
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугуль,

Напишите по человечески оба Ваших запроса и Вам помогут.
...
Рейтинг: 0 / 0
mdx запрос
    #38139548
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульuser6278,

with
MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб1]", "[Measures].[мера]")


SELECT NON EMPTY
MEASURES.LOOKUPCUBEDEMO on columns
FROM [куб2] where [даты]



проблема в том что эта мера "MEASURES.LOOKUPCUBEDEMO" на это условие не реагирует --> where [даты]

Еще раз, медленно и последовательно.
Вы написали формулу LOOKUPCUBEDEMO, которая тянет из куба "куб1" просто всю сумму показателя "мера" за все даты.
Если Вы хотите получить за конкретную дату, месяц, день - Вам нужно передать для каждого значения LOOKUPCUBEDEMO запрос на соответствующее число.

Поэтому формула пишется по-другому. Я уже неоднократно написал, как именно передается в первый куб значение даты.
Еще раз.


with
MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб1]", "[Measures].[мера], " + [Измерение даты].[Иерархия даты].currentmember.uniquename + ")").

Вы выбираете LOOKUPCUBEDEMO за 1 января 2013.
[Измерение даты].[Иерархия даты].currentmember.uniquename в данном случае будет [Дата.[
Из куба2 в куб 1 улетает запрос.
...
Рейтинг: 0 / 0
mdx запрос
    #38139552
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPмугульuser6278,

with
MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб1]", "[Measures].[мера]")


SELECT NON EMPTY
MEASURES.LOOKUPCUBEDEMO on columns
FROM [куб2] where [даты]



проблема в том что эта мера "MEASURES.LOOKUPCUBEDEMO" на это условие не реагирует --> where [даты]

Еще раз, медленно и последовательно.
Вы написали формулу LOOKUPCUBEDEMO, которая тянет из куба "куб1" просто всю сумму показателя "мера" за все даты.
Если Вы хотите получить за конкретную дату, месяц, день - Вам нужно передать для каждого значения LOOKUPCUBEDEMO запрос на соответствующее число.

Поэтому формула пишется по-другому. Я уже неоднократно написал, как именно передается в первый куб значение даты.
Еще раз.


with
MEMBER MEASURES.LOOKUPCUBEDEMO AS

LOOKUPCUBE("[куб1]", "[Measures].[мера], " + [Измерение даты].[Иерархия даты].currentmember.uniquename + ")").

Вы выбираете LOOKUPCUBEDEMO за 1 января 2013.
[Измерение даты].[Иерархия даты].currentmember.uniquename в данном случае будет [Дата.[
Из куба2 в куб 1 улетает запрос.

[Измерение даты].[Иерархия даты].currentmember.uniquename в данном случае будет [Дата].[Г-М-Д].&[20130101], например.
Поэтому из куба 2 в куб 1 улетит запрос
([Measures].[мера], [Дата].[Г-М-Д].&[20130101]).

Выберете для LOOKUPCUBEDEMO 2 даты - в куб1 улетят 2 запроса для 20130101 и 20130102. И так далее.

Точно так же можно передавать значение фильтров куба2 на любые измерения, которые связаны в кубе1 с нужной меры.
Теперь точно все.
...
Рейтинг: 0 / 0
mdx запрос
    #38139599
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP,


Спасибо! все стало понятно !

WITH MEMBER MEASURES.LOOKUPCUBEDEMO AS


LOOKUPCUBE("[куб1]", "[Measures].[мера1], " + [Даты].[Год].&[2013].currentmember.uniquename + ")")


SELECT NON EMPTY
{MEASURES.LOOKUPCUBEDEMO,
[Measures].[мера2]
}

on columns
FROM [куб2] where [Даты].[Год].&[2013]


вернул ошибку

LOOKUPCUBEDEMO #Error
...
Рейтинг: 0 / 0
mdx запрос
    #38139619
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульAndy_OLAP,


Спасибо! все стало понятно !

WITH MEMBER MEASURES.LOOKUPCUBEDEMO AS


LOOKUPCUBE("[куб1]", "[Measures].[мера1], " + [Даты].[Год].&[2013].currentmember.uniquename + ")")


SELECT NON EMPTY
{MEASURES.LOOKUPCUBEDEMO,
[Measures].[мера2]
}

on columns
FROM [куб2] where [Даты].[Год].&[2013]


вернул ошибку

LOOKUPCUBEDEMO #Error

А где полный текст ошибки?
...
Рейтинг: 0 / 0
mdx запрос
    #38139640
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user6278,

Executing the query ...
Obtained object of type: Microsoft.AnalysisServices.AdomdClient.CellSet
Formatting.
Cell set consists of 2 rows and 1 columns.
Done formatting.
Execution complete
...
Рейтинг: 0 / 0
mdx запрос
    #38139648
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульAndy_OLAP,


Спасибо! все стало понятно !

WITH MEMBER MEASURES.LOOKUPCUBEDEMO AS


LOOKUPCUBE("[куб1]", "[Measures].[мера1], " + [Даты].[Год].&[2013].currentmember.uniquename + ")")


Опять на грабли встали.
Смотрите - выражение [Даты].[Год].&[2013].currentmember.uniquename не имеет смысла.
"[Даты].[Год].&[2013]" - это уже уникальное имя.

Получить Вы его можете, если задали [Даты].[Любая иерархия даты с упоминанием года].currentmember.
Выбираете в иерархии уровень года, задаете 2013 - в currentmember идет [Даты].[Год].&[2013], а вот уникальное наименование с учетом иерархии будет "[Даты].[Год].&[2013]", потому что на уровне иерархии Вы выбрали атрибут год и его значение.

Поэтому передаете просто [Измерение].[Любая иерархия нужного измерения с упоминанием нужного атрибута для выбора].currentmember.uniquename.

А в куб1 из куба2 уже "прилетают" нужные запросы - или "[Даты].[Год].&[2013]", или "[Даты].[Месяц].&[201301]", или "[Даты].[Дата].&[20130101]", все работает автоматически.


Профайлер SSAS запустите и посмотрите на текст простейших запросов MDX при работе формулы LOOKUPCUBE.
...
Рейтинг: 0 / 0
mdx запрос
    #38139650
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульuser6278,

Executing the query ...
Obtained object of type: Microsoft.AnalysisServices.AdomdClient.CellSet
Formatting.
Cell set consists of 2 rows and 1 columns.
Done formatting.
Execution complete
Вы можете выполнить свой MDX запрос в MSSMS или Visual Studio? Нужен текст ошибки обработки MDX.
...
Рейтинг: 0 / 0
mdx запрос
    #38139699
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user6278,

я делю запрос в SQL Server Management Studio

error list пустой
...
Рейтинг: 0 / 0
mdx запрос
    #38139711
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульuser6278,

я делю запрос в SQL Server Management Studio

error list пустой

При выполнении запроса, в SQL Server Management Studio в поле, где отображается сообщение #Error - при наведении мыши отображается текст ошибки.
...
Рейтинг: 0 / 0
mdx запрос
    #38139755
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user6278,

Не знал что так можно спасибо!

Мне кажется либо скобочки лишние, либо запятая :)
...
Рейтинг: 0 / 0
mdx запрос
    #38139780
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульuser6278,

Не знал что так можно спасибо!

Мне кажется либо скобочки лишние, либо запятая :)
Скобки не хватает вначале.
В кавычках должно идти ([Measures].[мера1],[измерение].[иерархия].currentmember.uniquename)

Поэтому в запросе поставьте открывающую скобку.

Я же в самом начале написал правильный синтаксис. Вы просто невнимательно смотрите.

CREATE MEMBER CURRENTCUBE.[Measures].[Показатель1]
AS LookupCube("куб_сосед"," ( [Measures].[показатель или мера из куба-соседа]
, "+[Измерение даты].[Иерархия даты].currentmember.uniquename+"
, "+[Измерение 2].[Иерархия измерения 2].currentmember.PrevMember.uniquename+" ) ")
...
Рейтинг: 0 / 0
mdx запрос
    #38139784
user6278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мугульuser6278,

Не знал что так можно спасибо!

Мне кажется либо скобочки лишние, либо запятая :)

У Вас не хватает одной открывающей скобки:

WITH MEMBER MEASURES.LOOKUPCUBEDEMO AS
LOOKUPCUBE("[Cube1]"," ( [Measures].[Value1],[Date].[Year]....)"
...
Рейтинг: 0 / 0
mdx запрос
    #38139801
мугуль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое Вам спасибо!

Вот правильный вид для потомков

WITH MEMBER MEASURES.LOOKUPCUBEDEMO AS


LookupCube("[куб1]","([Measures].[мера1], "+[Даты].[Год].currentmember.uniquename+")")



SELECT NON EMPTY
MEASURES.LOOKUPCUBEDEMO on columns

FROM [куб2] where [Даты].[Год].&[2013]
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
mdx запрос
    #39396588
Lucrecia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А не подскажете, можно ли таким запросом подконнектиться к кубу из другой базы? А с другого сервера?
В пределах одной БД все получается, но ни одна из попыток в качестве имени куба указать конструкцию вроде [DataBase].[MyCube], не проходит.
В SQL можно создавать и использовать ссылки на другие базы, а в mdx?
...
Рейтинг: 0 / 0
mdx запрос
    #39397125
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lucrecia,

нет
...
Рейтинг: 0 / 0
mdx запрос
    #39397461
Lucrecia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StarikNavy, спасибо. Жаль. Хотя, наверное, правильно - нечего нарушать общую структуру.
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / mdx запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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