Текущее время: Сб, май 03 2025, 03:14

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: BO Web Intelligence : как в отчете получить "left (full) outer join" между разными юниверсами
СообщениеДобавлено: Пн, фев 13 2012, 19:06 
Директор
Директор

Зарегистрирован:
Сб, мар 11 2006, 14:59
Сообщения: 1259
Пол: Мужской
Все борюсь с этим странным BO WEBi.

есть один провайдер данных вида:
ID, ID2, name, status
1, 8, job1, success
2, 9, job1, error
3, 10, job2, error
4, 11, job2, running
5, 14, job4, running

есть второй провайдер (в другой базе на другом сервере):
ID2, name, unit
8, job1, ru01
9, job1, ru02
9, job1, ru03
11, job2, ru04
12, job3, ru05

Хочу получить отчет:
name, ID, ID2, status, unit
job1, 2, 9, error, ru02
job1, 2, 9, error, ru03
job2, 4, 11, running, ru04
job3, null, 12, null, ru05
job4, 5, 14, running, null


И вот тут возникли две проблемы.
1. Вообще говоря, для склейки достаточно ID2, но WEBi не дает помещать в отчет измерения из разных запросов, если они не смерджены. Поэтому пришлось также смерджить name. Вот только проблема, в моем случае мне крайне желательно иметь full outer join и если в отчет вытащить только соединенные измерения, то он получается, если я не ошибся, а вот стоит только вытащить тот же unit - и все, остаются только значения name и ID2 из второго юниверса. То есть строку job4, 5, 14 и т.д. я уже не вижу, а ее видеть надо, там задание просто, которое не зависит от юнита, а статусы надо показывать по всем заданиям. Причем даже устроит, если не будет предпоследней строки (без статуса не сильно нужны эти строки), но штука в том, что статусы только в первом юниверсе, а юниты - во втором и причем юнит нельзя сделать атрибутом, поскольку юниты в ключе во втором юниверсе. Как быть-то, может кто подсказать?

2. В прочессе борьбы решил сначала опустить первый вопрос и для начала согласиться с тем, что отображаются только те задания, которые есть в юниверсе с юнитами (во втором). Статус определил как атрибут (detail) к ID2 (потому что просто добавлять status оно уже не дает, когда в отчет добавлен unit). Далее вытаскиваю в репорт name, а ID2 пишу как max(ID2), а вот дальше мне надо добавить status... если кидаю его просто, то оно размножает строки (похоже на то, что ID2 вытащили в отчет, но само поле скрыли, а оставили только его атрибут), пробовал писать, что-то типа if ID2 = max(ID2) then status, но тогда оно начало писать #multivalue, пробовал ставить в else ноль или пробел и потом брать всю конструкцию в max (и в min) - пишет в отчете ноль или пробел (в обоих случаях). Даже не знаю - как тут быть, натолкните? Основная идея в том, что нужно отобразить значение статуса, соответствующее строке из первого юниверса, где идентификатор совпадает с max(ID2). Это подзапросом надо или может есть какая функция, позволяющая получить значение атрибута (detail) по значению признака, к которому этот атрибут привязан?


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB