Try with the below code, it uses pack() function to create dynamic JSON object. It uses bag_keys(Apps) to extracts the keys (Application 1, Application 2, Application 3) as an array and mv-expand splits the keys into separate rows. Now convert AppKey to a string and extract the corresponding value from the Apps. Use arg_max(AppValue, AppKey) to find the application with the highest value in each row.
let data = datatable(Application_1:int, Application_2:int, Application_3:int)
[
3, 20, 1,
15, 8, 22,
5, 25, 10
];
data
| extend Apps = pack('Application 1', Application_1, 'Application 2', Application_2, 'Application 3', Application_3)
| mv-expand AppKey = bag_keys(Apps)
| extend AppKey = tostring(AppKey)
| extend AppValue = toint(Apps[AppKey])
| summarize MaxApplication = arg_max(AppValue, AppKey) by Application_1, Application_2, Application_3
| project Application_1, Application_2, Application_3, MaxApplication=AppKey
Output:
