使用javaDate类代数据仓库维度表
使用javaDate类代数据仓库维度表
Date类别:
,返回一个相对日期的毫秒数。精确到毫秒。但不支持日期的国际化和分时区显示。
Date 类从Java 开发包(JDK)1.0 就開始进化,当时它仅仅包括了几个取得或者设置一个日期数据的各个部分的方法。 比方说月, 日, 和年。 这些方法如今遭到了批评而且已经被转移到了Calendar类里去了,这样的改进旨在更好的处理日期数据的国际化格式。
Calender类:
相对于Date更加强大的时间类,是抽象类,提供了常规的日期改动功能和国际化支持。
GregorianCalendar类:
提供处理日期的方法。用于计算日期。是Calendar类的子类,实用的是有个推断闰年的方法。
DateFormat类:
能够接受字符串输入、输出。提供了将日期/时间信息进行格式化处理的功能。
SimpleDateFormat类:
功能更强大的日期时间格式化类,自己定义格式化日期和时间。
java.util.Locale类:
描写叙述特定的地理、政治、文化上的地区。Locale对象主要封装了“地区”和“语言种类”双方面 .
以下用代码来模拟生成日期维度表的一些字段值:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
public class DateUtil {
Localeloc = new Locale("zh", "CN");
// Localeloc = new Locale("en", "CN");
Calendarcalendar = new GregorianCalendar(loc);
publicvoid init(){
calendar.set(2014,9, 10);
}
publicDate add(int day){
calendar.add(Calendar.DAY_OF_MONTH,day);
returncalendar.getTime();
}
publicvoid showDate(Date date){
p("TimeInMillis",calendar.getTimeInMillis()+"");
p("ShortDate",java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT,loc)
.format(date));
p("MEDIUMDate",java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM,loc)
.format(date));
p("LONGDate",java.text.DateFormat.getDateInstance(java.text.DateFormat.LONG, loc)
.format(date));
p("LONGFULL",java.text.DateFormat.getDateInstance(java.text.DateFormat.FULL, loc)
.format(date));
SimpleDateFormatsdf = new SimpleDateFormat("D",loc);
p("dayin year",sdf.format(date));
sdf.applyPattern("d");
p("dayin month",sdf.format(date));
sdf.applyPattern("EEEE");
p("dayname",sdf.format(date));
sdf.applyPattern("E");
p("dayabbreviation",sdf.format(date));
sdf.applyPattern("ww");
p("weekin year",sdf.format(date));
sdf.applyPattern("W");
p("weekin month",sdf.format(date));
sdf.applyPattern("MM");
String month = sdf.format(date);
p("monthnumber",sdf.format(date));
sdf.applyPattern("MMMM");
p("monthname",sdf.format(date));
sdf.applyPattern("MMM");
p("monthabbreviation",sdf.format(date));
sdf.applyPattern("yy");
p("year2",sdf.format(date));
sdf.applyPattern("yyyy");
p("year4",sdf.format(date));
intquarter_number = (int)Math.ceil( (Integer.parseInt(month) /3.0));
p("quertername","Q"+quarter_number);
intfirst_day_of_week = calendar.getFirstDayOfWeek();
p("is_first_day_of_week",firstWeekDay(first_day_of_week));
}
publicvoid p(String desc,String date){
System.out.println(desc+ " : " + date);
}
publicvoid calAndShow(){
for(int i = 0; i < 3; i++) {
init();
showDate(add(i));
System.out.println();
}
}
publicString firstWeekDay(int first){
returnfirst == calendar.get(Calendar.DAY_OF_WEEK) ? "yes" : "no";
}
publicstatic void main(String[] args) {
DateUtild = new DateUtil();
d.calAndShow();
System.out.println(Math.ceil(11.0/3.0));
}
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
使用javaDate类代数据仓库维度表的更多相关文章
- 《BI那点儿事—数据的艺术》理解维度数据仓库——事实表、维度表、聚合表
事实表 在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”.一个按照州.产品和月份划分的销售量和销售额存储的事实表有5个列,概念上与下面的示例类似. Sate Product Mouth U ...
- 维度表, 事实表, 数据仓库, BI...
以前一直对维度表, 事实表, 数据分析, BI等概念等有一些模糊. 这几天的学习终于让这些有了一些眉目了: 维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进 ...
- 【BIEE】04_当维度表中的维不存在事实表中,需要展示所有维度并且数据类展示为0
有时候,我们往往会存在这样的需求 例如:事实表的数据如下 EMP_FACT表示事实表,DIM_LEVEL是维度表 预期效果:(根据员工信息,分析各等级员工工资与员工个数) 我们在BIEE报表中新建报表 ...
- HAWQ取代传统数仓实践(八)——维度表技术之角色扮演维度
单个物理维度可以被事实表多次引用,每个引用连接逻辑上存在差异的角色维度.例如,事实表可以有多个日期,每个日期通过外键引用不同的日期维度,原则上每个外键表示不同的日期维度视图,这样引用具有不同的含义.这 ...
- BI中事实表和维度表的定义
一个典型的样例是,把逻辑业务比作一个立方体,产品维.时间维.地点维分别作为不同的坐标轴,而坐标轴的交点就是一个详细的事实.也就是说事实表是多个维度表的一个交点.而维度表是分析事实的一个窗体. 首先介绍 ...
- HAWQ取代传统数仓实践(十二)——维度表技术之分段维度
一.分段维度简介 在客户维度中,最具有分析价值的属性就是各种分类,这些属性的变化范围比较大.对某个个体客户来说,可能的分类属性包括:性别.年龄.民族.职业.收入和状态,例如,新客户.活跃客户.不活跃客 ...
- HAWQ取代传统数仓实践(十一)——维度表技术之维度合并
有一种合并维度的情况,就是本来属性相同的维度,因为某种原因被设计成重复的维度属性.例如,在销售订单示例中,随着数据仓库中维度的增加,我们会发现有些通用的数据存在于多个维度中.客户维度的客户地址相关信息 ...
- HAWQ取代传统数仓实践(十)——维度表技术之杂项维度
一.什么是杂项维度 简单地说,杂项维度就是一种包含的数据具有很少可能值的维度.事务型商业过程通常产生一系列混杂的.低基数的标志位或状态信息.与其为每个标志或属性定义不同的维度,不如建立单独的将不同维度 ...
- HAWQ取代传统数仓实践(九)——维度表技术之退化维度
退化维度技术减少维度的数量,简化维度数据仓库模式.简单的模式比复杂的更容易理解,也有更好的查询性能. 有时,维度表中除了业务主键外没有其它内容.例如,在本销售订单示例中,订单维度表除了订 ...
随机推荐
- c语言, objective code(new 2)
参考: 1. C中的继承和多态 http://www.cnblogs.com/skynet/archive/2010/09/23/1833217.html
- linux下C/C++IDE比较——Code::Blocks
工欲善其事,必先利其器.用了这么久的linux,现在比较主流的几个C/C++的IDE基本已都用过了,现在来对他们做一下简单的比较. 1.VIM首先要说的是VIM.我认为,VIM只是一个编辑器,不能算是 ...
- linux设备驱动程序注冊过程具体解释
Linux的驱动程序注冊过程,大致分为两个步骤: 模块初始化 驱动程序注冊 以下以内核提供的演示样例代码pci-skeleton.c,具体说明一个pci设备驱动程序的注冊过程.其它设备的驱动代码注冊过 ...
- .atitit.web 推送实现解决方式集合(3)----dwr3 Reverse Ajax
.atitit.web 推送实现解决方式集合(3)----dwr3 Reverse Ajax 1. 原理实现 1 2. Page 添加配置.添加回调函数dwr.engine.setActiveRev ...
- Rationnal Rose2003安装并破解
1.安装Rational Rose2003时,在需选择安装项的时候,只选择Rational Rose EnterPrise Edition即可,不需选择其他项,之后选择“DeskTop Install ...
- 自绘ListBox的两种效果
本文利用Listbox自绘实现了两种特殊效果(见图),左边的风格是自己突然灵感触发想到的,右边的风格来自"C++ Builder 研究"的一个帖子,老妖用BCB实现了,这里则用Delphi实现它. 演 ...
- jquery mobile 对手势触控提供了如下几个事件监听:
jquery mobile 对手势触控提供了如下几个事件监听: 复制代码代码如下: tap 当用户点屏幕时触发taphold 当用户点屏幕且保持触摸超过1秒时触发swipe 当页面被垂直或者水平拖动 ...
- DELPHI SOKET 编程(使用TServerSocket和TClientSocket)
本文采用delphi7+TServerSocket+TClientSocket; 笔者在工作中遇到对局域网中各工作站与服务器之间进行Socket通信的问题.现在将本人总结出来的TServerSocke ...
- 11gR2(11.2) RAC TAF Configuration for Admin and Policy Managed Databases (文档 ID 1312749.1)
In this Document Purpose _afrLoop=1459323732561579&id=1312749.1&displayIndex=10&_afr ...
- Codeforces Round #257 (Div. 2) B Jzzhu and Sequences
Jzzhu has invented a kind of sequences, they meet the following property: You are given x and y, ple ...