活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 当计费活动在 UTC 完成时。 |
| meter_event_id | Utf8 | 一个逻辑使用记录的幂等键。 |
| account_id | Utf8 | 稳定的计费帐户标识符。 |
| plan | Utf8 | 使用发生时拥有配额的计划。 |
| billable_units | Float64 | 此事件添加的标准化单位。 |
| included_units | Float64 | 每月包含帐户和计划的配额。 |
DataFusion SQL
复制查询
sql
WITH deduplicated_usage AS (
SELECT
meter_event_id,
account_id,
plan,
MAX(billable_units) AS billable_units,
MAX(included_units) AS included_units
FROM usage_meter_events
WHERE timestamp_utc >= date_trunc('month', now())
GROUP BY meter_event_id, account_id, plan
)
SELECT
account_id,
plan,
COUNT(*) AS meter_events,
SUM(billable_units) AS used_units,
MAX(included_units) AS included_units,
100.0 * SUM(billable_units)
/ NULLIF(MAX(included_units), 0) AS quota_used_pct,
SUM(billable_units) - MAX(included_units) AS overage_units
FROM deduplicated_usage
GROUP BY account_id, plan
ORDER BY quota_used_pct DESC;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
账户每月使用额度
Harbor 已经超出了其包含的配额,而 Lumen 已经足够接近,需要进行预测或通知客户。
account_harbor
112.6%
account_lumen
84.2%
account_north
67.2%
| account_id | plan | meter_events | used_units | included_units | quota_used_pct | overage_units |
|---|---|---|---|---|---|---|
| account_harbor | growth | 18,420 | 1,126,000 | 1,000,000 | 112.6 | 126,000 |
| account_lumen | growth | 12,880 | 842,000 | 1,000,000 | 84.2 | -158,000 |
| account_north | starter | 3,610 | 168,000 | 250,000 | 67.2 | -82,000 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1第一个 CTE 按计量事件 ID 进行分组,因此至少一次交付不能对相同的逻辑使用量进行两次计费。
- 2可计费单位的合计与事件计数无关,因为一个请求可以代表许多单位或小数单位。
- 3配额百分比和超额保留了帐户排名和账单审核所需的特定于计划的分母。
需要决定的边缘情况
- 计划变更需要明确的按比例分配政策;当配额可能在中期发生变化时,单个月的最高限额就很说明问题。
- 更正和负面使用需要仅附加调整合约,而不是默默地改变先前的事件。
- 在发票成为最终结果之前,与计费提供商对汇总进行核对。
推荐仪表板
- 酒吧:quota_used_pct(按账户)
- 表:已用、包含和超额单位
- 趋势:75% 以上的帐户每日计费单位
让查询示例发挥作用
相关埋点和指南
定义源数据
此分析的事件模式
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。