Customer Portal

Date incorrect parsing from Excel

Comments 8

  • Avatar
    avackova
    0
    Comment actions Permalink
    What happens when you define metadata as Date?
  • Avatar
    mkutti
    0
    Comment actions Permalink
    If I define metadata as Date, it reads the Date without additional value in the front. Strange - it reads the value as one day less than the date in Excel. 6/1/2009 becomes 5/31/2009.
  • Avatar
    avackova
    0
    Comment actions Permalink
    It's really strange. Could you send me the file with data probe?
  • Avatar
    mkutti
    0
    Comment actions Permalink
    zip file with graph and excel is attached. Thanks.
  • Avatar
    avackova
    0
    Comment actions Permalink
    Hello,
    reading the dates as a Date type problem, seems to be related to the time zone problem (http://bug.cloveretl.com/view.php?id=3491). That means, that reading timestamps from xls file depends on time zone settings on the computer - dates on excel file are always treated as formatted in GMT time. As a workaround I can advice you the usage of Java Execute component, that sets the default time zone to GMT time:
    import java.util.SimpleTimeZone;
    import java.util.TimeZone;

    import org.jetel.component.BasicJavaRunnable;


    public class setTimeZone extends BasicJavaRunnable {

    public void run() {
    TimeZone.setDefault(new SimpleTimeZone(0, "GMT"));
    }

    }

    But the above, sets the GMT time for parsing and formatting all dates in your graph, so you can have a problem in different point of the transformation.

    When I set the metadata type to String, the data was read properly, without any additional strings. What Clover version do you use?
  • Avatar
    mkutti
    0
    Comment actions Permalink
    Hi,

    Please see the attached zip for recreating the issue. Right now I am proceeding with a workaround - substring function.

    Also, Is it possible to combine both the ExtFilter in one in the attached graph ? I tried combining isnull, nvl with is_number. It does not help. Short circuit && is not available in CTL and I can't convert the code to Java in ExtFilter.

    Not a big issue . I am managing with two filters. Thought you might suggest a better solution.

    Thanks!!
  • Avatar
    avackova
    0
    Comment actions Permalink
    Hello, && operator as well as and works properly with Filter:
    !is_blank($0.is_int_test) and is_number($0.is_int_test)
    or
    !is_blank($0.is_int_test) && is_number($0.is_int_test)

    filters only 3 of 5 records.
    If you know all the date formats in excel file you can use try_convert or str2date functions in Reformat node:
    //#TL
    date d;
    string format = "dddd, MMMM dd, yyyy";
    // Transforms input record into output record.
    function transform() {
    d = try_convert($0.DateString,date, "MM/dd/yy");
    if (isnull(d)){
    d = str2date($0.DateString,format);
    }
    $0.* := $0.*;
    $0.Date := d;
    }


    If you set Reformat with above code after XLSReader, you can also use it as a Filter:
    //#TL
    date d;
    string format = "dddd, MMMM dd, yyyy";
    // Transforms input record into output record.
    function transform() {
    if (is_blank($0.is_int_test) || !is_number($0.is_int_test)) return SKIP;
    d = try_convert($0.DateString,date, "MM/dd/yy");
    if (isnull(d)){
    d = str2date($0.DateString,format);
    }
    $0.* := $0.*;
    $0.Date := d;
    }

  • Avatar
    Alex_23
    0
    Comment actions Permalink

    I have solved my issue by applying filter to the whole column. here

Please sign in to leave a comment.