The Altair Community is migrating to a new platform to provide a better experience for you. In preparation for the migration, the Altair Community is on read-only mode from October 28 - November 6, 2024. Technical support via cases will continue to work as is. For any urgent requests from Students/Faculty members, please submit the form linked here

[SOLVED] Macro + Path = Problem

Q-DogQ-Dog Member Posts: 32 Contributor II
edited November 2018 in Help
Hi there,

I've got a problem modifying a path using "Generate Macro".

In the "File Loop" operator you get one (actually two) macro pointing the a folder (file_path and parent_path). If you want to modify this macro using "Generate Macro" you get a syntax error.

Example: suffix("%{parent_path}",10)

The problem is the backslash (\) in the path which will be interpreted wrong, but you can't escape it.. or can you?


Background:
I want to use the "File Loop" operator to read in a number of csv files in different subdirectories and store them in their respective folder.

Example:
"...\2012-05-02\file1.csv" ---> "...\myRepository\2012-05-02\file1.ioo"
"...\2009-10-31\file2.csv" ---> "...\myRepository\2009-10-31\file2.ioo"

Therefore I need the current directory (relative path), which I unfortunately isn't provided in "File Loop". Hence I tried to modify the macro "parent_path" (absolute path), which will lead to the error described above.


Cheers Q-Dog

Answers

  • awchisholmawchisholm RapidMiner Certified Expert, Member Posts: 458 Unicorn
    Hello,

    I had the same problem. In the end I wrote a Groovy script to manipulate the contents of the macro to return the parts I wanted.

    Regards

    Andrew
  • Q-DogQ-Dog Member Posts: 32 Contributor II
    Thanks for your answer awchisholm, could you maybe post that script?

    // Edit
    For everyone who's interested:

    // Import the MacroHandler
    import com.rapidminer.MacroHandler;

    // Get the Macro Handler
    MacroHandler handler = operator.getProcess().getMacroHandler();

    // Get the Macro with the name "path"
    String macro = handler.getMacro("path");

    // Tokenize the macro by the delimiter \
    List tokens = macro.tokenize("\\");

    // Get the last token (the folder)
    String folder = tokens.get(tokens.size()-1);

    // Add a new macro named folder
    handler.addMacro("folder",folder);
  • awchisholmawchisholm RapidMiner Certified Expert, Member Posts: 458 Unicorn
    Hello

    You beat me to it - I was about to post something similar

    regards

    Andrew
Sign In or Register to comment.