在进行分析查询时,任何人都可以向我展示 MDX 相对于常规 SQL 的优势的一个很好的例子吗?我想将 MDX 查询与给出相似结果的 SQL 查询进行比较。
虽然可以将其中的一些转换为传统 SQL,但即使对于非常简单的 MDX 表达式,也经常需要合成笨拙的 SQL 表达式。
但是既没有引用也没有例子。我完全清楚底层数据必须以不同的方式组织,并且 OLAP 每次插入都需要更多的处理和存储。(我的建议是从 Oracle RDBMS 迁移到Apache Kylin + Hadoop)
背景:我试图说服我的公司,我们应该查询 OLAP 数据库而不是 OLTP 数据库。大多数 SIEM 查询大量使用分组、排序和聚合。除了性能提升之外,我认为 OLAP (MDX) 查询会比等效的 OLTP SQL 更简洁、更容易读/写。一个具体的例子可以说明这一点,但我不是 SQL 专家,更不用说 MDX ......
如果有帮助,以下是针对过去一周发生的防火墙事件的示例 SIEM 相关 SQL 查询:
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