使用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. Android - 设置adb的usb连接配置

    设置adb的usb连接配置 本文地址: http://blog.csdn.net/caroline_wendy 把须要測试的手机连接入电脑.通过系统查找USB连接配置,找到厂商ID: 把ID加入进ad ...

  2. UVALive 2519 Radar Installation 雷达扫描 区间选点问题

    题意:在坐标轴中给出n个岛屿的坐标,以及雷达的扫描距离,要求在y=0线上放尽量少的雷达能够覆盖全部岛屿. 很明显的区间选点问题. 代码: /* * Author: illuz <iilluzen ...

  3. Kendo UI开发教程(24): 单页面应用(二) Router 类

    Route类负责跟踪应用的当前状态和支持在应用的不同状态之间切换.Route通过Url的片段功能(#url)和流量器的浏览历史功能融合在一起.从而可以支持把应用的某个状态作为书签添加到浏览器中.Rou ...

  4. Java 7如何操纵文件属性

    Java 7如何操纵文件属性 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 准备写点基础性的文章,Java 7已经出来很长一段时间了,但是很多Java程 ...

  5. 部署Spring Boot应用

    在开发Spring Boot应用的过程中,Spring Boot直接执行public static void main()函数并启动一个内嵌的应用服务器(取决于类路径上的以来是Tomcat还是jett ...

  6. android 实现代码关机

    开始从网上搜索,通过发action的方式实现,不过一直没有成功. Intent intent = new Intent();   intent.setAction(Intent.ACTION_SHUT ...

  7. sublime搜索和替换--正则

    Search and Replace Sublime Text features two main types of search: Search - Single File Search - Mul ...

  8. C语言中 struct成员变量顺序对内存的占用

    在C语言的结构体中,是会按照其变量类型来进行分配内存大小的.但是对于不同的编译器,结果是不同的,在VC++6.0中是怎么个分配情况呢?用一下C中的关键字sizeof()来测试下,注意sizeof()不 ...

  9. ABAP 负号前置方法汇总

    ABAP 负号前置方法汇总 开发过程中有这样的一个需求,要求指定数字栏位负号前置: 方法一: PERFORM FRM_MOVE_DATA_MINUS CHANGING L_CHAR20. ” 负号前置 ...

  10. MFC 用gdi绘制填充多边形区域

    MFC 用gdi绘制填充多边形区域 这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面 运用的是给定的三角形的三个点,很多个点可以绘制多边形 CBrush br(RGB( ...