Alguém pode me mostrar um bom exemplo das vantagens do MDX sobre o SQL comum ao fazer consultas analíticas? Eu gostaria de comparar uma consulta MDX com uma consulta SQL que fornece resultados semelhantes.
Embora seja possível converter alguns deles em SQL tradicional, seria necessário a síntese de expressões SQL desajeitadas, mesmo para expressões MDX muito simples.
Mas não há citação nem exemplo. Estou 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 o Apache Kylin + Hadoop )
Contexto: estou tentando convencer minha empresa de que deveríamos consultar um banco de dados OLAP em vez de um banco de dados OLTP. A maioria das consultas SIEM faz uso pesado de agrupar por, classificar e agregar. Além do aumento de desempenho, acho que as consultas OLAP (MDX) seriam mais concisas e mais fáceis de ler / gravar do que o SQL OLTP equivalente. Um exemplo concreto levaria o ponto para casa, mas eu não sou especialista em SQL, muito menos MDX ...
Se ajudar, aqui está um exemplo de consulta SQL relacionada ao SIEM para eventos de firewall que ocorreram 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