mysql - 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功能的解决方案?有谁知道可以告诉我的任何材料/链接/样本?
解决方案
推荐阅读
- bash - 在多个子目录下执行多个同名的shell脚本
- javascript - TypeError:event.preventDefault 不是函数
- sql - 我可以在 access.form 而不是每个 form.event 中 c.connect 一次吗?
- css - 在两列行css中对齐div
- javascript - 在 Vercel 上托管时 NuxtJS 生产中的 URIError
- google-chrome - 如何设置 Chrome 插件清单,以便内容脚本仅在某些子域上运行?
- javascript - 在 Cypress 中,如何从定义的数组列表中单击特定值?
- python-3.x - 我正在尝试通过串行通信读取传感器数据,但是当我尝试读取它时,它只是在 python 中运行,但它没有显示任何值
- php - 从 Firebase Admin SDK (PHP) 调用云函数
- powerbi - 计算每行的列日期和最小切片器日期之间的日期差异