使用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));

         }

}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

时间: 2024-10-10 08:31:19

使用javaDate类代数据仓库维度表的相关文章

利用java日期类生成数据仓库维度表

利用java日期类生成数据仓库维度表 Date类: 最基础的日期时间类,返回一个相对日期的毫秒数.精确到毫秒,但不支持日期的国际化和分时区显示.Date 类从Java 开发包(JDK)1.0 就开始进化,当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了,这种改进旨在更好的处理日期数据的国际化格式. Calender类: 相对于Date更加强大的时间类,是抽象类,提供了常规的日期修改功能和国际化

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

事实表 在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”.一个按照州.产品和月份划分的销售量和销售额存储的事实表有5个列,概念上与下面的示例类似. Sate Product Mouth Units Dollars WA Mountain-100 January 3 7.95 WA Cable Lock January 4 7.32 OR Mountain-100 January 3 7.95 OR Cable Lock January 4 7.32 WA Mountain-100 F

数据仓库/集市 星形/雪花形 事实/维度表

声明:本文转载至Davor Gornik 对数据仓库进行数据建模 OLTP 与数据仓库--有何差异? 在日常生活中,我们要使用大量的应用程序来生成新的数据.变更数据.删除数据,当然在大多数的情况下我们还要查阅和分析数据.就来想象一个收发 email 的简单应用程序吧.我们已经存储了地址信息,可能还存储了一些文档.我们可以决定是否存储已经发送过的邮件,但是也可能隔一段时间后将其删除,或者删除已经发送过的所有邮件.那么我们该如何处理一段时间以前删除或者修改过的地址呢?我们再也不会看到它们了. Ema

数据仓库--事实表和维度表

本文主要参考如下几篇文章:http://www.cnblogs.com/47613593/archive/2009/02/20/1394581.htmlhttp://jackwxh.blog.51cto.com/2850597/827968 1.数据仓库与操作型数据库的区别 数据仓库的物理模型与常见的操作型数据库的物理模型有很大不同.最明显的区别是:操作型数据库主要是用来支撑即时操作,对数据库的性能和质量要求都比较高,为了防止"garbage in,garbage out",通常设计操

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

以前一直对维度表, 事实表, 数据分析, BI等概念等有一些模糊. 这几天的学习终于让这些有了一些眉目了: 维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进行分析,或按区域来分析. 这样的按..分析就构成一个维度.前面的示例就可以有两个维度:类型和区域.另外每个维度还可以有子维度(称为属性),例如类别可以有子类型,产品名等属性.下面是两个常见的维度表结构: 产品维度表:Prod_id, Product_Name, Category, Color, Si

BI中事实表,维度表和数据集市,数据仓库的理解

维度表(dimension)存放着一些维度属性,例如时间维度:年月日时:地域维度:省份,城市:年龄维度:老年,中年,青年:职称维度:高,中,低.它定义了可以从哪些角度分析事实表. 事实表(fact)存放着一些业务产生的数据,例如:商品订购产生的订单信息,银行的流水信息,erp系统的办公信息.但它不仅存放着上述事实信息,而且存放在事实信息与维度信息关联的键值,例如订单信息里面有日期字段可以和时间维度关联,可以通过银行中的个税流水与收入维度关联量化各个收入群体,erp流水中的员工号可以同职称维度表关

数据仓库展示模型 - 维度表与事实表的理解

一.事实表 特点: 1. 由一组表示维度的键和一组数字形式的度量值构成. 2. 维度外键通常是一些数字或字符代码,因为通常事实表会包含极大的数据量,如果直接使用维度描述的话,会对存储性能照成影响. 3. 每个度量值都是单独的一列,创建报表时(例如BIEE中数据透视表),度量值也可以作为维度来使用. 教工人数 单位ID(维度1) 学科码(维度2) 年度(维度3) 在编教工数(度量1) 在编教学科研人数(度量2) 1 0801 2013 101 89 2 0802 2013 102 77 3 070

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

有时候,我们往往会存在这样的需求 例如:事实表的数据如下 EMP_FACT表示事实表,DIM_LEVEL是维度表 预期效果:(根据员工信息,分析各等级员工工资与员工个数) 我们在BIEE报表中新建报表,然后展示报表,展示结果如下: 图1 那么这个效果跟我们的预期效果可是差别比较大的!我们如何来改变这种差别呢? 首先我们分析上面2个表,我们需要解决2个问题,分别是: ①优秀.良好.一般按照顺序排列 ②当事实表不存在[一般]级别数据记录时,展示该维度,并且对应值为0 环境准备 首先在数据库建立事实表

数据仓库专题(4)-分布式数据仓库事实表设计思考---讨论精华

一.前言 上一篇分享博文<数据仓库专题(3)--分布式数据仓库事实表设计思考>后,陆续有各位兄弟参加大讨论,提出了各种问题,关于分布式环境下,维表和事实表设计,进行了比较深入的探讨,在此汇集整理,分享给大家.希望能有更多人参与尽力啊,共同探索分布式数据仓库数据模型的设计. 二.纪要 [活跃]北京-RTB-胖哥(1106110976) 10:21:36 分布式模式下事实表设计思考: 做大做强事实表,做小做弱维表: [冒泡]杭州-电子病历<[email protected]> 10:2