scripts/billing/sql/monthly_cud_sud_savings.sql (49 lines of code) (raw):
#standardSQL
-- Query: Monthly CUD and SUD savings
-- Last Updated: 2019-07-23
--
-- This query calculates the monthly amount of savings from Committed Use Discounts (CUD)
-- and Sustained Use Discounts (SUD).
WITH
gce_data AS
(
SELECT *
FROM
-- *****************************************************************
-- *** INSERT YOUR BILLING BQ EXPORT TABLE NAME ON THE NEXT LINE ***
-- *****************************************************************
`PROJECT.DATASET.TABLE`
WHERE
service.description = "Compute Engine"
),
cost_data AS
(
SELECT
invoice.month AS invoice_month,
SUM(IF(LOWER(sku.description) NOT LIKE "%commitment%",
cost,
0)) AS usage_costs,
SUM(IF(LOWER(sku.description) LIKE "%commitment%",
cost,
0)) AS commitment_costs
FROM gce_data
GROUP BY 1
),
credit_data AS
(
SELECT
invoice.month AS invoice_month,
SUM(IF(LOWER(credits.name) LIKE "committed%",
credits.amount,
0)) AS CUD_credits,
SUM(IF(LOWER(credits.name) LIKE "sustained%",
credits.amount,
0)) AS SUD_credits
FROM gce_data
LEFT JOIN UNNEST(credits) AS credits
GROUP BY 1
)
SELECT
cost_data.invoice_month,
ROUND(usage_costs,2) AS usage_costs,
ROUND(commitment_costs,2) AS commitment_costs,
ROUND(CUD_credits,2) AS CUD_credits,
ROUND(-1*(commitment_costs + CUD_credits),2) AS net_CUD_savings,
ROUND(SUD_credits,2) AS SUD_credits
FROM cost_data
INNER JOIN credit_data
ON cost_data.invoice_month = credit_data.invoice_month
WHERE cost_data.invoice_month IS NOT NULL
ORDER BY 1 ASC