回答
您没有指定是使用第三方ETL应用程序还是使用自己的。
如果您使用的是第三方应用程序,很可能会有一个窗口小部件或功能可用于帮助生成日期维度。例如,使用Pentaho数据集成工具包,请参阅O'Reilly数据库博客中的这篇优秀文章:http://www.oreillynet.com/databases/blog/2007/09/kettle_tip_using_java_locales.html
如果您正在自行设计,那么在两个给定日期之间生成每个日期都是非常简单的练习。存储过程将更具性能,但使用您正在实现ETL的语言编写函数将更易于维护。 @hafichuk发布的有用链接是如何在存储过程中进行生成的很好例子。由于您正在设计模式,因此您必须编写符合日期维度定义的自己的过程,或者至少修改这些过程。
最后,确保为您提供选择的解决方案的灵活性 - 即使每个生产实例构建的“世界”只生成一次日期,但在相同日期维度中还会有很多其他时间代码将需要使用。 (测试运行,演示/分段部署,集成测试套件......)因此,它需要足够快和/或足够灵活,以便它不是瓶颈。使用ETL语言生成日期维度,并在整个适用日期范围的每个集成测试开始时这样做会变得老旧,快速。
我还想提一提,你会想要注意常见的日期/时间边缘情况,如周编号(年份何时翻转)和时区(如果您的企业时间是太平洋地区,则从上午6点开始的utc链接到utc或上一日期的日期)。前者与生成维度直接相关 - 通常你会有一个“星期编号”字段 - 而后者更多的是在转换期间处理日期维度。 – checkorbored
您绝对应该在Azure数据市场上查看此free date dimension feed。
这是一个日期表饲料设计用于导入到Excel PowerPivot模型,但也可以很容易地用于其他目的地(例如像MySQL表)。
该表包含特别适用于时间商业智能应用程序的列,并包含帮助创建基本的通用日期维度的通用英语语言列。
它还包含其他几种语言(包括美国,希伯来语,丹麦语,德语和保加利亚语以及其他语言)。
- 1. 优化mysql日期生成器?
- 2. Snowflaking日期维度
- 3. 使用生成的日期列表比较列日期列 - MYSQL
- 4. 日期/时间维度
- 5. MySQL月度日期
- 6. 日期范围的F#生成器?
- 7. 使用java生成JasperReports生成mysql日期时间格式
- 8. F#生成日期
- 9. Asp.net日历 - 生成日期
- 10. MDX - 从另一个日期维度计算一个日期维度
- 11. 在mysql中使用存储过程插入日期维度日期时出错
- 12. symfony2表单生成器日期类型
- 13. 日期自然语言生成器(Java)
- 14. 报表生成器3日期格式
- 15. 将日期维度的成员与常量进行比较
- 16. 如何生成日期付款日期
- 17. 加入到尚未指定日期的日期维度
- 18. 生成开始日期和结束日期之间的日期
- 19. 如何随机生成特定的日期之间的日期在MySQL
- 20. MySQL月度报告日期
- 21. 生成二维数组的梯度图
- 22. 计算成员在两个日期维度
- 23. 加载数据到维度日期表
- 24. 日期表/维度查询和索引
- 25. 日期维度和累计月
- 26. MDX使用多个日期维度
- 27. 生成两个日期
- 28. 生成一系列日期
- 29. 生成随机日期
- 30. 生成每周日期
这是你要找的吗? http://www.dwhworld.com/2010/08/date-dimension-sql-scripts-mysql/ – hafichuk
或者也许这个存储过程? http://www.amadeus-software.com/html/articles/date_dimension.html – hafichuk