From db43a4ce1c47b6403038563a86bf942b9f40fa91 Mon Sep 17 00:00:00 2001 From: lidongsjtu Date: Wed, 28 Oct 2015 14:18:15 +0800 Subject: [PATCH] KYLIN-1101 Allow "YYYYMMDD" as a date partition column --- .../main/java/org/apache/kylin/common/util/DateFormat.java | 6 +++++- .../org/apache/kylin/metadata/model/PartitionDesc.java | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java index f46edae..43ff00e 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java @@ -47,7 +47,11 @@ public class DateFormat { } public static String formatToDateStr(long millis) { - return formatToTimeStr(millis, DEFAULT_DATE_PATTERN); + return formatToDateStr(millis, DEFAULT_DATE_PATTERN); + } + + public static String formatToDateStr(long millis, String pattern) { + return getDateFormat(pattern).format(new Date(millis)); } public static String formatToTimeStr(long millis) { diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java index 2f1e3dd..0de905c 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java @@ -45,6 +45,8 @@ public class PartitionDesc { private String partitionDateColumn; @JsonProperty("partition_date_start") private long partitionDateStart = 0L; + @JsonProperty("partition_date_format") + private String partitionDateFormat = DateFormat.DEFAULT_DATE_PATTERN; @JsonProperty("partition_type") private PartitionType partitionType = PartitionType.APPEND; @JsonProperty("partition_condition_builder") @@ -98,6 +100,14 @@ public class PartitionDesc { this.partitionDateStart = partitionDateStart; } + public String getPartitionDateFormat() { + return partitionDateFormat; + } + + public void setPartitionDateFormat(String partitionDateFormat) { + this.partitionDateFormat = partitionDateFormat; + } + public PartitionType getCubePartitionType() { return partitionType; } @@ -137,10 +147,10 @@ public class PartitionDesc { StringBuilder builder = new StringBuilder(); if (startInclusive > 0) { - builder.append(partitionColumnName + " >= '" + DateFormat.formatToDateStr(startInclusive) + "' "); + builder.append(partitionColumnName + " >= '" + DateFormat.formatToDateStr(startInclusive, partDesc.getPartitionDateFormat()) + "' "); builder.append("AND "); } - builder.append(partitionColumnName + " < '" + DateFormat.formatToDateStr(endExclusive) + "'"); + builder.append(partitionColumnName + " < '" + DateFormat.formatToDateStr(endExclusive, partDesc.getPartitionDateFormat()) + "'"); return builder.toString(); } -- 2.3.8 (Apple Git-58)