在进行分析查询时,有人可以向我展示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