我需要澄清关键字“引擎”以及它背后的功能。我认为引擎是一个更大的东西——数据库的一个更小的组件。就像“汽车发动机”位于汽车内部一样。
那么 dwh 引擎可以插入更大的数据仓库吗?Olap引擎可以用作实际olap db的组件吗?
我在 Medium.com 上发现了这个数据景观图像,有 2 个不同的类别:olap db 和 olap 引擎。
由于它们具有重叠的功能,有什么区别?
OLAP 多维数据集是数据的重复还是只是对原始表的引用?或者我可以控制它吗?
我正在尝试跨标准偏差和平均值等一系列数据计算各种统计计算。
数据来自许多不同的“数据源”。这些都保存在一个维度中。
我尝试使用此示例STDDEVP
中所示的函数,该函数对度量进行操作。
但结果是错误的。我认为这是错误的,因为它处理的是总数而不是原始数据。[Sum of Values] 是对事实表中的数据求和的标准聚合度量。
按照格雷格提供的链接,我现在正在使用这个:
CREATE MEMBER CURRENTCUBE.[Measures].[Standard Deviation]
AS (([Measures].[Sum of Values]^2 - (([Measures].[Sum of Values]^2)/[Measures].[Count of Values])/[Measures].[Count of Values])^0.5),
FORMAT_STRING = "#,##0.00;-#,##0.00", VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'Fact TS Data';
这给了我这个:
这仍然是不正确的。
使用 SQL 如果我使用STDDEV
以下查询计算 Air Temp:
SELECT stdevp([Value])
FROM [EnvironmentalDataMart].[DDS_HILLTOP].[factTimeSeries]
where [DETL_DataSourceSurrogateKey] = 78
我得到:6.13770334742149
如何让 MDX 查询计算STDDEV
我的维度中的每个数据源?
我也尝试过使用“无聚合”的 Measure,但它没有返回任何内容。
在进行分析查询时,任何人都可以向我展示 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
根据我关于将非数字值作为衡量标准的研究,我发现非数字不是最佳值。
所以我计划保持数值。我的场景是“员工出勤”,衡量标准可能是“临时休假”、“病假”、“不知情休假”、“补偿”。
是我需要为所有这些(4 个措施)维护列,并将根据相应用户的状态进行更新。如果我保持这样的态度,则意味着如果添加新的意味着它将像立方体的结构发生变化一样。
这将是一个好的解决方案还是任何可用的最佳解决方案?
同时具有 OLTP 和 OLAP 数据库的系统会定期将数据从 OLTP 数据库移动到 OLAP 数据库,以便可以基于 OLAP 数据库生成报告。
这个过程的官方术语是什么?在线上有这个过程的概述吗?
我浏览了整个网站列表,这是我认为最好的匹配。这实际上与数据库管理无关,更像是数据库设计。请原谅我并将我指向正确的站点。
我正在为基本的 BI 系统设计一个数据库。此刻我碰壁了,就是这样(使用虚拟数据进行解释):
假设我的事实表包含以下信息:
John Doe flew from LAX to ATL on 1 Nov in flight AB-123
维度及其属性为:
现在,我可以很容易地生成这样的报告:
Airport --> LAX DFW ORD ATL Total
Gold 50 40 10 25 125
Silver 240 300 95 140 775
Bronze 1000 1500 800 1800 5100
Total 1290 1840 905 1965 6000
使用如下查询:
select fd.club, ad.code, count(f1.id) from flyer fd, airport ad, fact1 f1
where fd.id = f1.fid and ad.id = f1.aid and month(f1.date) = 10
group by f1.club, ad.code;
但我的问题来自传单的“俱乐部”状态是一个移动目标。今天处于黄金状态的传单可能在 10 月份处于白银状态,所以我在这里将他算在错误的组中。因此,我想我需要一个像这样的单独事实表:
John Doe entered Bronze club on 8/15
John Doe entered Silver club on 10/20
...
“俱乐部”作为原始传单维度的属性退出。相反,出现了一个新的俱乐部维度。
然后为了生成我需要的报告,我加入了这两个事实表。
我在正确的轨道上吗?或者是否有其他更简单的解决方案?我能想到的另一种选择是将俱乐部包含在原始事实表中,在 ETL 过程中处理它。所以事实变成了:
John Doe of Silver Club flew from LAX to ATL on 1 Nov in flight AB-123
请让我知道哪种方法更好,或者是否有第三种方法。