Кто-нибудь может показать мне хороший пример преимуществ MDX по сравнению с обычным SQL при выполнении аналитических запросов? Я хотел бы сравнить запрос MDX с запросом SQL, который дает аналогичные результаты.
Хотя некоторые из них можно перевести в традиционный SQL, часто требуется синтез неуклюжих выражений SQL даже для очень простых выражений MDX.
Но нет ни цитирования, ни примера. Я полностью осознаю, что базовые данные должны быть организованы по-другому, и OLAP потребует больше обработки и хранения для каждой вставки. (Мое предложение - перейти с СУБД Oracle на Apache Kylin + Hadoop )
Контекст: я пытаюсь убедить мою компанию, что мы должны запрашивать базу данных OLAP вместо базы данных OLTP. Большинство запросов SIEM интенсивно используют группирование, сортировку и агрегирование. Помимо повышения производительности, я думаю, что запросы OLAP (MDX) были бы более краткими и более легкими для чтения / записи, чем эквивалентный OLTP SQL. Конкретный пример поможет понять, но я не эксперт по SQL, а тем более по MDX ...
Если это поможет, вот пример SQL-запроса, связанного с SIEM, для событий брандмауэра, произошедших на прошлой неделе:
SELECT 'Seoul Average' AS term,
Substr(To_char(idate, 'HH24:MI'), 0, 4)
|| '0' AS event_time ,
Round(Avg(tot_accept)) AS cnt
FROM (
SELECT *
FROM st_event_100_#yyyymm-1m#
WHERE idate BETWEEN trunc(sysdate, 'iw')-7 AND trunc(sysdate, 'iw')-3 #stat_monitor_group_query#
UNION ALL
SELECT *
FROM st_event_100_#yyyymm#
WHERE idate BETWEEN trunc(sysdate, 'iw')-7 AND trunc(sysdate, 'iw')-3 #stat_monitor_group_query# ) pm
GROUP BY substr(to_char(idate, 'HH24:MI'), 0, 4)
|| '0'
UNION ALL
SELECT 'today' AS term ,
substr(to_char(idate, 'HH24:MI'), 0, 4)
|| '0' AS event_time ,
round(avg(tot_accept)) AS cnt
FROM st_event_100_#yyyymm# cm
WHERE idate >= trunc(sysdate) #stat_monitor_group_query#
GROUP BY substr(to_char(idate, 'HH24:MI'), 0, 4)
|| '0'
ORDER BY term DESC,
event_time ASC