From f6dbb5ddbc9808e19399dc497e13964ccaec0a55 Mon Sep 17 00:00:00 2001 From: lidongsjtu Date: Wed, 28 Oct 2015 14:20:27 +0800 Subject: [PATCH] KYLIN-1101 Allow "YYYYMMDD" as a date partition column --- .../java/org/apache/kylin/common/util/DateFormat.java | 6 +++++- .../org/apache/kylin/metadata/model/PartitionDesc.java | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/org/apache/kylin/common/util/DateFormat.java b/common/src/main/java/org/apache/kylin/common/util/DateFormat.java index a7284b1..69fc1a2 100644 --- a/common/src/main/java/org/apache/kylin/common/util/DateFormat.java +++ b/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 getDateFormat(DEFAULT_DATE_PATTERN).format(new Date(millis)); + 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/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java index 5bd2ae8..67a0628 100644 --- a/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java +++ b/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java @@ -43,6 +43,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") @@ -96,6 +98,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; } @@ -119,7 +129,6 @@ public class PartitionDesc { } public static class DefaultPartitionConditionBuilder implements IPartitionConditionBuilder { - @Override public String buildDateRangeCondition(PartitionDesc partDesc, long startInclusive, long endExclusive, Map tableAlias) { String partitionColumnName = partDesc.getPartitionDateColumn(); @@ -135,10 +144,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)