本文介绍在日志服务控制台上如何使用SQL语句自定义分析账单。
账单数据详情
账单数据包括以下两类数据:

- 左侧为账单数据,标识为
source:bill
,每个云产品在每个账单周期中产生一条记录。 - 右侧为实例账单数据,每个实例对应一条数据,包含实例的使用量、属性(TAG、NickName、名称等)、费用。标识为
source:instance_bill
。

案例
成本管家中内置的报表仅是分析模板,提供分析案例。实际使用中,您可能有多种多样的需求,同一个模板无法满足。您可以通过SQL语句自定义分析账单,这里以ECS账单为例进行说明。
- 搜索关心的账单
在所有的账单中,您可能只关心某些账单,例如:只想要获取ECS实例账单,那么只需要在名为aliyun_bill的Logstore中使用SQL语句
source:instance_bill and ProductCode:ECS
即可获取结果,如下图所示。更多搜索语法请参见查询语法。 - 简单聚合,获取总的账单费用
使用以下SQL语句获取ECS实例的总费用。在计算结果中单击添加到仪表盘,即可创建一个专属的仪表盘。
source:instance_bill and ProductCode:ECS | select sum(PretaxAmount)
- 分组聚合。
使用以下SQL语句,获取每个ECS实例的账单总额。
source:instance_bill and ProductCode:ECS | select InstanceID, sum(PretaxAmount) as Amount group by InstanceId order by Amount desc
本案例通过实例维度进行分析,如果您想要通过其他维度(例如Region、昵称等)分析,只需更换SQL语句中group by
后面的维度。 - 同比环比分析
- 计算本月费用,同比上月的增长率。
source:bill | select diff[1] as "本月费用", diff[2] as "上月费用", diff[3]*100-100 as "同比增加%" from(select compare(amount,604800) as diff from( select sum(PretaxAmount) as amount from log ))
- 按照产品,与上月进行同比分析。
source:bill | select ProductCode, diff[1] as "本月费用", diff[2] as "上月费用", diff[3]*100-100 as "同比增加%" from(select productcode, compare(amount,604800) as diff from( select ProductCode, sum(PretaxAmount) as amount from log group by ProductCode ) group by productcode )
- 计算本月费用,同比上月的增长率。
- 利用Tag做分账管理
目前多种产品已支持Tag,您可以通过Tag完成分账。Tag中包含多个key-value,通过解析不同的key-value,计算每一对key-value的费用额度。
source: instance_bill and ecs | select k,v , round(sum(PretaxAmount),3) "金额" from( select split_to_map(Tag,';',' ') as tags ,PretaxAmount from log where tag <>'' ),unnest(tags) as t(k,v) group by k,v order by "金额" desc limit 1000