Skip to main content

How to Keep Several Fields from Each Item with Select in Power Automate

· 6 min read
Jagdish Kumawat
Founder @ Dewiride

SharePoint items come into a flow with dozens of fields. Select with Map in key and value mode builds a new object for each item with only the fields you list, under names you choose. Send that to an app, and it gets what it needs and nothing else.

Microsoft's data operations article describes it: Use the Data Operation – Select action to change the shape of objects in an array. For example, you can add, remove, or rename elements in each object in an array. Keeping one field, with Map in text mode, is in How to Pick One Field from Each Item with Select in Power Automate.

The example is Get Waiting Approvals, a flow of the Overtime Timesheet app. It returns the overtime entries waiting for an approver, and the app shows seven things about each.

Prerequisites​

Step 1: Add Select and Choose the Array​

Add Select under Data Operation. I named it Waiting entries. In From, pick the Body of Entries waiting for the caller.

Step 2: Add One Row per Field​

Leave Map in key and value mode. In each row, type a key on the left, the name the field gets in the new object. On the right, insert an expression that reads the field from the current item, item() (How to Add an Expression in Power Automate):

KeyValue (expression)What it is
iditem()?['ID']The item's ID
employeeitem()?['Author']?['DisplayName']Who logged the overtime (Created By)
departmentitem()?['Department']The department's name
startTimeitem()?['StartTime']When the shift started
endTimeitem()?['EndTime']When it ended
breakMinutesitem()?['BreakMinutes']The unpaid break
savedOnitem()?['Modified']When it was last saved

The designer showed each expression as a token named after its field:

The Waiting entries pane with From set to Body and Map in key and value mode with seven rows: id with ID, employee with Author.DisplayN..., department with Department, startTime with StartTime, endTime with EndTime, breakMinutes with BreakMinutes and savedOn with Modified

The keys are short and start in lower case, the way the app reads them. Created By, whose internal name is Author, is a Person field, so the row reads one part of it, the display name.

Step 3: Check Code View​

Code view shows exactly what each key reads:

The Code view of Waiting entries: type Select, from body('Entries_waiting_for_the_caller'), and select with id item()?['ID'], employee item()?['Author']?['DisplayName'], department item()?['Department'], startTime item()?['StartTime'], endTime item()?['EndTime'], breakMinutes item()?['BreakMinutes'] and savedOn item()?['Modified']

Waiting entries → Code view (inputs)
{
"from": "@body('Entries_waiting_for_the_caller')",
"select": {
"id": "@item()?['ID']",
"employee": "@item()?['Author']?['DisplayName']",
"department": "@item()?['Department']",
"startTime": "@item()?['StartTime']",
"endTime": "@item()?['EndTime']",
"breakMinutes": "@item()?['BreakMinutes']",
"savedOn": "@item()?['Modified']"
}
}

It's worth checking. While I built the action, one token on the pane was labelled Approvers Depa… although it read item()?['Department']. Code view showed the truth, and after the flow was saved and opened again, the labels matched.

Keep Only What's Needed​

At first, the action also had a reason key, the entry's free-text reason. The screen doesn't show it, so I removed the row and published the flow again. Every field a flow returns to an app travels to the person's device, so returning only what the screen shows keeps the rest in SharePoint.

The Result​

Each item became an object with seven fields, which the flow returned to the app (How to Return a Table from a Flow to Power Apps as JSON in Power Automate). One card on the app's screen uses all of them except id:

The Waiting for approval screen saying 1 entry is waiting for your decision, with one card: Admin User, Mon 09/11/2026, 17:00 to 19:00, 2.00 hours, Radiology, Waiting since 10/11/2026 11:20

Common Mistakes​

MistakeWhat happensDo this instead
Returning whole SharePoint itemsDozens of fields reach the appSelect the fields it uses
Picking Created By itself for a nameThe value is an object, not textIts DisplayName
Trusting the token labels on the paneA label can name the wrong fieldCheck Code view
Changing keys after the app uses themThe app reads a field that no longer existsChange the app at the same time

Troubleshooting​

SymptomLikely causeFix
A key is empty in the outputThe value's field name doesn't matchCompare with the input in the run
The output has one string per itemMap is in text modeSwitch back to key and value mode
A token shows another column's nameA designer labelRead Code view

FAQ​

Can a key read a nested field?​

Yes. item()?['Author']?['DisplayName'] reads DisplayName inside Author. Add ? before each step, so a missing field gives an empty value instead of an error.

Can I compute a value in a row?​

Yes. A row's value can be any expression, such as toLower(item()?['Department']).

Conclusion​

Select with Map in key and value mode turns each item into an object with only the fields you list, under your own names. Check Code view, and return to an app only what it shows.

Additional Resources​