Alguém pode me mostrar um bom exemplo das vantagens do MDX sobre o SQL regular ao fazer consultas analíticas? Gostaria de comparar uma consulta MDX com uma consulta SQL que fornece resultados semelhantes.
Embora seja possível traduzir alguns deles em SQL tradicional, isso frequentemente exigiria a síntese de expressões SQL desajeitadas, mesmo para expressões MDX muito simples.
Mas não há citação nem exemplo. Estou plenamente ciente de que os dados subjacentes devem ser organizados de maneira diferente e o OLAP exigirá mais processamento e armazenamento por inserção. (Minha proposta é passar de um Oracle RDBMS para Apache Kylin + Hadoop )
Contexto: Estou tentando convencer minha empresa de que devemos consultar um banco de dados OLAP em vez de um banco de dados OLTP. A maioria das consultas SIEM faz uso intenso de agrupamento, classificação e agregação. Além do aumento de desempenho, acho que as consultas OLAP (MDX) seriam mais concisas e fáceis de ler/gravar do que o SQL OLTP equivalente. Um exemplo concreto deixaria claro, mas não sou especialista em SQL, muito menos em MDX...
Se ajudar, aqui está um exemplo de consulta SQL relacionada ao SIEM para eventos de firewall que aconteceram na semana passada:
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