How to assign number of examples as a macro value in create example set operator.

hbajpai
hbajpai New Altair Community Member
edited November 2024 in Community Q&A
So, I have a problem statement in which total examples for create example set operators are variable and I am trying to assign them through a macro input. However, I believe the create example set operator does not take marcos as input. Please see the below snapshot of the process.

Welcome!

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

Best Answer

  • varunm1
    varunm1 New Altair Community Member
    Answer ✓
    Hello @hbajpai

    Thanks for sharing the process. I replicated this error. The issue is that the macro is generating a float value with .0 at the end. I just used ceil(eval(%{macro_name})) and it works as it is rounded off to a nearest integer.

    <?xml version="1.0" encoding="UTF-8"?><process version="9.6.000">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="9.6.000" expanded="true" name="Process">
        <parameter key="logverbosity" value="init"/>
        <parameter key="random_seed" value="2001"/>
        <parameter key="send_mail" value="never"/>
        <parameter key="notification_email" value=""/>
        <parameter key="process_duration_for_mail" value="30"/>
        <parameter key="encoding" value="SYSTEM"/>
        <process expanded="true">
          <operator activated="true" class="generate_macro" compatibility="9.6.000" expanded="true" height="68" name="Generate Macro" width="90" x="581" y="136">
            <list key="function_descriptions">
              <parameter key="total_10min" value="1 - date_diff(date_parse_custom(&quot;03/22/2020 10:00:00 PM&quot;,&quot;MM/dd/yyyy hh:mm:ss aa&quot;),&#10;&#9;&#9;&#9;&#9;date_parse_custom(&quot;01/22/2020 10:00:00 PM&quot;,&quot;MM/dd/yyyy hh:mm:ss aa&quot;))/600000"/>
              <parameter key="total_10min_1" value="ceil(eval(%{total_10min}))"/>
            </list>
          </operator>
          <operator activated="true" class="utility:create_exampleset" compatibility="9.6.000" expanded="true" height="68" name="Create ExampleSet" width="90" x="849" y="34">
            <parameter key="generator_type" value="date series"/>
            <parameter key="number_of_examples" value="%{total_10min_1}"/>
            <parameter key="use_stepsize" value="true"/>
            <list key="function_descriptions"/>
            <parameter key="add_id_attribute" value="false"/>
            <list key="numeric_series_configuration"/>
            <list key="date_series_configuration"/>
            <list key="date_series_configuration (interval)">
              <parameter key="TimeStamp" value="2010-11-12 18:10:00 PM.10.minute"/>
            </list>
            <parameter key="date_format" value="yyyy-MM-dd HH:mm:ss"/>
            <parameter key="time_zone" value="SYSTEM"/>
            <parameter key="column_separator" value=","/>
            <parameter key="parse_all_as_nominal" value="false"/>
            <parameter key="decimal_point_character" value="."/>
            <parameter key="trim_attribute_names" value="true"/>
          </operator>
          <connect from_op="Create ExampleSet" from_port="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>
    
    Do let us know if this works for you?

    Hope this helps

Answers

  • varunm1
    varunm1 New Altair Community Member
    Hello @hbajpai

    I tried using set macro with a value of 100 and macro name as "name". Then I used create exampleset where I called that macro %{name} in the number of examples and it worked. Can you check your macro is returning a value (number)? You can check this by enabling macro window in View --> Show Panel --> Macros. Try to set a breakpoint before create exampleset by right-clicking on it and run it to check macro value.



    Do let us know if you need more information.
  • hbajpai
    hbajpai New Altair Community Member
    @varunm1 In the standalone cases, I have tried too and it works as you demonstrated in the above example. In my situation, the macro is returning a number, I even used eval() to ensure it.  I have attached the XML code of the mock process to demonstrate the error. 
    <?xml version="1.0" encoding="UTF-8"?><process version="9.6.000">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="9.6.000" expanded="true" name="Process">
        <parameter key="logverbosity" value="init"/>
        <parameter key="random_seed" value="2001"/>
        <parameter key="send_mail" value="never"/>
        <parameter key="notification_email" value=""/>
        <parameter key="process_duration_for_mail" value="30"/>
        <parameter key="encoding" value="SYSTEM"/>
        <process expanded="true">
          <operator activated="true" class="generate_macro" compatibility="9.6.000" expanded="true" height="68" name="Generate Macro" width="90" x="581" y="136">
            <list key="function_descriptions">
              <parameter key="total_10min" value="1 - date_diff(date_parse_custom(&quot;03/22/2020 10:00:00 PM&quot;,&quot;MM/dd/yyyy hh:mm:ss aa&quot;),&#10;&#9;&#9;&#9;&#9;date_parse_custom(&quot;01/22/2020 10:00:00 PM&quot;,&quot;MM/dd/yyyy hh:mm:ss aa&quot;))/600000"/>
              <parameter key="total_10min_1" value="eval(%{total_10min})"/>
            </list>
          </operator>
          <operator activated="true" class="utility:create_exampleset" compatibility="9.6.000" expanded="true" height="68" name="Create ExampleSet" width="90" x="849" y="34">
            <parameter key="generator_type" value="date series"/>
            <parameter key="number_of_examples" value="%{total_10min_1}"/>
            <parameter key="use_stepsize" value="true"/>
            <list key="function_descriptions"/>
            <parameter key="add_id_attribute" value="false"/>
            <list key="numeric_series_configuration"/>
            <list key="date_series_configuration"/>
            <list key="date_series_configuration (interval)">
              <parameter key="TimeStamp" value="2010-11-12 18:10:00 PM.10.minute"/>
            </list>
            <parameter key="date_format" value="yyyy-MM-dd HH:mm:ss"/>
            <parameter key="time_zone" value="SYSTEM"/>
            <parameter key="column_separator" value=","/>
            <parameter key="parse_all_as_nominal" value="false"/>
            <parameter key="decimal_point_character" value="."/>
            <parameter key="trim_attribute_names" value="true"/>
          </operator>
          <connect from_op="Create ExampleSet" from_port="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>
    
    

  • varunm1
    varunm1 New Altair Community Member
    Answer ✓
    Hello @hbajpai

    Thanks for sharing the process. I replicated this error. The issue is that the macro is generating a float value with .0 at the end. I just used ceil(eval(%{macro_name})) and it works as it is rounded off to a nearest integer.

    <?xml version="1.0" encoding="UTF-8"?><process version="9.6.000">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="9.6.000" expanded="true" name="Process">
        <parameter key="logverbosity" value="init"/>
        <parameter key="random_seed" value="2001"/>
        <parameter key="send_mail" value="never"/>
        <parameter key="notification_email" value=""/>
        <parameter key="process_duration_for_mail" value="30"/>
        <parameter key="encoding" value="SYSTEM"/>
        <process expanded="true">
          <operator activated="true" class="generate_macro" compatibility="9.6.000" expanded="true" height="68" name="Generate Macro" width="90" x="581" y="136">
            <list key="function_descriptions">
              <parameter key="total_10min" value="1 - date_diff(date_parse_custom(&quot;03/22/2020 10:00:00 PM&quot;,&quot;MM/dd/yyyy hh:mm:ss aa&quot;),&#10;&#9;&#9;&#9;&#9;date_parse_custom(&quot;01/22/2020 10:00:00 PM&quot;,&quot;MM/dd/yyyy hh:mm:ss aa&quot;))/600000"/>
              <parameter key="total_10min_1" value="ceil(eval(%{total_10min}))"/>
            </list>
          </operator>
          <operator activated="true" class="utility:create_exampleset" compatibility="9.6.000" expanded="true" height="68" name="Create ExampleSet" width="90" x="849" y="34">
            <parameter key="generator_type" value="date series"/>
            <parameter key="number_of_examples" value="%{total_10min_1}"/>
            <parameter key="use_stepsize" value="true"/>
            <list key="function_descriptions"/>
            <parameter key="add_id_attribute" value="false"/>
            <list key="numeric_series_configuration"/>
            <list key="date_series_configuration"/>
            <list key="date_series_configuration (interval)">
              <parameter key="TimeStamp" value="2010-11-12 18:10:00 PM.10.minute"/>
            </list>
            <parameter key="date_format" value="yyyy-MM-dd HH:mm:ss"/>
            <parameter key="time_zone" value="SYSTEM"/>
            <parameter key="column_separator" value=","/>
            <parameter key="parse_all_as_nominal" value="false"/>
            <parameter key="decimal_point_character" value="."/>
            <parameter key="trim_attribute_names" value="true"/>
          </operator>
          <connect from_op="Create ExampleSet" from_port="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>
    
    Do let us know if this works for you?

    Hope this helps

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.