Sometimes while audience compilation(Scheduled/Manual), the timer job get struck or fail and hence no further audience compilation occur.
The User profile application page will display compilation status to be compiling and it will remain continuously for n number of days, until the running timer service is not aborted.
Its nice that SharePoint provides a service named AudienceJob which is responsible of compiling audiences and works quite easily with powershell. What we need is to be able to run it is the Application ID of the User profile service where Audience is compiled.
To get the application ID either use powershell (SharePoint Powershell management console) Open it with as administrator.
$timerJob=[Microsoft.Office.Server.Audience.AudienceJob]::RunAudienceJob($param);
OR
copy the application ID from the user profile service application page URL (ApplicationID={})
Just replace “%2D” with “-” and you have your app ID of the user profile service application.
In SharePoint Powershell management console,
1. type AudienceJob 0 >>> to abort and
2. type AudienceJob 1 >>> to start
Once done in sequence , The compilation status will return to normal state and all audiences would have been compiled. Set up a scheduled time for daily/weekly/monthly compilation as per your requirement.
Cheers