首页 > 解决方案 > MYSQL中按时间段链接的事实与时间维度表

问题描述

我习惯在 PowerBI 中工作,这在处理星型模型、事实维度和性能问题方面有很大帮助。

但是,现在我必须“创建”一个时间维度来计算MySQL中的一些指标。由于某些原因,我们无法将 PowerBI 连接到其中,因此大部分工作必须手动完成。

事实上,我确实有一个时间维度表(链接),太棒了。我有几个其他维度表(例如业务单位、部门等),它们使用 view 链接到 Fact 表。此视图包含某些任务的开始日期结束日期

因此,我使用匹配日期(大于开始日期且小于结束日期)的 LEFT JOIN 创建了时间线和事实表之间的关系,例如:

SELECT `time_dimension`.`year` AS `year`,
`time_dimension`.`month` AS `month`,
`time_dimension`.`day` AS `day`,
`view-entry-team_average`.`Business Unit` AS `Business Unit`,
`view-entry-team_average`.`Department` AS `department`,
`view-entry-team_average`.`team` AS `team`, 

SUM(`view-entry-team_average`.`team_average`) AS `Team Total by Date`, <-- this is the important part

`time_dimension`.`db_date` AS `db_date`,..... all ids are here 
FROM (`time_dimension`
LEFT JOIN `view-entry-team_average` ON(((`time_dimension`.`db_date` >= `view-entry-team_average`.`start_date`) AND (`time_dimension`.`db_date` < `view-entry-team_average`.`end_date`))))

我不知道是否有更好的方法将视图(开始和结束日期)连接到时间维度一

之后,我使用MySQL WITH ROLLUP来汇总数据,按 business_unit_id 和 department_id 和 team_id 分组,以便按每个维度提供“概览”。

伟大的!它适用于少量数据,包括 ROLLUP。

问题

但是,在评估数百个团队时,在 6 个月内,它停止响应我所做的任何查询,并且 phpMyAdmin 停止响应,即使我打开一个新窗口也是如此。由于它是一个云服务器,我不确定如何从该服务器中提取更多信息。然后,如果我将评估期缩短一个月,那就可以了。

有没有人已经使用MySql在事实(基于一段时间)和时间维度之间建立关系?有没有人使用过这个带有ROLLUP功能的解决方案?有谁知道可以告诉我的任何材料/链接/样本?

标签: mysqlquery-performancedimensionsrollup

解决方案


推荐阅读