Forum Discussion
Need help extracting single values from specific Records
- 1 year ago
Hi MatheusGuzman
There are a couple of ways to achieve this, depening on your specific needs:
List.First or List.Last will get you the first or last record from the list in the status field
alternatively you can use optional item access to extract an item on its zero-based index position and optional field access, here's what that could look like.Pick one of these lines of code and paste them into the formula area of the Custom Column dialog:
List.First([status])[creationDate]?
List.Last([status])[creationDate]?
[status]{1}?[creationDate]?
- 1 year ago
You can use the Table.TransformColumns function to work within the lists in the status column.
a sample would look like...= Table.TransformColumns(duplicateStatusList, {{"creationDate", each List.First(List.Select(_, each Record.HasFields(_, "creationDate")))}})In this function, for each row in the table (table is named 'duplicateStatusList' here) in the 'creationDate' column select the first value in the list of records that have 'creationDate' as the header.
You can then expand the resulting record in the 'creationDate' column.
Here is a complete example code you can paste into the advanced editor of a blank query.
let Source = #table( {"ticketID", "status"}, { {10, {[id="31"], [creationDate=#date(2024,11,21)], [action=7]}}, {9,{[id="32"], [creationDate=#date(2024,11,22)], [action=6]}} } ), duplicateStatusList = Table.AddColumn(Source, "creationDate", each [status]), selectFirstCreationDate = Table.TransformColumns(duplicateStatusList, {{"creationDate", each List.First(List.Select(_, each Record.HasFields(_, "creationDate")))}}), expandRecord = Table.ExpandRecordColumn(selectFirstCreationDate, "creationDate", {"creationDate"}, {"creationDate"}) in expandRecordHope this helps.
- 1 year ago
Use the below pattern and replace each part with the desired name or number
Tablename[columnname]{row number}[record field name]
- Anonymous1 year ago
Hi MatheusGuzman ,
You could add a costom column by this formula
=[status]{0}[creationDate]I've made a test for your reference:
Best Regards,
Bof
You can use the Table.TransformColumns function to work within the lists in the status column.
a sample would look like...
= Table.TransformColumns(duplicateStatusList, {{"creationDate", each List.First(List.Select(_, each Record.HasFields(_, "creationDate")))}})
In this function, for each row in the table (table is named 'duplicateStatusList' here) in the 'creationDate' column select the first value in the list of records that have 'creationDate' as the header.
You can then expand the resulting record in the 'creationDate' column.
Here is a complete example code you can paste into the advanced editor of a blank query.
let
Source =
#table(
{"ticketID", "status"},
{
{10, {[id="31"], [creationDate=#date(2024,11,21)], [action=7]}},
{9,{[id="32"], [creationDate=#date(2024,11,22)], [action=6]}}
}
),
duplicateStatusList = Table.AddColumn(Source, "creationDate", each [status]),
selectFirstCreationDate = Table.TransformColumns(duplicateStatusList, {{"creationDate", each List.First(List.Select(_, each Record.HasFields(_, "creationDate")))}}),
expandRecord = Table.ExpandRecordColumn(selectFirstCreationDate, "creationDate", {"creationDate"}, {"creationDate"})
in
expandRecord
Hope this helps.