Nominal to Date

felix_w
felix_w New Altair Community Member
edited November 2024 in Community Q&A

Dear Rapidminer Community

 

I am struggling again with some Nominal to Date conversions and I hope you can help me. I am extracting with an "extract macro" a date value and I am getting a nominal value. Now I want to convert this nominal value from the macro again back to a date value.

 

The nominal format is:

May 22, 2016

 

How can I convert this into date format? All I get is: "Cannot parse date" and I have tried already plenty of options.

 

Any help would be greatly appreciated!

 

Best regards

Felix

Welcome!

It looks like you're new here. Sign in or register to get started.

Best Answer

  • YYH
    YYH
    Altair Employee
    Answer ✓

    Hi @felix_w,

     

    You may have at least 2 ways to convert nominal string to a date by a customized date format.

     

    My example process attached here. Be careful that no quotes on the date string of the macro variable.

     

    date.PNG

    <?xml version="1.0" encoding="UTF-8"?><process version="8.1.001">
    <context>
    <input/>
    <output/>
    <macros/>
    </context>
    <operator activated="true" class="process" compatibility="8.1.001" expanded="true" name="Process">
    <process expanded="true">
    <operator activated="true" class="set_macro" compatibility="8.1.001" expanded="true" height="68" name="Set Macro" width="90" x="380" y="34">
    <parameter key="macro" value="someDate"/>
    <parameter key="value" value="May 22, 2016"/>
    </operator>
    <operator activated="true" class="generate_macro" compatibility="8.1.001" expanded="true" height="68" name="Generate Macro, method2" width="90" x="514" y="136">
    <list key="function_descriptions">
    <parameter key="nominalDate" value="date_parse_custom(%{someDate},&quot;MMM dd, yyyy&quot;,&quot;en&quot;)"/>
    </list>
    </operator>
    <operator activated="true" breakpoints="after" class="generate_data_user_specification" compatibility="8.1.001" expanded="true" height="68" name="Generate Data by User Specification" width="90" x="514" y="34">
    <list key="attribute_values">
    <parameter key="someDate" value="%{someDate}"/>
    </list>
    <list key="set_additional_roles"/>
    </operator>
    <operator activated="true" class="nominal_to_date" compatibility="8.1.001" expanded="true" height="82" name="Nominal2Date, method1" width="90" x="648" y="34">
    <parameter key="attribute_name" value="someDate"/>
    <parameter key="date_format" value="MMM dd, yyyy"/>
    <parameter key="keep_old_attribute" value="true"/>
    </operator>
    <connect from_op="Generate Data by User Specification" from_port="output" to_op="Nominal2Date, method1" to_port="example set input"/>
    <connect from_op="Nominal2Date, method1" from_port="example set output" to_port="result 1"/>
    <portSpacing port="source_input 1" spacing="0"/>
    <portSpacing port="sink_result 1" spacing="0"/>
    <portSpacing port="sink_result 2" spacing="0"/>
    </process>
    </operator>
    </process>

    YY

Answers

  • YYH
    YYH
    Altair Employee
    Answer ✓

    Hi @felix_w,

     

    You may have at least 2 ways to convert nominal string to a date by a customized date format.

     

    My example process attached here. Be careful that no quotes on the date string of the macro variable.

     

    date.PNG

    <?xml version="1.0" encoding="UTF-8"?><process version="8.1.001">
    <context>
    <input/>
    <output/>
    <macros/>
    </context>
    <operator activated="true" class="process" compatibility="8.1.001" expanded="true" name="Process">
    <process expanded="true">
    <operator activated="true" class="set_macro" compatibility="8.1.001" expanded="true" height="68" name="Set Macro" width="90" x="380" y="34">
    <parameter key="macro" value="someDate"/>
    <parameter key="value" value="May 22, 2016"/>
    </operator>
    <operator activated="true" class="generate_macro" compatibility="8.1.001" expanded="true" height="68" name="Generate Macro, method2" width="90" x="514" y="136">
    <list key="function_descriptions">
    <parameter key="nominalDate" value="date_parse_custom(%{someDate},&quot;MMM dd, yyyy&quot;,&quot;en&quot;)"/>
    </list>
    </operator>
    <operator activated="true" breakpoints="after" class="generate_data_user_specification" compatibility="8.1.001" expanded="true" height="68" name="Generate Data by User Specification" width="90" x="514" y="34">
    <list key="attribute_values">
    <parameter key="someDate" value="%{someDate}"/>
    </list>
    <list key="set_additional_roles"/>
    </operator>
    <operator activated="true" class="nominal_to_date" compatibility="8.1.001" expanded="true" height="82" name="Nominal2Date, method1" width="90" x="648" y="34">
    <parameter key="attribute_name" value="someDate"/>
    <parameter key="date_format" value="MMM dd, yyyy"/>
    <parameter key="keep_old_attribute" value="true"/>
    </operator>
    <connect from_op="Generate Data by User Specification" from_port="output" to_op="Nominal2Date, method1" to_port="example set input"/>
    <connect from_op="Nominal2Date, method1" from_port="example set output" to_port="result 1"/>
    <portSpacing port="source_input 1" spacing="0"/>
    <portSpacing port="sink_result 1" spacing="0"/>
    <portSpacing port="sink_result 2" spacing="0"/>
    </process>
    </operator>
    </process>

    YY

  • felix_w
    felix_w New Altair Community Member

    @: yyhuang thank you so much!! Now it finally works! :D 

     

    I still have one question though: Why does "MMM dd, yyyy" work for a date like this: "May 22, 2016"? I don't understand why those 3 "MMM" work, I thought for a month I would always write a double M ("MM").. which was also my mistake because I tried many variances of "MM dd,yyyy and nothing worked. 

     

    Felix

  • YYH
    YYH
    Altair Employee

    Hi @felix_w,

     

    Hope these links could help you understand better about the date formats.

     

    https://help.gooddata.com/cloudconnect/manual/date-and-time-format.html

    https://www.vsni.co.uk/software/genstat/htmlhelp/spread/DateFormats.htm

     

     

    Inside rapidminer, you can also have a quick reference list from "nominal to date" operator.

     

    Some standard date formats are listed there

     

    date.PNG

     

    Cheers,

    YY

  • felix_w
    felix_w New Altair Community Member

    That's really helpful! Now I get, it's simply because my date (May) has 3 letters, that is why I need three M's (MMM), right?! Would have been quite streight forward.. 

Welcome!

It looks like you're new here. Sign in or register to get started.

Welcome!

It looks like you're new here. Sign in or register to get started.