使用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类代数据仓库维度表的更多相关文章

  1. 《BI那点儿事—数据的艺术》理解维度数据仓库——事实表、维度表、聚合表

    事实表 在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”.一个按照州.产品和月份划分的销售量和销售额存储的事实表有5个列,概念上与下面的示例类似. Sate Product Mouth U ...

  2. 维度表, 事实表, 数据仓库, BI...

    以前一直对维度表, 事实表, 数据分析, BI等概念等有一些模糊. 这几天的学习终于让这些有了一些眉目了: 维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进 ...

  3. 【BIEE】04_当维度表中的维不存在事实表中,需要展示所有维度并且数据类展示为0

    有时候,我们往往会存在这样的需求 例如:事实表的数据如下 EMP_FACT表示事实表,DIM_LEVEL是维度表 预期效果:(根据员工信息,分析各等级员工工资与员工个数) 我们在BIEE报表中新建报表 ...

  4. HAWQ取代传统数仓实践(八)——维度表技术之角色扮演维度

    单个物理维度可以被事实表多次引用,每个引用连接逻辑上存在差异的角色维度.例如,事实表可以有多个日期,每个日期通过外键引用不同的日期维度,原则上每个外键表示不同的日期维度视图,这样引用具有不同的含义.这 ...

  5. BI中事实表和维度表的定义

    一个典型的样例是,把逻辑业务比作一个立方体,产品维.时间维.地点维分别作为不同的坐标轴,而坐标轴的交点就是一个详细的事实.也就是说事实表是多个维度表的一个交点.而维度表是分析事实的一个窗体. 首先介绍 ...

  6. HAWQ取代传统数仓实践(十二)——维度表技术之分段维度

    一.分段维度简介 在客户维度中,最具有分析价值的属性就是各种分类,这些属性的变化范围比较大.对某个个体客户来说,可能的分类属性包括:性别.年龄.民族.职业.收入和状态,例如,新客户.活跃客户.不活跃客 ...

  7. HAWQ取代传统数仓实践(十一)——维度表技术之维度合并

    有一种合并维度的情况,就是本来属性相同的维度,因为某种原因被设计成重复的维度属性.例如,在销售订单示例中,随着数据仓库中维度的增加,我们会发现有些通用的数据存在于多个维度中.客户维度的客户地址相关信息 ...

  8. HAWQ取代传统数仓实践(十)——维度表技术之杂项维度

    一.什么是杂项维度 简单地说,杂项维度就是一种包含的数据具有很少可能值的维度.事务型商业过程通常产生一系列混杂的.低基数的标志位或状态信息.与其为每个标志或属性定义不同的维度,不如建立单独的将不同维度 ...

  9. HAWQ取代传统数仓实践(九)——维度表技术之退化维度

    退化维度技术减少维度的数量,简化维度数据仓库模式.简单的模式比复杂的更容易理解,也有更好的查询性能.        有时,维度表中除了业务主键外没有其它内容.例如,在本销售订单示例中,订单维度表除了订 ...

随机推荐

  1. IT大数据服务管理高级课程(IT服务,大数据,云计算,智能城市)

    个人简历 金石先生是马克思主义中国化的研究学者,上海财经大学经济学和管理学硕士,中国民主建国会成员,中国特色社会主义人文科技管理哲学的理论奠基人之一.金石先生博学多才,对问题有独到见解.专于工作且乐于 ...

  2. androidstudio 优化gradle编译效率

    androidstuido 使用gradle自己主动构建和编译.有时做少量改动编译须要等待时间过长,近期Erik Hellman编写的Boosting the performance for Grad ...

  3. 0 and 1

    Description Andrewid the Android is a galaxy-famous detective. In his free time he likes to think ab ...

  4. openfire学习4------->android客户端聊天开发之聊天功能开发

    前面我们已经把服务器搭建完成,并且在客户端实现了登录了. 和我们使用的QQ一样,想一想,登录成功之后呢?肯定是要有一个好友列表,通过这个列表,我们可以选择我们需要聊天的好友. 这里我们先研究下 xmp ...

  5. SQL 事务及实例演示

    简介 事务,英文名称是transaction.是在对数据库进行管理操作过程中一个逻辑单位,由有限的操作序列构成. 其实这个概念很好懂,简单理解就是:事务就是在使用数据库中的一个操作,由一些操作放到一起 ...

  6. win7+Powerpoint2007下设置演讲者视图,两步搞定

    步骤1: 步骤2: 这样,你就可以对着ppt的备注讲解了,且用户看不到你的备注以及你的电脑桌面.cool!

  7. 联想A800新蜂ROM V1.1 基于官方4.0.4精简省电稳定

    ROM介绍 [出品]:新蜂工作室(基于官方) 1.源于官方:基于最稳定官方底包制作. 2.深度精简:自带APK数量从原厂包的131个降低到90个,精简31% 3.ROM包大小从原厂314MB精简到16 ...

  8. Swift - 带结果列表的搜索条(UISearchDisplayController)的用法

    (注:自iOS8起,苹果便废弃UISearchDisplayController的使用,改为使用UISearchController来实现类似功能,可参考我的另一篇文章“Swift - 使用UISea ...

  9. 用Swift开发二维码扫描器教程

    (原文:Building a QR Code Reader in Swift 作者:Simon Ng 译者:xiaoying )我相信大多数人都知道二维码(QR code)是什么,如果你对这个概念还不 ...

  10. Swift - 运算符重载和运算符函数

    让已有的运算符对自定义的类和结构进行运算或者重新定义已有运算符的运算规则,这种机制被称为运算符重载. 1,通过重载加号运算符,使自定义的两个坐标结构体对象实现相加: 1 2 3 4 5 6 7 8 9 ...