Является ли OLAP / MDX хорошим способом обработки данных с неизвестными значениями на разных уровнях агрегации? - PullRequest
1 голос
/ 09 сентября 2011

Я новичок в OLAP, поэтому, возможно, я не знаю правильной терминологии для использования в этом вопросе, но потерпите меня здесь.

Я работаю с большим количеством иерархических, многомерных данных, в которых родительские / агрегированные ячейки в основном содержат данные, но в дочерних / конечных ячейках часто отсутствуют данные (значения атрибутов неизвестны, но не равны нулю). В настоящее время я использую сочетание сценариев и SQL для работы с ним, но это становится громоздким. Кажется, что кубы OLAP и MDX лучше подходят для структуры данных, но не обязательно для задач , которые мне нужно сделать. Например:

  • OLAP в основном предназначен для отчетов только для чтения; Я делаю много модификаций данных в пакетных процессах
  • OLAP, похоже, нравится иметь полные данные конечного уровня для расчета агрегатов; в моих данных отсутствуют значения на разных уровнях

Примеры того, что я хочу сделать:

  • Загрузка оригинальных многоуровневых данных в куб и сохранение известных родителей; не перезаписывайте и не отображайте их значения в виде вычисленных совокупностей дочерних элементов (которые могут быть неполными).
  • Создание / обновление / удаление ячеек в кубе на основе результатов сложных запросов / объединений других кубов. Иногда необходимо преобразовать куб, чтобы использовать немного другое определение размера.
  • Пользователи требуют оценки для неизвестных значений. Я могу создавать достойные оценки, но мне нужно их корректировать, чтобы они соответствовали известным родителям / детям по всем параметрам и уровням (это гораздо сложнее, чем кажется). Я уже делаю это, но это включает в себя извлечение данных из СУБД в пользовательский исполняемый файл.
  • Запросы и вычисления должны быть в состоянии правильно обрабатывать неизвестные. В идеале можно легко запрашивать, какая часть агрегированного значения ячейки состоит из оценочных и известных значений, возможно вычислять статистику достоверности / ошибок или проверять, можем ли мы получить точное значение для неизвестного, когда у него есть известный родительский элемент и все известные братья и сестры и т. д.
  • Данные могут быть большими ... до десятков миллионов строк таблицы фактов. Производительность должна быть достойной для пакетных заданий (минуты в порядке, часы не так много).

Может ли сервер OLAP и MDX быть хорошим инструментом для такого типа работы? Существуют ли какие-либо другие инструменты, которые бы хорошо работали для манипулирования иерархическими / многомерными / заполненными пробелами данными?

1 Ответ

1 голос
/ 09 сентября 2011

Вот некоторые потребности в системе OLAP, интересные и сложные :-):

- загрузка оригинальных многоуровневых данных в куб и сохранение известных родителей;не перезаписывайте и не отображайте их значения как вычисленные агрегаты дочерних элементов (которые могут быть неполными).

Вы можете изменить способ агрегирования кубов значений в иерархии.Делать это в одной иерархии - это хорошо, делать это, используя несколько иерархий, может начать усложняться.Стоит дважды проверить, существует ли математическое «уникальное» решение проблемы с несколькими «специальными» иерархиями.

Создание / обновление / удаление ячеек в кубе на основе результатов сложных запросов / объединенийдругие кубики.Иногда необходимо преобразовать куб, чтобы использовать немного другое определение измерения.

Здесь вы можете использовать обратную запись ( Функция MDX Обновление куба ), но я думаю, что это слишком простодля ваших нужд.Реализация зависит от поставщиков.Обратите внимание, что создание ячеек может убить вашу память, поскольку для больших кубов вы можете быстро разместить миллионы ячеек в субкубе.

В чем редкость вашей модели?-> количество ячеек с данными / общее количество ячеек

Некоторые модели имеют разреженность 1e-30, здесь легко взорваться, если вы обновляете все ячейки; -).

Пользователи требуют оценки для неизвестных значений.Я могу создавать достойные оценки, но мне нужно их корректировать, чтобы они соответствовали известным родителям / детям по всем параметрам и уровням (это гораздо сложнее, чем кажется).Я уже делаю это, но это включает в себя извлечение данных из RDBMS в пользовательский исполняемый файл.

Это выглядит сложным. Здесь возникает проблема сложности алгоритмов, возможного решения с использованием языка MDX.и как они совпадают с OLAP engige (достаточно быстро).Вы берете на себя риск взрыва, но посмотрите на Функция Scope

Данные могут быть большими ... до десятков миллионов строк таблицы фактов.Производительность должна быть приличной для пакетных заданий (минуты в порядке, часы не так много).

Это не должно быть настоящей проблемой ..

Чтобы ответить на ваш вопрос, я не понимаютак не думаю.У нас похожая проблема - в области генетики - и мы собираемся решить эту проблему, «добавив» специальный модуль расчета в наше решение OLAP.Это интересный действующий проект

...