灵活省钱方案

灵活节省方案 (FSP) 是一种基于支出的承诺使用折扣 (CUD),可帮助您节省 Google Cloud上的使用费用。通过 FSP,您承诺在订阅期(1 年或 3 年)内,在每月权益窗口期内,为一系列符合条件的产品(包括第一方、开源和参与计划的第三方模型)支付支出下限。作为承诺的回报,您可以在符合条件的使用量上享受折扣。

FSP 为基于支出的 CUD 引入了两项新功能:

与使用每小时权益窗口的标准基于支出的承诺使用折扣 (CUD) 不同,FSP 使用每月权益窗口。这使得它们非常适合具有突发性或不可预测的使用模式的工作负载。

查找符合条件的 SKU

您的 Gemini Enterprise FSP 适用于符合条件的 Google Cloud 生成式 AI 模型和产品,包括第一方模型(例如 Gemini)、开源模型即服务产品,以及通过 Vertex AI 和 Cloud Marketplace 提供的参与计划的第三方 (3P) 基础模型。如需查看适用范围内的 SKU 的完整列表,请参阅符合 Gemini Enterprise Flexible Savings Plan 条件的 SKU 页面。

灵活节省方案的运作方式

购买弹性节省方案时,您承诺在 1 年或 3 年期限内每月支出特定金额。系统会监控您的用量,并应用适用的折扣后使用模式费率。

如果您在符合条件的产品上使用了每月承诺金额,则无需为 FSP 付费。当您使用符合条件的产品时,您的 FSP 承诺金额会相应扣减。

范围和定价

以下规则适用于 FSP 范围和定价:

  • 订阅期限限制:期限超过 1 个月的订阅无法通过 FSP 享受折扣。例如,如果您订阅了某款产品 1 年,则 FSP 折扣不适用于该产品。
  • 支付更优惠的价格:对于所有符合条件的产品和订阅,您始终支付较低(更优惠)的价格。如果您针对此承诺范围内的任何产品拥有协议价,系统将自动应用最低价格。FSP 绝不会将任何产品的价格提高到超出其标准按需费率。如需了解详情,请参阅支付更优惠的费率。
  • 不符合折扣条件的商品:部分商品无法享受 FSP 折扣,但仍会从 FSP 中扣减。如需了解这些价格,请参阅价格表报告。

Gemini Enterprise 价格

对于 Gemini Enterprise Flexible Savings Plan Eligible SKUs 页面中的所有 SKU,1 年期 Flexible Savings Plan 提供 10% 的折扣,3 年期 Flexible Savings Plan 提供 20% 的折扣,但以下 SKU 除外,这些 SKU 不会从 FSP 获得任何增量折扣,但仍会消耗 FSP 承诺:

产品 说明 SKU ID
预配吞吐量 Vertex AI:预配吞吐量 3 个月 13D9-6212-6E17
预配吞吐量 Vertex AI:预配吞吐量 1 年 9192-74A6-DE45
预配吞吐量 Agent Platform 模型:预配吞吐量 3 个月(非全球) F878-80F5-63BF
预配吞吐量 Agent Platform 模型:预配吞吐量 1 年(非全球) 2106-EA10-F9CC
预配吞吐量 Vertex AI 开源模型即服务:预配吞吐量 3 个月 1E0D-E522-0E12
预配吞吐量 Vertex AI 开源模型即服务:预配吞吐量 1 年 6009-4CB8-85D6
全量微调 第一方基础模型全量微调服务 1 年承诺期 88CB-4A51-012D
全量微调 第一方基础模型全量微调服务 3 年承诺期 0280-9537-E40B
全量微调 推断全量微调的第一方模型(1 年承诺) 74E1-4528-1F94
全量微调 全量微调第一方模型推理 3 年承诺 26B4-6E81-10C0
Speech-to-Text 设备端 Speech-to-Text 语言订阅 9886-4062-830D
Speech-to-Text 设备端 Speech-to-Text 服务库订阅 BEF8-431D-9BF4
Text-to-Speech 设备端 Text-to-Speech 服务库订阅 3D6B-450F-BA51
Text-to-Speech Text-to-Speech 设备端语音订阅 80AF-473F-9A8D
Gemini Enterprise 应用 Gemini Business:订阅 - 1 个月 D03F-9D37-4753
Gemini Enterprise 应用 Gemini Business:订阅 - 一年期 FE0D-41B2-9575
Gemini Enterprise 应用 Gemini Enterprise Business 版:订阅预付款 - 1 个月 FA2D-55B2-023F
Gemini Enterprise 应用 Gemini Enterprise Business 版:订阅预付款 - 1 年期 FB43-B23B-BD15
Gemini Enterprise 应用 Gemini Enterprise Standard:订阅 - 1 个月 0532-C2F0-1DF0
Gemini Enterprise 应用 Gemini Enterprise Standard:订阅 - 1 年期 B3D3-B9E1-610F
Gemini Enterprise 应用 Gemini Enterprise Plus:订阅 - 一个月 4EDF-A125-F89E
Gemini Enterprise 应用 Gemini Enterprise Plus:订阅 - 1 年期 5657-9AD2-26F6
Gemini Enterprise 应用 Gemini Enterprise Frontline:订阅 - 1 个月 C3B7-10E2-45EE
Gemini Enterprise 应用 Gemini Enterprise Frontline:订阅 - 1 年期 070B-47E2-47B3
Gemini Enterprise 应用 面向新兴市场的 Gemini Enterprise Standard:订阅 - 1 个月 54F6-590C-84B5
Gemini Enterprise 应用 面向新兴市场的 Gemini Enterprise Standard:订阅 - 1 年期 C853-D67D-D911
Gemini Enterprise 应用 Gemini Notebook Enterprise:订阅 - 1 个月 BF82-0F2F-7FA3
Gemini Enterprise 应用 Gemini Notebook Enterprise:订阅 - 1 年期 8597-66F8-5FF1

第三方模型和非公开优惠

Gemini Enterprise Flexible Savings Plan 支持通过 Vertex AI 和 Cloud Marketplace 提供的参与计划的第三方 (3P) 基础模型。

与非公开优惠的互动

以下规则用于管理 FSP 和非公开优惠之间的互动:

  • 福利应用层次结构:
    1. 非公开优惠折扣:如果您通过非公开优惠购买了符合 FSP 条件的第三方产品,并且该优惠为您提供了合作伙伴定价的折扣,则系统会应用折扣价格和非公开优惠条款。此外,您的折扣支出将减少您的每月 FSP 承诺。
    2. 非公开优惠 CUD 赠金:如果您通过非公开优惠购买了符合 FSP 条件的第三方产品,并且该优惠为您提供了赠金,则购买非公开优惠或分期付款将减少您的每月 FSP 承诺。请注意,您使用购买的赠金不会额外扣减您的每月 FSP 承诺金额。
企业协议承诺扣减

根据 FSP 购买第三方模型的支出会从贵组织的企业承诺金额中扣减,具体取决于标准 Cloud Marketplace 扣减规则和企业协议中定义的合同上限。

使用权时间窗口

使用权期限是指根据承诺金额衡量用量的周期性时间段。如果您未在权益期内用完所有承诺金额,系统会向您收取剩余金额。未充分利用的 FSP 承诺不会结转。

FSP 支持每月权益期。这意味着您有一个日历月的时间来消耗承诺支出。不过,结算系统会每小时评估一次您的用量并应用 FSP 折扣。

例如,如果您有 100 美元的月度承诺,系统会每小时检查一次您的用量。如果您在第 1 小时内有符合条件的使用量,则系统会应用折扣,并计入您的 100 美元承诺。这种情况会持续整个月,直到您达到 100 美元的限额或该月结束。如果您在月底之前的使用量超过 100 美元,则后续使用量将按默认用量模型费率收费。

超额使用的承诺(超出承诺用量)

如果您在给定月份的符合条件的用量超过了您承诺的每月金额,则 FSP 会涵盖不超过限额的用量,其余部分将按标准按需费率或您针对此承诺范围内的任何产品协商的价格计费。

  • 机制:系统会针对等于您每月承诺金额的用量应用 FSP 折扣费率。
  • 费用:当月超出该限额的任何用量都将按标准按需价格(“默认”使用模式)或承诺范围内任何产品的协商价格计费。您不会在超额部分获得任何 FSP 折扣。

未充分利用的承诺(未达到承诺)

如果您在给定月份的符合条件的使用量低于承诺金额,您仍需支付承诺的全部费用。

  • 不结转:未使用的承诺金额不会结转到下个月。
  • 费用:您需要支付所购承诺的每月全额费用。在月底,您需要为承诺的未使用部分支付承诺费用。

折扣的应用方式

在 FSP 的范围内,折扣按以下顺序应用:

  1. 使用时间:系统会先应用较早使用小时内的费用。
  2. 折扣级别:接下来,系统会应用在给定使用小时内相对于按需定价折扣百分比最高的使用量。这种贪婪选择可确保您的承诺金额首先提供最高的节省率。
  3. 按比例应用:如果多个资源的使用量在一小时内共享相同的折扣百分比,则承诺会按比例应用于该折扣级别和使用小时内的所有费用。

如果您有 FSP 涵盖的订阅,则订阅权益会首先应用于您的用量。您的订阅费用会计入 FSP 支出承诺,但 FSP 不会为订阅价格提供额外折扣。

享受更优惠的价格

系统会应用默认使用模式价格、第三方非公开优惠和 FSP 使用模式价格中的最低价格。

开始时间和按比例计算

购买 FSP 后,承诺会根据购买时间激活:

  • 在 :00 到 :49(小时的前 50 分钟)购买:在下一个小时开始时生效。
  • 在 :50 到 :59(该小时的最后 10 分钟)购买:跳过一个小时,并在下一个小时开始时生效。

所有激活和授权窗口边界均采用太平洋时间 (PT) (America/Los_Angeles)。

月中购买的按月比例分摊

如果您在月中购买 FSP 并立即激活,则初始权益期将按该日历月剩余时间按比例计算:

  1. 按比例计算的首月:您将获得从激活时间戳到当前日历月结束(当月最后一天的晚上 11:59:59 PT)期间按比例计算的支出权益。该非整月的承诺费用和利用率不足阈值会按该月已用小时数的比例进行缩放。
  2. 后续日历月:从下一个日历月的第一天凌晨 0:00(太平洋时间)开始,每个权益期都与一个完整的日历月保持一致,直至 1 年期或 3 年期结束
  3. 上个月按比例计算:您将获得从当前日历月开始到期限结束之日期间按比例计算的支出权利。该部分月份的承诺费用和利用率不足阈值会按该月已用小时数的比例进行缩放。

例如,假设您购买了 1 年期 FSP,每月承诺金额为 3,000 美元,于 4 月 16 日凌晨 12:00(太平洋时间)生效(4 月总共有 30 天,还剩 15 天)。您 4 月的承诺金额按比例计算为 $1,500 ($3,000 × 15/30)。

取消、迁移和更正

购买后,您无法取消或修改 FSP。在承诺期间,您必须按约定的每月金额支付费用。如果您无意中购买了承诺或配置承诺时出错,请与 Cloud Billing 支持团队联系以获取帮助。

折扣和费用的归因

FSP 使用比例归因,这与其他基于支出的承诺使用折扣 (CUD) 使用的归因模型相同。费用每小时归因一次。系统会根据每个项目消耗的符合条件的总用量按比例向 Cloud Billing 账号中的项目收取费用。如需了解详情,请参阅承诺使用折扣费用和赠金的归因。

购买灵活省钱方案

您可以使用 Google Cloud 控制台(自助服务)直接购买 FSP。

如需购买弹性节省方案,您需要提供与承诺期限关联的优惠 ID。如需查找优惠 ID,请参阅确定要购买的优惠。

配置 FSP 时,您需要指定:

  • 订阅期(1 年或 3 年)。
  • 每个月度使用权期限的承诺金额。
  • FSP 的名称。此名称在您的所有 FSP 和承诺使用折扣 (CUD) 中必须是唯一的。

查看您的灵活节省方案

您可以在 Google Cloud 控制台中的承诺使用折扣 (CUD) 页面上查看有效和历史弹性 Savings Plan。

该页面提供两个级别的详细信息(汇总视图和实例视图),可帮助您管理承诺。如需详细了解这些视图,请参阅查看承诺。

在实例视图中,您可以查看使用权窗口的细分。

监控和分析灵活节省方案

您可以使用标准 Cloud Billing FinOps 工具监控和管理 FSP:

  • 费用报告:查看您的 FSP 承诺费用和按需费用。您可以单独查看 FSP 涵盖的费用和用量。
  • 费用表报告:通过查看 FSP 费用的详细明细来核对账单。
  • 将 Cloud Billing 数据导出到 BigQuery:设置将 Cloud Billing 数据导出到 BigQuery,以编程方式跟踪活跃 FSP、历史效果和利用率指标。您可以使用示例查询来分析这些数据。

查询示例

使用以下示例查询,通过导出到 BigQuery 的 Cloud Billing 数据来分析弹性 Savings Plan (FSP)。

计算承诺可节省的费用

使用以下查询可计算承诺节省金额(以美元为单位)以及开放和封闭权利窗口的百分比。

打开窗口

此查询会计算开放的权利窗口的总节省金额和总节省率:按需费用减去 FSP 涵盖用量的 FSP 折扣费用。未充分利用费不包含在内,因为该费用仅在窗口关闭后收取。如需过滤特定使用模式,请将 LIKE ANY ('%') 中的 '%' 替换为目标使用模式 ID。

WITH
  fsp_windows AS (
    SELECT DISTINCT
      IF(
        STARTS_WITH(subscription.instance_id, 'subscriptions/'),
        subscription.instance_id,
        CONCAT('subscriptions/', subscription.instance_id)) AS fsp_instance_id,
      subscription.display_name AS fsp_display_name,
      subscription.entitlement_period,
      consumption_model.id AS consumption_model_id,
      consumption_model.description AS consumption_model_description,
      entitlement_window.start_time AS window_start_time,
      entitlement_window.end_time AS window_end_time
    FROM `PROJECT.DATASET.cud_subscriptions_export`,
      UNNEST(entitlement_schedule) AS entitlement_window
    WHERE
      DATE(_PARTITIONTIME) = (
        SELECT MAX(DATE(_PARTITIONTIME)) FROM `PROJECT.DATASET.cud_subscriptions_export`)
      AND consumption_model.id LIKE ANY ('%')
      AND CURRENT_TIMESTAMP() >= entitlement_window.start_time
      AND CURRENT_TIMESTAMP() < entitlement_window.end_time
  ),
  fsp_cost AS (
    SELECT
      COALESCE(
        NULLIF(consumption_model.applied_subscription_instance_id, ''),
        subscription.instance_id) AS fsp_instance_id,
      IFNULL(consumption_model.applied_subscription_instance_id, '') = '' AS is_fee_line,
      usage_start_time,
      currency,
      SUM(CAST(cost AS NUMERIC)) AS cost,
      SUM(CAST(cost_at_effective_price_default AS NUMERIC)) AS cost_at_on_demand_price
    FROM `PROJECT.DATASET.gcp_billing_export_resource_v1_BILLING_ACCOUNT_ID`
    WHERE
      DATE(_PARTITIONTIME) >= DATE_SUB(CURRENT_DATE('America/Los_Angeles'), INTERVAL 93 DAY)
      AND COALESCE(
        NULLIF(consumption_model.applied_subscription_instance_id, ''),
        subscription.instance_id) IN (SELECT fsp_instance_id FROM fsp_windows)
    GROUP BY ALL
  ),
  fsp_window_totals AS (
    SELECT
      fsp_windows.fsp_instance_id,
      fsp_windows.fsp_display_name,
      fsp_windows.entitlement_period,
      fsp_windows.consumption_model_id,
      fsp_windows.consumption_model_description,
      fsp_windows.window_start_time,
      fsp_windows.window_end_time,
      fsp_cost.currency,
      IFNULL(SUM(IF(fsp_cost.is_fee_line, 0, fsp_cost.cost_at_on_demand_price)), 0)
        AS on_demand_cost,
      IFNULL(SUM(IF(fsp_cost.is_fee_line, 0, fsp_cost.cost)), 0) AS usage_cost
    FROM fsp_windows
    LEFT JOIN fsp_cost
      ON
        fsp_cost.fsp_instance_id = fsp_windows.fsp_instance_id
        AND fsp_cost.usage_start_time >= fsp_windows.window_start_time
        AND fsp_cost.usage_start_time < fsp_windows.window_end_time
    GROUP BY ALL
  )
SELECT
  fsp_instance_id,
  fsp_display_name,
  entitlement_period,
  consumption_model_id,
  consumption_model_description,
  DATETIME(window_start_time, 'America/Los_Angeles') AS window_start_time_pt,
  DATETIME(window_end_time, 'America/Los_Angeles') AS window_end_time_pt,
  currency,
  on_demand_cost - usage_cost AS gross_commitment_savings,
  SAFE_DIVIDE(on_demand_cost - usage_cost, on_demand_cost) AS gross_commitment_savings_rate
FROM fsp_window_totals
ORDER BY fsp_instance_id, window_start_time_pt

替换以下内容:

  • PROJECT:包含 Cloud Billing 导出数据集的 Google Cloud 项目的 ID。
  • DATASET:包含 Cloud Billing 导出表的 BigQuery 数据集的名称。
  • BILLING_ACCOUNT_ID:您的 Cloud Billing 账号 API ID,其中连字符替换为下划线。

关闭窗口

此查询会计算应用利用率不足费用 (FEE_UTILIZATION_OFFSET) 后已完成权益窗口的净承诺节省金额和净节省率。在 fsp_windows 和 fsp_cost 中,更新 DATE '2026-07-01' 和 DATE '2026-10-01' 以匹配目标窗口范围,如果您想按特定使用模式过滤,请替换 LIKE ANY ('%') 中的 '%'。

WITH
  fsp_windows AS (
    SELECT DISTINCT
      IF(
        STARTS_WITH(subscription.instance_id, 'subscriptions/'),
        subscription.instance_id,
        CONCAT('subscriptions/', subscription.instance_id)) AS fsp_instance_id,
      subscription.display_name AS fsp_display_name,
      subscription.entitlement_period,
      consumption_model.id AS consumption_model_id,
      consumption_model.description AS consumption_model_description,
      entitlement_window.start_time AS window_start_time,
      entitlement_window.end_time AS window_end_time
    FROM `PROJECT.DATASET.cud_subscriptions_export`,
      UNNEST(entitlement_schedule) AS entitlement_window
    WHERE
      DATE(_PARTITIONTIME) = (
        SELECT MAX(DATE(_PARTITIONTIME)) FROM `PROJECT.DATASET.cud_subscriptions_export`)
      AND consumption_model.id LIKE ANY ('%')
      AND entitlement_window.start_time >= TIMESTAMP(DATE '2026-07-01', 'America/Los_Angeles')
      AND entitlement_window.end_time <= TIMESTAMP(DATE '2026-10-01', 'America/Los_Angeles')
      AND entitlement_window.end_time <= CURRENT_TIMESTAMP()
  ),
  fsp_cost AS (
    SELECT
      COALESCE(
        NULLIF(consumption_model.applied_subscription_instance_id, ''),
        subscription.instance_id) AS fsp_instance_id,
      IFNULL(consumption_model.applied_subscription_instance_id, '') = '' AS is_fee_line,
      usage_start_time,
      currency,
      SUM(CAST(cost AS NUMERIC)) AS cost,
      SUM(CAST(cost_at_effective_price_default AS NUMERIC)) AS cost_at_on_demand_price,
      SUM(
        (
          SELECT SUM(CAST(credit.amount AS NUMERIC))
          FROM UNNEST(credits) AS credit
          WHERE credit.type = 'FEE_UTILIZATION_OFFSET'
        )) AS fee_utilization_offset
    FROM `PROJECT.DATASET.gcp_billing_export_resource_v1_BILLING_ACCOUNT_ID`
    WHERE
      DATE(_PARTITIONTIME) >= DATE '2026-07-01'
      AND COALESCE(
        NULLIF(consumption_model.applied_subscription_instance_id, ''),
        subscription.instance_id) IN (SELECT fsp_instance_id FROM fsp_windows)
    GROUP BY ALL
  ),
  fsp_window_totals AS (
    SELECT
      fsp_windows.fsp_instance_id,
      fsp_windows.fsp_display_name,
      fsp_windows.entitlement_period,
      fsp_windows.consumption_model_id,
      fsp_windows.consumption_model_description,
      fsp_windows.window_start_time,
      fsp_windows.window_end_time,
      fsp_cost.currency,
      IFNULL(SUM(IF(fsp_cost.is_fee_line, 0, fsp_cost.cost_at_on_demand_price)), 0)
        AS on_demand_cost,
      IFNULL(SUM(fsp_cost.cost + IFNULL(fsp_cost.fee_utilization_offset, 0)), 0) AS actual_fsp_cost
    FROM fsp_windows
    LEFT JOIN fsp_cost
      ON
        fsp_cost.fsp_instance_id = fsp_windows.fsp_instance_id
        AND fsp_cost.usage_start_time >= fsp_windows.window_start_time
        AND fsp_cost.usage_start_time < fsp_windows.window_end_time
    GROUP BY ALL
  )
SELECT
  fsp_instance_id,
  fsp_display_name,
  entitlement_period,
  consumption_model_id,
  consumption_model_description,
  DATETIME(window_start_time, 'America/Los_Angeles') AS window_start_time_pt,
  DATETIME(window_end_time, 'America/Los_Angeles') AS window_end_time_pt,
  currency,
  on_demand_cost - actual_fsp_cost AS net_commitment_savings,
  SAFE_DIVIDE(on_demand_cost - actual_fsp_cost, on_demand_cost) AS net_commitment_savings_rate
FROM fsp_window_totals
ORDER BY fsp_instance_id, window_start_time_pt

替换以下内容:

  • PROJECT:包含 Cloud Billing 导出数据集的 Google Cloud 项目的 ID。
  • DATASET:包含 Cloud Billing 导出表的 BigQuery 数据集的名称。
  • BILLING_ACCOUNT_ID:您的 Cloud Billing 账号 API ID,其中连字符替换为下划线。

计算承诺利用率

承诺利用率衡量您利用承诺的有效程度。

打开窗口

此查询会计算未结束的使用权期限内的进行中利用率:截至目前,按 FSP 价格计算的 FSP 涵盖用量(以美元为单位)除以该期限内的承诺金额。如需过滤特定使用模式,请将 LIKE ANY ('%') 中的 '%' 替换为目标使用模式 ID。

WITH
  fsp_windows AS (
    SELECT DISTINCT
      IF(
        STARTS_WITH(subscription.instance_id, 'subscriptions/'),
        subscription.instance_id,
        CONCAT('subscriptions/', subscription.instance_id)) AS fsp_instance_id,
      subscription.display_name AS fsp_display_name,
      subscription.entitlement_period,
      consumption_model.id AS consumption_model_id,
      consumption_model.description AS consumption_model_description,
      entitlement_window.start_time AS window_start_time,
      entitlement_window.end_time AS window_end_time,
      entitlement_window.commitment_amount AS window_commitment_amount_usd
    FROM `PROJECT.DATASET.cud_subscriptions_export`,
      UNNEST(entitlement_schedule) AS entitlement_window
    WHERE
      DATE(_PARTITIONTIME) = (
        SELECT MAX(DATE(_PARTITIONTIME)) FROM `PROJECT.DATASET.cud_subscriptions_export`)
      AND consumption_model.id LIKE ANY ('%')
      AND CURRENT_TIMESTAMP() >= entitlement_window.start_time
      AND CURRENT_TIMESTAMP() < entitlement_window.end_time
  ),
  fsp_cost AS (
    SELECT
      COALESCE(
        NULLIF(consumption_model.applied_subscription_instance_id, ''),
        subscription.instance_id) AS fsp_instance_id,
      IFNULL(consumption_model.applied_subscription_instance_id, '') = '' AS is_fee_line,
      usage_start_time,
      SUM(CAST(cost AS NUMERIC) / CAST(currency_conversion_rate AS NUMERIC)) AS cost_usd
    FROM `PROJECT.DATASET.gcp_billing_export_resource_v1_BILLING_ACCOUNT_ID`
    WHERE
      DATE(_PARTITIONTIME) >= DATE_SUB(CURRENT_DATE('America/Los_Angeles'), INTERVAL 93 DAY)
      AND COALESCE(
        NULLIF(consumption_model.applied_subscription_instance_id, ''),
        subscription.instance_id) IN (SELECT fsp_instance_id FROM fsp_windows)
    GROUP BY ALL
  ),
  fsp_window_totals AS (
    SELECT
      fsp_windows.fsp_instance_id,
      fsp_windows.fsp_display_name,
      fsp_windows.entitlement_period,
      fsp_windows.consumption_model_id,
      fsp_windows.consumption_model_description,
      fsp_windows.window_start_time,
      fsp_windows.window_end_time,
      fsp_windows.window_commitment_amount_usd,
      IFNULL(SUM(IF(fsp_cost.is_fee_line, 0, fsp_cost.cost_usd)), 0) AS usage_cost_usd
    FROM fsp_windows
    LEFT JOIN fsp_cost
      ON
        fsp_cost.fsp_instance_id = fsp_windows.fsp_instance_id
        AND fsp_cost.usage_start_time >= fsp_windows.window_start_time
        AND fsp_cost.usage_start_time < fsp_windows.window_end_time
    GROUP BY ALL
  )
SELECT
  fsp_instance_id,
  fsp_display_name,
  entitlement_period,
  consumption_model_id,
  consumption_model_description,
  DATETIME(window_start_time, 'America/Los_Angeles') AS window_start_time_pt,
  DATETIME(window_end_time, 'America/Los_Angeles') AS window_end_time_pt,
  window_commitment_amount_usd,
  usage_cost_usd AS covered_usage_cost_usd,
  SAFE_DIVIDE(usage_cost_usd, window_commitment_amount_usd) AS commitment_utilization_rate
FROM fsp_window_totals
ORDER BY fsp_instance_id, window_start_time_pt

替换以下内容:

  • PROJECT:包含 Cloud Billing 导出数据集的 Google Cloud 项目的 ID。
  • DATASET:包含 Cloud Billing 导出表的 BigQuery 数据集的名称。
  • BILLING_ACCOUNT_ID:您的 Cloud Billing 账号 API ID,其中连字符替换为下划线。

关闭窗口

此查询会根据 FSP 费用订单项计算已结束的使用权期限的最终利用率:FEE_UTILIZATION_OFFSET 赠金(代表承诺中已利用的部分)除以该期限的承诺金额。在 fsp_windows 和 fsp_cost 中,更新 DATE '2026-07-01' 和 DATE '2026-10-01' 以匹配目标窗口范围,如果您想按特定使用模式过滤,请替换 LIKE ANY ('%') 中的 '%'。

WITH
  fsp_windows AS (
    SELECT DISTINCT
      IF(
        STARTS_WITH(subscription.instance_id, 'subscriptions/'),
        subscription.instance_id,
        CONCAT('subscriptions/', subscription.instance_id)) AS fsp_instance_id,
      subscription.display_name AS fsp_display_name,
      subscription.entitlement_period,
      consumption_model.id AS consumption_model_id,
      consumption_model.description AS consumption_model_description,
      entitlement_window.start_time AS window_start_time,
      entitlement_window.end_time AS window_end_time,
      entitlement_window.commitment_amount AS window_commitment_amount_usd
    FROM `PROJECT.DATASET.cud_subscriptions_export`,
      UNNEST(entitlement_schedule) AS entitlement_window
    WHERE
      DATE(_PARTITIONTIME) = (
        SELECT MAX(DATE(_PARTITIONTIME)) FROM `PROJECT.DATASET.cud_subscriptions_export`)
      AND consumption_model.id LIKE ANY ('%')
      AND entitlement_window.start_time >= TIMESTAMP(DATE '2026-07-01', 'America/Los_Angeles')
      AND entitlement_window.end_time <= TIMESTAMP(DATE '2026-10-01', 'America/Los_Angeles')
      AND entitlement_window.end_time <= CURRENT_TIMESTAMP()
  ),
  fsp_cost AS (
    SELECT
      COALESCE(
        NULLIF(consumption_model.applied_subscription_instance_id, ''),
        subscription.instance_id) AS fsp_instance_id,
      usage_start_time,
      SUM(
        (
          SELECT SUM(CAST(credit.amount AS NUMERIC))
          FROM UNNEST(credits) AS credit
          WHERE credit.type = 'FEE_UTILIZATION_OFFSET'
        )
        / CAST(currency_conversion_rate AS NUMERIC)) AS fee_utilization_offset_usd
    FROM `PROJECT.DATASET.gcp_billing_export_resource_v1_BILLING_ACCOUNT_ID`
    WHERE
      DATE(_PARTITIONTIME) >= DATE '2026-07-01'
      AND COALESCE(
        NULLIF(consumption_model.applied_subscription_instance_id, ''),
        subscription.instance_id) IN (SELECT fsp_instance_id FROM fsp_windows)
    GROUP BY ALL
  ),
  fsp_window_totals AS (
    SELECT
      fsp_windows.fsp_instance_id,
      fsp_windows.fsp_display_name,
      fsp_windows.entitlement_period,
      fsp_windows.consumption_model_id,
      fsp_windows.consumption_model_description,
      fsp_windows.window_start_time,
      fsp_windows.window_end_time,
      fsp_windows.window_commitment_amount_usd,
      IFNULL(SUM(fsp_cost.fee_utilization_offset_usd), 0) AS fee_utilization_offset_usd
    FROM fsp_windows
    LEFT JOIN fsp_cost
      ON
        fsp_cost.fsp_instance_id = fsp_windows.fsp_instance_id
        AND fsp_cost.usage_start_time >= fsp_windows.window_start_time
        AND fsp_cost.usage_start_time < fsp_windows.window_end_time
    GROUP BY ALL
  )
SELECT
  fsp_instance_id,
  fsp_display_name,
  entitlement_period,
  consumption_model_id,
  consumption_model_description,
  DATETIME(window_start_time, 'America/Los_Angeles') AS window_start_time_pt,
  DATETIME(window_end_time, 'America/Los_Angeles') AS window_end_time_pt,
  window_commitment_amount_usd,
  ABS(fee_utilization_offset_usd) AS utilized_commitment_usd,
  SAFE_DIVIDE(ABS(fee_utilization_offset_usd), window_commitment_amount_usd)
    AS commitment_utilization_rate
FROM fsp_window_totals
ORDER BY fsp_instance_id, window_start_time_pt

替换以下内容:

  • PROJECT:包含 Cloud Billing 导出数据集的 Google Cloud 项目的 ID。
  • DATASET:包含 Cloud Billing 导出表的 BigQuery 数据集的名称。
  • BILLING_ACCOUNT_ID:您的 Cloud Billing 账号 API ID,其中连字符替换为下划线。

调整交易额

仅使用已结束、已完成的周期来确定交易额。开放期通常包含很少的未涵盖费用,并且可能会使结果出现偏差。容量估算查询会评估在这些时间段内没有任何有效承诺涵盖的历史按需用量。由于历史用量无法反映预定的承诺用量增加、未来激活或到期承诺,因此在确定购买规模时,请考虑即将到来的权利时间表。

查找符合条件的 SKU 和折扣率

此查询会返回符合 FSP 条件的 SKU、其按需价格和每个价格层级的 FSP 价格,以及 FSP 折扣率,以便您验证下一个查询应用的价格。折扣为 0% 的 SKU(例如预配吞吐量)会保留,因为它们仍会消耗承诺。名称中包含“Flexible Savings Plan”的所有使用模式都会纳入其中。如需仅包含特定使用模式,请将 LIKE ANY ('%') 中的 '%' 替换为其 ID,例如仅包含季度 1 年期模式。

WITH
  fsp_tier_prices AS (
    SELECT
      pricing.sku.id AS sku_id,
      pricing.sku.description AS sku_description,
      consumption_model_price.consumption_model_id,
      consumption_model_price.consumption_model_display_name,
      on_demand_tier.start_usage_amount AS tier_start_usage_amount,
      CAST(
        COALESCE(
          (
            SELECT tier.usd_amount
            FROM UNNEST(pricing.billing_account_price.tiered_rates) AS tier
            WHERE tier.start_usage_amount = on_demand_tier.start_usage_amount
          ),
          on_demand_tier.usd_amount) AS NUMERIC) AS on_demand_price_usd,
      CAST(
        COALESCE(
          (
            SELECT tier.usd_amount
            FROM UNNEST(consumption_model_price.billing_account_price.tiered_rates) AS tier
            WHERE tier.start_usage_amount = on_demand_tier.start_usage_amount
          ),
          (
            SELECT tier.usd_amount
            FROM UNNEST(consumption_model_price.list_price.tiered_rates) AS tier
            WHERE tier.start_usage_amount = on_demand_tier.start_usage_amount
          )) AS NUMERIC) AS fsp_price_usd
    FROM `PROJECT.DATASET.cloud_pricing_export` AS pricing,
      UNNEST(pricing.consumption_model_prices) AS consumption_model_price,
      UNNEST(pricing.list_price.tiered_rates) AS on_demand_tier
    WHERE
      DATE(_PARTITIONTIME) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
      AND DATE(_PARTITIONTIME) = (
        SELECT MAX(DATE(_PARTITIONTIME))
        FROM `PROJECT.DATASET.cloud_pricing_export`
        WHERE DATE(_PARTITIONTIME) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
      )
      AND consumption_model_price.consumption_model_display_name LIKE '%Flexible Savings Plan%'
      AND consumption_model_price.consumption_model_id LIKE ANY ('%')
  )
SELECT
  sku_id,
  sku_description,
  consumption_model_id,
  consumption_model_display_name,
  tier_start_usage_amount,
  on_demand_price_usd,
  fsp_price_usd,
  SAFE_DIVIDE(on_demand_price_usd - fsp_price_usd, on_demand_price_usd) AS fsp_discount_rate
FROM fsp_tier_prices
ORDER BY consumption_model_display_name, sku_id, tier_start_usage_amount

替换以下内容:

  • PROJECT:包含 Cloud Billing 导出数据集的 Google Cloud 项目的 ID。
  • DATASET:包含 Cloud Billing 导出表的 BigQuery 数据集的名称。

对未涵盖的用量应用折扣率

此查询使用与上一个查询相同的定价逻辑,将每个 SKU 的 FSP 价格比率应用于每个价格层级,以计算过去每个时间段内未涵盖的按需用量。它会返回每个周期的潜在 FSP 费用,并根据最低稳定周期(也称为低水位线)建议每个窗口的承诺。运行上述查询并非前提条件,因为定价步骤是内置的。

在运行查询之前,请在 sizing_periods 和 uncovered_cost 中修改以下输入:

  • 使用模式:在 fsp_tier_price_ratios 中,选择 LIKE ANY ('%') 中与期数匹配的使用模式,例如周期为 3 个月的季度 FSP 使用模式。
  • 期数:在 sizing_periods 中,对于按月 FSP,请使用 1;对于按季度 FSP,请使用 3。
  • 第一个时间段开始:更新 DATE '2026-07-01',它在 sizing_periods 和 uncovered_cost 的 _PARTITIONTIME 过滤条件中出现两次。两个日期保持一致。
  • 期数:更新 GENERATE_ARRAY(0, 3) 中的 3,例如 3 个月或 2 到 4 个季度。所有周期都必须已结束。
WITH
  fsp_tier_price_ratios AS (
    SELECT
      pricing.sku.id AS sku_id,
      consumption_model_price.consumption_model_id,
      consumption_model_price.consumption_model_display_name,
      on_demand_tier.start_usage_amount AS tier_start_usage_amount,
      SAFE_DIVIDE(
        CAST(
          COALESCE(
            (
              SELECT tier.usd_amount
              FROM UNNEST(consumption_model_price.billing_account_price.tiered_rates) AS tier
              WHERE tier.start_usage_amount = on_demand_tier.start_usage_amount
            ),
            (
              SELECT tier.usd_amount
              FROM UNNEST(consumption_model_price.list_price.tiered_rates) AS tier
              WHERE tier.start_usage_amount = on_demand_tier.start_usage_amount
            )) AS NUMERIC),
        CAST(
          COALESCE(
            (
              SELECT tier.usd_amount
              FROM UNNEST(pricing.billing_account_price.tiered_rates) AS tier
              WHERE tier.start_usage_amount = on_demand_tier.start_usage_amount
            ),
            on_demand_tier.usd_amount) AS NUMERIC)) AS fsp_price_ratio
    FROM `PROJECT.DATASET.cloud_pricing_export` AS pricing,
      UNNEST(pricing.consumption_model_prices) AS consumption_model_price,
      UNNEST(pricing.list_price.tiered_rates) AS on_demand_tier
    WHERE
      DATE(_PARTITIONTIME) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
      AND DATE(_PARTITIONTIME) = (
        SELECT MAX(DATE(_PARTITIONTIME))
        FROM `PROJECT.DATASET.cloud_pricing_export`
        WHERE DATE(_PARTITIONTIME) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
      )
      AND consumption_model_price.consumption_model_display_name LIKE '%Flexible Savings Plan%'
      AND consumption_model_price.consumption_model_id LIKE ANY ('%')
  ),
  sizing_periods AS (
    SELECT period_start_date, period_end_date
    FROM (
      SELECT
        period_start_date,
        LEAD(period_start_date) OVER (ORDER BY period_start_date) AS period_end_date
      FROM UNNEST(GENERATE_ARRAY(0, 3)) AS period_index,
        UNNEST([DATE_ADD(DATE '2026-07-01', INTERVAL period_index * 1 MONTH)]) AS period_start_date
    )
    WHERE period_end_date IS NOT NULL
  ),
  uncovered_cost AS (
    SELECT
      DATE(usage_start_time, 'America/Los_Angeles') AS usage_date,
      sku.id AS sku_id,
      IFNULL(price.tier_start_amount, 0) AS tier_start_usage_amount,
      SUM(CAST(cost AS NUMERIC) / CAST(currency_conversion_rate AS NUMERIC)) AS cost_usd
    FROM `PROJECT.DATASET.gcp_billing_export_resource_v1_BILLING_ACCOUNT_ID`
    WHERE
      DATE(_PARTITIONTIME) >= DATE '2026-07-01'
      AND IFNULL(consumption_model.applied_subscription_instance_id, '') = ''
      AND sku.id IN (SELECT sku_id FROM fsp_tier_price_ratios)
    GROUP BY ALL
  ),
  period_cost AS (
    SELECT
      fsp_tier_price_ratios.consumption_model_id,
      sizing_periods.period_start_date,
      SUM(uncovered_cost.cost_usd) AS uncovered_on_demand_cost_usd,
      SUM(uncovered_cost.cost_usd * fsp_tier_price_ratios.fsp_price_ratio) AS potential_fsp_cost_usd
    FROM uncovered_cost
    JOIN sizing_periods
      ON
        uncovered_cost.usage_date >= sizing_periods.period_start_date
        AND uncovered_cost.usage_date < sizing_periods.period_end_date
    JOIN fsp_tier_price_ratios
      ON
        fsp_tier_price_ratios.sku_id = uncovered_cost.sku_id
        AND fsp_tier_price_ratios.tier_start_usage_amount = uncovered_cost.tier_start_usage_amount
    GROUP BY ALL
  ),
  fsp_consumption_models AS (
    SELECT DISTINCT consumption_model_id, consumption_model_display_name
    FROM fsp_tier_price_ratios
  )
SELECT
  fsp_consumption_models.consumption_model_id,
  fsp_consumption_models.consumption_model_display_name,
  sizing_periods.period_start_date,
  sizing_periods.period_end_date,
  IFNULL(period_cost.uncovered_on_demand_cost_usd, 0) AS uncovered_on_demand_cost_usd,
  IFNULL(period_cost.potential_fsp_cost_usd, 0) AS potential_fsp_cost_usd,
  IFNULL(period_cost.uncovered_on_demand_cost_usd - period_cost.potential_fsp_cost_usd, 0)
    AS potential_savings_usd,
  MIN(IFNULL(period_cost.potential_fsp_cost_usd, 0))
    OVER (PARTITION BY fsp_consumption_models.consumption_model_id)
    AS suggested_commitment_per_window_usd
FROM fsp_consumption_models
CROSS JOIN sizing_periods
LEFT JOIN period_cost
  ON
    period_cost.consumption_model_id = fsp_consumption_models.consumption_model_id
    AND period_cost.period_start_date = sizing_periods.period_start_date
ORDER BY consumption_model_display_name, period_start_date

替换以下内容:

  • PROJECT:包含 Cloud Billing 导出数据集的 Google Cloud 项目的 ID。
  • DATASET:包含 Cloud Billing 导出表的 BigQuery 数据集的名称。
  • BILLING_ACCOUNT_ID:您的 Cloud Billing 账号 API ID,其中连字符替换为下划线。