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. nginx配置.htaccess伪静态

    https://blog.csdn.net/moqiang02/article/details/37695775

  2. 20165308 2017-2018-2 《Java程序设计》第三周学习总结

    20165308 2017-2018-2 <Java程序设计>第三周学习总结 知识点 类 构造方法与对象的创建 类与程序的基本结构 参数传值 对象的组合 实力成员与类成员 方法重载 thi ...

  3. mysql之 重建GTID下主从关系

    主库:mysqldump -uroot -pmysql -S /tmp/mysql.sock1 --single-transaction --add-drop-database --master-da ...

  4. 笔记本centos 取消 关闭盖子自动挂起

    修改 vi /etc/systemd/logind.conf HandleLidSwitch=ignore ( 操作盖子开关=忽略  ) 这样关闭盖子 就不会挂起了.

  5. Fixed-point multiplication (C166 A*B/B)

    I want to multiply two fixed point numbers. After the multiplication I have to shift the result so t ...

  6. HTTP 状态码的完整列表

    一.1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码.SC_CONTINUE = 100; 100(继续)请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余 ...

  7. matchmove流程中修改Maya相机数据的脚本

    matchmove组的流程涉及到syntheyes与maya,nuke交接的问题.syntheyes会生成包含去畸变节点的nuke工程 和带跟踪信息的maya工程.在nuke工程上渲染得到去畸变的序列 ...

  8. php访问SQLserver时加载的dll

    php_sqlsrv_55_ts.dll 线程t安全sphp_sqlsrv_55_nts.dll 非n线程t安全s

  9. 黄聪:FFmpeg视频转码技巧之-crf参数(H.264篇)

    昨天,有个朋友给我出了个难题:他手上有一个视频,1080P的,49秒,200多兆:要求在确保质量的情况下把文件压缩到10M以内. 这是什么概念呢?按照文件大小10M来计算,码率是:10 x 8 / 4 ...

  10. 解析Javascript事件冒泡机制(转) 本文转自:http://blog.csdn.net/luanlouis/article/details/23927347

    本文转自:http://blog.csdn.net/luanlouis/article/details/23927347 1. 事件 在浏览器客户端应用平台,基本生都是以事件驱动的,即某个事件发生,然 ...