¿Alguien puede mostrarme un buen ejemplo de las ventajas de MDX sobre SQL normal al hacer consultas analíticas? Me gustaría comparar una consulta MDX con una consulta SQL que dé resultados similares.
Si bien es posible traducir algunos de estos al SQL tradicional, con frecuencia requeriría la síntesis de expresiones SQL torpes incluso para expresiones MDX muy simples.
Pero no hay ni una cita ni un ejemplo. Soy plenamente consciente de que los datos subyacentes deben organizarse de manera diferente, y OLAP requerirá más procesamiento y almacenamiento por inserción. (Mi propuesta es pasar de un RDBMS de Oracle a Apache Kylin + Hadoop )
Contexto: estoy tratando de convencer a mi empresa de que deberíamos consultar una base de datos OLAP en lugar de una base de datos OLTP. La mayoría de las consultas SIEM hacen un uso intensivo de agrupar, ordenar y agregar. Además del aumento de rendimiento, creo que las consultas OLAP (MDX) serían más concisas y más fáciles de leer / escribir que el SQL OLTP equivalente. Un ejemplo concreto llevaría el punto a casa, pero no soy un experto en SQL, mucho menos MDX ...
Si ayuda, aquí hay una consulta SQL de muestra relacionada con SIEM para eventos de firewall que ocurrieron la semana pasada:
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