Hello, I am trying to create a scheduled flow to export CSV data to a SharePoint folder. Two of my columns contain percentages but when exported to a CSV file in SharePoint they show as decimals. I've been trying to use the formatnumber expression to switch them to percentages but I keep running into errors. I know I am probably missing a few steps (arrays, strings, etc.) in my flow but I've searched everywhere and I cannot find resolution. Any help would be greatly appreciated!
Current flow:
Recurrence
Run a query against a dataset
Select action to change column names
create a CSV table
Create file to SharePoint
Solved! Go to Solution.
Hi @apanek,
Sorry, the empty function can't handle the float data type. For the empty check we could convert the item to a string (just for the check).
Try something like:
if(empty(string(item()?['Distressed %'])), '', formatnumber(item()?['Distressed %'],'P2','en-us'))
Hi @apanek,
Can you share the errors?
Btw, did you use the formatnumber function with the 'P2' in the Select action?
formatnumber(item()?['nameofcolumn'], 'P2')
I added a select action with the following expression: formatnumber(item()?['Distressed__'], 'P2', 'en-us' and received the following error: The execution of template action 'Select' failed: The evaluation of 'query' action 'where' expression '{
"Distressed %": "@formatnumber(item()?['Distressed__'],'P2','en-us')"
}' failed: 'The template language function 'formatnumber' expects its first parameter to be an integer or a decimal number. The provided value is of type 'Null'. Please see https://aka.ms/logicexpressions#FormatNumber for usage details.'.
So I did some googling and added a VarString and then a compose action (
Hi @apanek,
It looks like that first error is cause because of an empty value. The formatnumber does not like that. You can try and avoid it by using an empty check. If that is false you could use the formatnumber.
Can you try this and see if that makes a difference?
if(empty(item()?['Distressed__']), '', formatnumber(item()?['Distressed__'],'P2','en-us'))
I receive the following error: The 'from' property value in the 'select' action inputs is of type 'String'. The value must be an array.
Hi @apanek,
Can you share a screenshot of your setup? That might help troubleshooting.
Btw, the expression I shared would be in one of the value fields of the Map field within the Select action.
Here are the screenshots. I am trying it in two different flows, one without the VarString I added and one with.
Hi @apanek,
Question about the scenario without the varString variable.
Which output are you using in the From of the Select action? Are you by any chance use the CSV output?
That would be a string and the Select From field would not like that. Can't you use the output of the Change Column Names instead?
No errors this time (yay!) but, the csv file that is created still shows the column as decimals vs %s.
Hi @apanek,
Can you share an example/screenshot of the inputs and outputs of your Change Column Names action from the flow run history of that last instance?
Just want to see what the column names and values are before and after that action has changed it.
Hi @apanek,
It might also be good to know if you rename the columns in the Change Column Names action you would also have to refer to them in your expression by their new key names in the Select 2 action.
I sent you a PM with the input/output screenshots.
I thought the same thing with the expression, however, when I change the expression to the name I changed in the previous action I receive the following error: The execution of template action 'Select_2' failed: The evaluation of 'query' action 'where' expression '{
"Distressed %": "@if(empty(item()?['Distressed %']), '', formatnumber(item()?['Distressed %'],'P2','en-us'))"
}' failed: 'The template language function 'empty' expects its parameter to be an object, an array or a string. The provided value is of type 'Float'.
Hi @apanek,
Sorry, the empty function can't handle the float data type. For the empty check we could convert the item to a string (just for the check).
Try something like:
if(empty(string(item()?['Distressed %'])), '', formatnumber(item()?['Distressed %'],'P2','en-us'))
No errors, but the file in SharePoint still outputs decimals.
The output of the select action looks like it is working properly though.
.
Hi @apanek,
Just to double check. You used the output of the Select 2 action in your Create CSV table action From field, correct?
Of course I didn't (face palm), sorry about that! I did just now and it worked. Thank you for sticking with me and helping me get the results I needed.
User | Count |
---|---|
88 | |
37 | |
26 | |
13 | |
13 |
User | Count |
---|---|
127 | |
54 | |
38 | |
24 | |
21 |