[ 
https://issues.apache.org/jira/browse/KYLIN-2952?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

wenxue lin updated KYLIN-2952:
------------------------------
    Description: 
ex => curl -X PUT -u "ADMIN:KYLIN" -H 
"Content-Type:application/json;charset=utf-8" -d 
'{"startTime":1508601600000,"endTime":1508688000000,"buildType":"BUILD"}' 
http://host:port/kylin/api/cubes/bi_dispatch_waiting_service_cube/rebuild

desc :
 rest api param is startTime:1508601600000(2017-10-22) and 
endTime:1508688000000(2017-10-23), but the actual time of building the cube is 
1 day ahead of schedule (actually 8 hours ahead of schedule) 
=》【2017-10-21~2017-10-22】,But using kylinUI build without question, the actual 
view kylin code, found that is because the kylin on the server side source code 
for configuration of GMT rather than use the timezone of fixed GMT + 8, and 
front-end UI will according to the configuration of the timezone is transformed 
to the time of the page to add GMT + 8 time, then the back-end to GMT + 8 time 
in into GMT time, so the kylinUI cube build time without error, and using 
restAPI build cube time not making timezone 8 hours is not accurate time 
difference problem。

*for code:*

kylinProperties.js
this.getTimeZone = function () {
    if (!this.timezone) {
      this.timezone = this.getProperty("kylin.rest.timezone").trim();
    }
    return this.timezone;
}


org.apache.kylin.cube.CubeSegment
public static String makeSegmentName(long startDate, long endDate, long 
startOffset, long endOffset) {
    if (startOffset != 0 || endOffset != 0) {
        if (startOffset == 0 && (endOffset == 0 || endOffset == 
Long.MAX_VALUE)) {
            return "FULL_BUILD";
        }

        return startOffset + "_" + endOffset;
    }

    // using time
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    return dateFormat.format(startDate) + "_" + dateFormat.format(endDate);
}


org.apache.kylin.common.util.DateFormat:
public static FastDateFormat getDateFormat(String datePattern) {
    FastDateFormat r = formatMap.get(datePattern);
    if (r == null) {
        r = FastDateFormat.getInstance(datePattern, 
TimeZone.getTimeZone("GMT")); // NOTE: this must be GMT to calculate epoch date 
correctly
        formatMap.put(datePattern, r);
    }
    return r;
}


  was:
ex => curl -X PUT -u "ADMIN:KYLIN" -H 
"Content-Type:application/json;charset=utf-8" -d 
'{"startTime":1508601600000,"endTime":1508688000000,"buildType":"BUILD"}' 
http://host:port/kylin/api/cubes/bi_dispatch_waiting_service_cube/rebuild

desc :
 rest api param is startTime:1508601600000(2017-10-22) and 
endTime:1508688000000(2017-10-23), but the actual time of building the cube is 
1 day ahead of schedule (actually 8 hours ahead of schedule) 
=》【2017-10-21~2017-10-22】,But using kylinUI build without question, the actual 
view kylin source, found that is because the kylin on the server side source 
code for configuration of GMT rather than use the timezone of fixed GMT + 8, 
and front-end UI will according to the configuration of the timezone is 
transformed to the time of the page to add GMT + 8 time, then the back-end to 
GMT + 8 time in into GMT time, so the kylinUI cube build time without error, 
and using restAPI build cube time not making timezone 8 hours is not accurate 
time difference problem。

*for code:*

kylinProperties.js
this.getTimeZone = function () {
    if (!this.timezone) {
      this.timezone = this.getProperty("kylin.rest.timezone").trim();
    }
    return this.timezone;
}


org.apache.kylin.cube.CubeSegment
public static String makeSegmentName(long startDate, long endDate, long 
startOffset, long endOffset) {
    if (startOffset != 0 || endOffset != 0) {
        if (startOffset == 0 && (endOffset == 0 || endOffset == 
Long.MAX_VALUE)) {
            return "FULL_BUILD";
        }

        return startOffset + "_" + endOffset;
    }

    // using time
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    return dateFormat.format(startDate) + "_" + dateFormat.format(endDate);
}


org.apache.kylin.common.util.DateFormat:
public static FastDateFormat getDateFormat(String datePattern) {
    FastDateFormat r = formatMap.get(datePattern);
    if (r == null) {
        r = FastDateFormat.getInstance(datePattern, 
TimeZone.getTimeZone("GMT")); // NOTE: this must be GMT to calculate epoch date 
correctly
        formatMap.put(datePattern, r);
    }
    return r;
}



> dynamic cube build for time(statTime and endTime)
> -------------------------------------------------
>
>                 Key: KYLIN-2952
>                 URL: https://issues.apache.org/jira/browse/KYLIN-2952
>             Project: Kylin
>          Issue Type: Improvement
>          Components: REST Service
>    Affects Versions: v1.6.0
>         Environment: linux
>            Reporter: wenxue lin
>            Assignee: Zhong,Jason
>            Priority: Minor
>
> ex => curl -X PUT -u "ADMIN:KYLIN" -H 
> "Content-Type:application/json;charset=utf-8" -d 
> '{"startTime":1508601600000,"endTime":1508688000000,"buildType":"BUILD"}' 
> http://host:port/kylin/api/cubes/bi_dispatch_waiting_service_cube/rebuild
> desc :
>  rest api param is startTime:1508601600000(2017-10-22) and 
> endTime:1508688000000(2017-10-23), but the actual time of building the cube 
> is 1 day ahead of schedule (actually 8 hours ahead of schedule) 
> =》【2017-10-21~2017-10-22】,But using kylinUI build without question, the 
> actual view kylin code, found that is because the kylin on the server side 
> source code for configuration of GMT rather than use the timezone of fixed 
> GMT + 8, and front-end UI will according to the configuration of the timezone 
> is transformed to the time of the page to add GMT + 8 time, then the back-end 
> to GMT + 8 time in into GMT time, so the kylinUI cube build time without 
> error, and using restAPI build cube time not making timezone 8 hours is not 
> accurate time difference problem。
> *for code:*
> kylinProperties.js
> this.getTimeZone = function () {
>     if (!this.timezone) {
>       this.timezone = this.getProperty("kylin.rest.timezone").trim();
>     }
>     return this.timezone;
> }
> org.apache.kylin.cube.CubeSegment
> public static String makeSegmentName(long startDate, long endDate, long 
> startOffset, long endOffset) {
>     if (startOffset != 0 || endOffset != 0) {
>         if (startOffset == 0 && (endOffset == 0 || endOffset == 
> Long.MAX_VALUE)) {
>             return "FULL_BUILD";
>         }
>         return startOffset + "_" + endOffset;
>     }
>     // using time
>     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
>     dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
>     return dateFormat.format(startDate) + "_" + dateFormat.format(endDate);
> }
> org.apache.kylin.common.util.DateFormat:
> public static FastDateFormat getDateFormat(String datePattern) {
>     FastDateFormat r = formatMap.get(datePattern);
>     if (r == null) {
>         r = FastDateFormat.getInstance(datePattern, 
> TimeZone.getTimeZone("GMT")); // NOTE: this must be GMT to calculate epoch 
> date correctly
>         formatMap.put(datePattern, r);
>     }
>     return r;
> }



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to