How much of my GCP spend has no labels?
Unallocatable spend by project — the denominator for any showback effort.
Costs money to run — queries your billing export tableChecked 4 Aug 2026
SELECT
project.id AS project_id,
ROUND(SUM(cost), 2) AS total_cost,
ROUND(SUM(IF(ARRAY_LENGTH(labels) = 0, cost, 0)), 2) AS unlabelled_cost,
ROUND(SAFE_DIVIDE(
SUM(IF(ARRAY_LENGTH(labels) = 0, cost, 0)),
SUM(cost)), 3) AS unlabelled_fraction
FROM `PROJECT.DATASET.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
WHERE _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 35 DAY)
AND cost > 0
GROUP BY project_id
ORDER BY unlabelled_cost DESC;What it returns
- unlabelled_fraction
- Share of the project's spend carrying no resource label at all.
How to read it
- Some GCP charges cannot carry labels — support, some network egress, certain marketplace items. Counting those as failures makes the number meaningless and the team defensive.
- Project labels often carry allocation even when resource labels do not. Check project.labels before concluding a project is unallocated.
- The FinOps Foundation puts the initial target at under 10% untagged, measured against taggable spend rather than all spend.
Take it further
Run this once, or have it run every day.
Finitizer evaluates this class of question continuously against your live BigQuery estate, tracks how each number moves between runs, and turns findings into assigned tasks. Read-only and keyless.