The best practice is to use "Project ID" as the unique identifier.
In GCP, they currently only provide the Project Number in the billing CSV or through the API. CloudHealth is using BigQuery as the billing source which does not have Project Number resulting in a blank Project Number field when we pull data. After we derive a project from the billing file, we will then try and collect the Project Number using the API (as long as that project is correctly configured) but if that project is not configured correctly or is deleted (for historical projects), CloudHealth will be unable to collect that Project Number.
As a best practice (which is aligns with GCP), we suggest using Project ID as the unique identifier. Project ID cannot ever be changed within the GCP console (unlike Project Number) but it does have the ability to be customized so customers can build nomenclatures into the name (eg prod-analytics-2). This provides additional flexibility and can be applicable when creating perspective rules like “where Project ID contains 'analytics'”). Most important to CloudHealth, using Project ID will remove the dependency on the API.