1. 时间维度表结构

/*==============================================================*/
/* Table: dim_date_day 日期维度_天 */
/*==============================================================*/
DROP TABLE IF EXISTS dw_realestate_sales.dim_date_day;
CREATE TABLE dw_realestate_sales.dim_date_day
(
date_key INT NOT NULL DEFAULT '' COMMENT '维度主键',
alternate_key DATE NOT NULL DEFAULT '1900-01-01' COMMENT '自然日日期值',
day_number_of_week TINYINT DEFAULT '' COMMENT '星期中的第几天',
day_name_of_week VARCHAR(20) DEFAULT '' COMMENT '星期中名称',
day_number_of_month TINYINT DEFAULT '' COMMENT '月份中的天序号,从1开始',
day_number_of_year INT DEFAULT '' COMMENT '一年中的天数序号,从1开始',
week_number_of_year TINYINT DEFAULT '' COMMENT '年中的星期序号,从1开始',
month_name VARCHAR(20) DEFAULT '' COMMENT '月份名称',
month_number_of_year TINYINT DEFAULT '' COMMENT '月份序号,从1开始',
quarter_of_year TINYINT DEFAULT '' COMMENT '季度序号',
year_number INT DEFAULT '' COMMENT '公历年数字'
)
UNIQUE KEY(date_key)
DISTRIBUTED BY HASH(date_key) BUCKETS 2
properties
(
"replication_num"="3"
);

2. C#生成预置数据代码

  private static void generate_dim_date_data()
{
DateTime startDate = new DateTime(, , );
DateTime endDate = new DateTime(, , ); StringBuilder sb = new StringBuilder();
GregorianCalendar gc = new GregorianCalendar();
//int weekOfYear = gc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
//return weekOfYear; int linecount = ;
while (startDate < endDate)
{
// like 20050701,2005-07-01,6,Friday,1,182,27,July,7,3,2005
sb.Append(string.Format("{0}{1:D2}{2:D2}", startDate.Year, startDate.Month, startDate.Day)).Append(',').
Append(startDate.ToString("yyyy-MM-dd")).Append(',').
Append((int)startDate.DayOfWeek+).Append(',').
Append(GetWeekDayName(startDate.DayOfWeek)).Append(',').
Append(startDate.Day).Append(',').
Append(startDate.DayOfYear).Append(',').
Append(gc.GetWeekOfYear(startDate, CalendarWeekRule.FirstDay, DayOfWeek.Monday)).Append(',').
Append(GetMonthName(startDate.Month)).Append(',').
Append(startDate.Month).Append(',').
Append((startDate.Month - ) / + ).Append(',').
Append(startDate.Year).AppendLine();
linecount+=;
startDate = startDate.AddDays();
//if (linecount == 100)
//{
// Write(sb);
//}
} Write(sb);
} public static void Write(StringBuilder sb)
{
FileStream fs = new FileStream("c:\\tmp\\dim_date.txt", FileMode.OpenOrCreate);
//获得字节数组
byte[] data = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
//开始写入
fs.Write(data, , data.Length);
//清空缓冲区、关闭流
fs.Flush();
fs.Close();
sb.Clear();
} private static string GetWeekDayName(DayOfWeek dayofWeek)
{
string[] Day = new string[] { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" };
string week = Day[Convert.ToInt32(dayofWeek.ToString("d"))].ToString();
return week;
} private static string GetMonthName(int monthNumber)
{
string[] monthNames = new string[] { "一月份", "二月份", "三月份", "四月份", "五月份", "六月份", "七月份", "八月份", "九月份", "十月份", "十一月份", "十二月份" };
return monthNames[monthNumber - ];
}

3. 结果预览

C# 生成日期维度值的更多相关文章

  1. Sqlserver存储过程生成日期维度

    话不多说,之前已经有一篇日志是利用oracle的存储过程生成日期维度表,接下来我们就用sqlserver来实现这个操作,如下面的步骤所示 1:创建日期维度表(Dim_time) USE [DW] GO ...

  2. Oracle存储过程生成日期维度

    在数据仓库的创建过程中,往往需要创建日期维度来为以后的数据分析来服务. 方面从多个日期角度: 如:年-月-日,年-季度-月-日,年-周-日 创建表的脚本如下(存储过程的创建过程中有一步操作是向time ...

  3. SQL生成日期维度(到小时)

    #建表语句: CREATE TABLE [dbo].[Dim_日期3]( ) NOT NULL, [年] [int] NULL, ) NULL, ) NULL, ) NULL, ) NULL, ) N ...

  4. DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate TIME Dimension)

    DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate TIME Dimension) 难度: ★☆☆☆☆(1星) 适用范围: ★★★★★(5星) 这个时间系列想 ...

  5. DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate Date Dimension)

    跟大家的交流是我的动力. :) DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate Date Dimension) 难度: ★☆☆☆☆(1星) 适用范围: ★ ...

  6. PowerBI 应用时间智能(生成日期表)

    简介 Power BI Desktop -是一款由微软发布的自助式商业智能工具,功能强大.易于使用.其中还可以通过微软云连多个数据源并且使用数据源来创建可视化表盘. 但是几乎所有的BI都需要展示如何随 ...

  7. MySQL学习笔记:生成时间维度表

    # ---- 对应时间戳怎么生成的? ---- /*TIME_CD TIME_CD1000000 000005000001 000005000002 000005000003 000005000004 ...

  8. Cognos两种建模工具对于复杂日期维度的处理比较(下)

    本文继Cognos两种建模工具对于复杂日期维度的处理比较(上)之后将介绍一下Cognos中建模工具Transform对复杂日期维度的处理. 二:Transform建模对于复杂日期维度的处理 为了书写效 ...

  9. cognos report利用文本框提示优化日期维度

    为了尽量减少手工对日期维度的维护,在日期维度表中年份已经到了2099年,把年份作为下拉框或者月份作为下拉框的时候,选择起来颇为麻烦(当然也可以在此基础之上设置默认为当前月) 如图:提示页面以及html ...

随机推荐

  1. PowerDesigner V16.5 安装及汉化

    一.power designer是什么以及是干什么的? power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具.分别从概念数据模型(Conceptual Dat ...

  2. try catch 用法实例

  3. FastAdmin Git 开发更新流程

    更加简洁的流程 FastAdmin 使用 Git 更新的新用法 https://www.cnblogs.com/F4NNIU/p/9120365.html

  4. MongoDB之 写安全(Write Concern)

    MongoDB Write Concern,简称MongoDB写入安全机制,是一种客户端设置,用于控制写入安全的级别.Write Concern 描述了MongoDB写入到mongod单实例,副本集, ...

  5. Percona XtraDB Cluster 的一些使用限制(PXC 5.7)

    Percona XtraDB Cluster有众多的优秀特性,使得mysql集群得以轻松实现.但是不要忽略了它的一些限制.如果你无法接受,或者你的应用程序或数据库(比如使用了memory引擎)对限制无 ...

  6. py-day2-2 python 元祖

    #元祖 tuple v = 'abddbwdhi' b = tuple(v) print(b) ('a', 'b', 'd', 'd', 'b', 'w', 'd', 'h', 'i') # 元素不可 ...

  7. Intellj(IDEA)中修改No artifacts configured问题

    如下图,配置Deployment的时候,出现No artifacts configured错误 解决的方法

  8. spring邮件发送

    1,Emaill类: package com.learn.jsp.pojo; /** * 邮件基本信息 * @author kevin * */public class Email { private ...

  9. 【java】数据类型

    逻辑型boolean: boolean类型数据只能取值True或False,不可以0或者非0替代True或False,这点与c语言不同. 字符型char: 一个char类型的字符占两个字节.一个汉字也 ...

  10. 【python】多线程详解

    一.进程与线程关系 一个进程至少包含一个线程. 二.线程基础 1.线程的状态 线程有5种状态,状态转换的过程如下图所示: 2.线程同步(锁) 多线程的优势在于可以同时运行多个任务(至少感觉起来是这样) ...