The Multi-Select query type creates a mulit-dimensional array variable type depending on the number of columns that you have. For example, if I have a simple single column query such as
--------------------------------------------
VolumeNames
--------------------------------------------
Jeremy
Pirate
Goodrum
WFA
--------------------------------------------
Then and I select Jeremy and Goodrum then I end up with a one dimensional array string of Jeremy,Goodrum
On the other hand, if I create a more complex query with multiple column results. Say for example, I return the nodeName and portNames on a cDOT system
--------------------------------------------
Node Name | Port Name
--------------------------------------------
Node01 | a0a
Node02 | a0a
Node01 | e0a
Node02 | e0b
--------------------------------------------
Then I select Node01 and Node02 ports a0a, I will end up with a multi-dimmensional array (an array containing an array) - Node01~a0a,Node02~a0a
Ok, so why is this important? I can use the functions listed below to manipulate the data. In your use case, you want to create a Repeat Row based on the number of volumes (getSize) selected and then apply the new export to that specific Volume (getValueAt($VolumeList, Index)). The challenge here is that you need to ensure that no other inputs depend on that variable for further limiting. IE, don't try to select multiple volumes in a single input and then use that to filter the available qtrees.
getSize()
--------------------------------------------
This function returns the size of a 1 or 2 dimensional array.
For a 1-dimensional array it returns the number of elements in the array, for example getSize("a,b,c") will return 3.
For a 2-dimensional array it returns the number of rows in the array, for example getSize("a~1,b~2,c~3,d~4") will return 4
--------------------------------------------
getValueAt()
--------------------------------------------
This function accepts a 1 dimensional array as a comma separated String and returns the element at the location specified by the index argument
arrayVar - String - String representation of a 1-dimensional array
index - int - index starting from 1 of the element to be returned
For example: getValueAt("a,b,c,d,e,f",3) would return c.
--------------------------------------------
getValueAt2D()
--------------------------------------------
This function accepts a 2-dimensional array and returns the element at the location specified by the rowIndex and colIndex arguments
arrayVar - String - String representation of a 2-dimensional array
rowIndex - int - row number starting from 1 of the element to be returned
colIndex - int - column number starting from 1 of the element to be returned
For example: getValueAt2D("a~1,b~2",2,1) would return b.
--------------------------------------------
getValueFrom2DByRowKey() -
--------------------------------------------
This function accepts a 2-dimensional array and returns a column value matching the given row key and column index. First column in each row is considered as the key for the row.
arrayVar - String - String representation of a 2-dimensional array.
rowKey - String - Row matching the first column as the given rowKey will be selected.
colIndex - String - From the selected row, the value from the given column index will be returned.
For example: getValueFrom2DByRowKey("a~5~P,b~6~Q", "b", 3) would return "Q".
--------------------------------------------
Jeremy Goodrum, NetApp
The Pirate
Twitter: @virtpirate
Blog: www.virtpirate.com