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. ksonnet 一个简化编写以及部署kubernetes的工具

    ksonnet 是一个基于jsonnet的快速简化kubernetes yaml 配置的工具,可以实现配置的复用 同时也包含一个registry 的概念,可以实现可复用组件的分发,同时支持helm 环 ...

  2. IBM websphere MQ使用说明

    百度文库: IBM websphere MQ使用说明 IBM MQ安装和配置

  3. python 简明教程 【转】

    转自:https://learnxinyminutes.com/docs/python/ # Single line comments start with a number symbol. &quo ...

  4. GlusterFS学习

    环境准备 3台机器,每个机器双网卡,每个机器还需要额外添加1个10GB的磁盘用于测试 机器系统版本是centos6.6 [root@gluster-1-1 ~]# uname -rm 2.6.32-5 ...

  5. style-loader、css-loader、mini-css-extract-plugin 区别

    项目 区别 css-loader 处理 css 文件 style-loader 把 js 中 import 导入的样式文件代码,打包到 js 文件中,运行 js 文件时,将样式自动插入到<sty ...

  6. openstack 开启 spice远程连接

    openstack 默认开的远程控制是novnc 这里是用kolla初建的openstack nova_console vi /etc/kolla/globals.yml ... # Valid op ...

  7. centos7使用163 yum源

    一般是下载 .repo 源即可,但有时候我们需要安装一些额外的包,就需要下载 Extra Packages for Enterprise Linux (EPEL) 源, 比如我们需要用 yum 安装 ...

  8. Sql语句的优化摘要

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  9. 解决iScroll横向滚动区域无法拉动页面的问题

    近期项目中使用iScroll遇到一个问题,在设定wrapper为横向滚动时,如果你手指放在该区域,将无法拉动页面,也就是说该区域取消了默认事件.这个体验是实在是无法接受,特别是页面中有多个横向滚动区域 ...

  10. GetPostBackEventReference加RaisePostBackEvent实现自定义控件中回调传参

    ; //回调函数,回调参数值:eventArgument        public void RaisePostBackEvent(string eventArgument)        {    ...