write the loop label models outputs to different excel files

mansour
mansour New Altair Community Member
edited November 2024 in Community Q&A
Dear All
I wonder how I can write the output Excel for the Loop Lable model on new Excel each time, when I use this model, whenever it tries to write an Excel, it overwrites the previous loop results. I want it to be written in a new Excel each time.
Best wishes.
Mansour
Tagged:

Best Answer

  • MartinLiebig
    MartinLiebig
    Altair Employee
    Answer ✓
    while your solution works perfectly, you can even make it slightly easier.

    There are a few "hidden macros", which are always available. The most useful one is maybe %{a}, which always gives you the execution count of the current operator.
    You can just use
    /path/to/file/%{a}.xlsx
    as a path in Write excel.

    This is the list of other macros which are always available:

    • %{n} or %{operator_name} with the name of this operator
    • %{c} with the class of this operator
    • %{t} with the current system date and time
    • %{a} or %{execution_count} with the number of times the operator was applied
    • %{b} with the number of times the operator was applied plus one (a shortcut for %{p[1]})
    • %{p[number]} with the number of times the operator was applied plus number
    • %{v[OperatorName.ValueName]} with the value "ValueName" of the operator "OperatorName"
    • %{process_name}: will be replaced by the name of the process (without path and extension)
    • %{process_file}: will be replaced by the file name of the process (with extension)
    • %{process_path}: will be replaced by the complete absolute path of the process file
    • %{execution_count}: will be replaced by the number of times the current operator was applied.
    • %{operator_name}: will be replaced by the name of the current operator.
    • %{tempdir} gives you the directory of the tempdir on this machine


    Best,
    Martin



Answers

  • RolandJones
    RolandJones
    Altair Employee
    Hi Mansour,

    Just checking if you have a desired naming convention for the Excel files you're producing?

    What I would do here is use macros inside the loop and modify the write Excel to have that macro as a suffix. Here's a small example that you can point to your ExampleSet.

    Best,
    Roland

    <?xml version="1.0" encoding="UTF-8"?><process version="10.2.000">
    
    <context>
    <input/>
    <output/>
    <macros/>
    </context>
    <operator activated="true" class="process" compatibility="10.2.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="UTF-8"/>
    <process expanded="true">
    <operator activated="true" class="retrieve" compatibility="10.2.000" expanded="true" height="68" name="Retrieve dataset" width="90" x="45" y="34">
    <parameter key="repository_entry" value="//Local Repository/Demos/Full-Iris"/>
    </operator>
    <operator activated="true" class="set_macro" compatibility="10.2.000" expanded="true" height="82" name="Set Macro" width="90" x="179" y="34">
    <parameter key="macro" value="counter"/>
    <parameter key="value" value="1"/>
    </operator>
    <operator activated="true" class="loop_labels" compatibility="10.2.000" expanded="true" height="82" name="Loop Labels" width="90" x="313" y="34">
    <process expanded="true">
    <operator activated="true" class="write_excel" compatibility="10.2.000" expanded="true" height="103" name="Write Excel" width="90" x="112" y="34">
    <parameter key="excel_file" value="C:/Users/rjones/Downloads/test-%{counter}.xlsx"/>
    <parameter key="file_format" value="xlsx"/>
    <enumeration key="sheet_names"/>
    <parameter key="sheet_name" value="RapidMiner Data"/>
    <parameter key="date_format" value="yyyy-MM-dd HH:mm:ss"/>
    <parameter key="number_format" value="#.0"/>
    <parameter key="encoding" value="UTF-8"/>
    </operator>
    <operator activated="true" class="generate_macro" compatibility="10.2.000" expanded="true" height="82" name="Generate Macro" width="90" x="313" y="85">
    <list key="function_descriptions">
    <parameter key="counter" value="eval(%{counter})+1"/>
    </list>
    </operator>
    <connect from_port="example set" to_op="Write Excel" to_port="input"/>
    <connect from_op="Write Excel" from_port="through" to_op="Generate Macro" to_port="through 1"/>
    <connect from_op="Generate Macro" from_port="through 1" to_port="out 1"/>
    <portSpacing port="source_example set" spacing="0"/>
    <portSpacing port="sink_out 1" spacing="0"/>
    <portSpacing port="sink_out 2" spacing="0"/>
    </process>
    </operator>
    <connect from_op="Retrieve dataset" from_port="output" to_op="Set Macro" to_port="through 1"/>
    <connect from_op="Set Macro" from_port="through 1" to_op="Loop Labels" to_port="example set"/>
    <connect from_op="Loop Labels" from_port="out 1" 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>
  • MartinLiebig
    MartinLiebig
    Altair Employee
    Answer ✓
    while your solution works perfectly, you can even make it slightly easier.

    There are a few "hidden macros", which are always available. The most useful one is maybe %{a}, which always gives you the execution count of the current operator.
    You can just use
    /path/to/file/%{a}.xlsx
    as a path in Write excel.

    This is the list of other macros which are always available:

    • %{n} or %{operator_name} with the name of this operator
    • %{c} with the class of this operator
    • %{t} with the current system date and time
    • %{a} or %{execution_count} with the number of times the operator was applied
    • %{b} with the number of times the operator was applied plus one (a shortcut for %{p[1]})
    • %{p[number]} with the number of times the operator was applied plus number
    • %{v[OperatorName.ValueName]} with the value "ValueName" of the operator "OperatorName"
    • %{process_name}: will be replaced by the name of the process (without path and extension)
    • %{process_file}: will be replaced by the file name of the process (with extension)
    • %{process_path}: will be replaced by the complete absolute path of the process file
    • %{execution_count}: will be replaced by the number of times the current operator was applied.
    • %{operator_name}: will be replaced by the name of the current operator.
    • %{tempdir} gives you the directory of the tempdir on this machine


    Best,
    Martin



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.