MaxCompute用量明细账单分析最佳实践

MaxCompute中计算资源的计费方式分为包年包月和按量计费两种,产品每天会以Project为维度进行计费(账单会在第二天上午6点前生成)。

用量详情账单字段说明

查看自己的MaxCompute用量详情,可以到控制台中如下菜单进行查询并导出到本地:

账单明细字段如下:

  • 项目编号:当前账号或子账号对应的主账号的MaxCompute Project列表。
  • 计量信息编号:以存储、计算、上传和下载的任务ID为计费信息编号,SQL为InstanceId,上传和下载为Tunnel SessionId。
  • 数据分类:Storage(存储)、ComputationSql(计算)、UploadIn(内网上传)、UploadEx(外网上传)、DownloadIn(内网下载)、DownloadEx(外网下载)。按照计费规则其中只有红色部分为实际计费项目。
  • 存储(Byte):每小时读取的存储量,单位为Byte。
  • 开始时间/结束时间:按照实际作业执行时间进行计量,只有存储是按照每个小时取一次数据。
  • SQL读取量(Byte):SQL计算项,每一次SQL执行时SQL的Input数据量,单位为Byte。
  • SQL复杂度(Byte):每次执行SQL的复杂度,为SQL计费因子之一。
  • 公网上行流量(Byte)、公网下行流量(Byte):分别为公网上传和下载的数据量,单位Byte。
  • MR/Spark作业计算(CoreSecond):MapReduce/Spark作业的计算时单位为CoreSecond,需要转换为计算时Hour。
  • SQL读取量_访问OTS(Byte)、SQL读取量_访问OSS(Byte):外部表实施收费后的读取数据量,单位Byte。
  • 计算资源规格(按量计费):对应计量信息所在项目所属的计算资源规格,若值为NULL,则表示按量计费标准版;若值为OdpsDev,则表示按量计费开发者版。
  • 计算资源规格(包年包月):对应计量信息所在项目所属的计算资源规格。若值为NULL,则表示包年包月标准版;若值为OdpsPlus160CU150TB、 OdpsPlus320CU300TB、OdpsPlus600CU500TB,则分别表示存储密集型160套餐、存储密集型320套餐,存储密集型600套餐。
  • DataWorks调度任务ID:计量作业在DataWorks上的调度节点ID。若值NULL,则表示非DataWorks调度节点提交的Job;若值为一串数字ID,则表示Job对应DataWorks调度节点ID。您可以在DataWorks对应的项目中使用该ID搜索到具体任务。

下面将自己的20200415-20200425时间段内的MaxCompute用量账单详情导出到本地,然后在MaxCompute中创建表用于存储账单数据,进而进行相应的账单数据分析。包括如下几个部分:

  • 创建数据表并导入数据
  • 通过SQL分析账单数据

创建数据表并导入数据

1. 将20200415-20200425时间段MaxCompute用量明细数据导出到本地,保存文件为:odps_20200415_20200425_oms_data.csv。

2. 使用如下命令创建数据表,用于保存账单数据:

DROP TABLE IF EXISTS maxcomputefee ;CREATE TABLE IF NOT EXISTS maxcomputefee (projectid STRING COMMENT '项目编号',feeid STRING COMMENT '计费信息编号',type STRING COMMENT '数据分类,包括Storage、ComputationSQL、DownloadEx等',storage BIGINT COMMENT '存储(Byte)',endtime DATETIME COMMENT '结束时间',computation_sql_input BIGINT COMMENT 'SQL/交互式分析 读取量(Byte)',computation_sql_complexity DOUBLE COMMENT 'sql复杂度',uploadex BIGINT COMMENT '公网上行流量Byte',download BIGINT COMMENT '公网下行流量Byte',cu_usage DOUBLE COMMENT 'MR计算时*second',input_ots BIGINT COMMENT '访问OTS的数据输入量',input_oss BIGINT COMMENT '访问OSS的数据输入量',starttime DATETIME COMMENT '开始时间',source_type String COMMENT '计算资源',source_id String COMMENT 'DataWorks调度任务ID'
);

3. 使用tunnel命令将本地数据上传数据至数据表,命令如下:

odps@ YITIAN_BJ_MC>tunnel upload /Users/yitian/Documents/MaxCompute/maxcompute-data/odps_20200415_20200425_oms_data.csv maxcomputefee -c "UTF-8" -h "true" -dfp "yyyy-MM-dd HH:mm:ss";

4. 上传完成后,使用如下命令检查数据导入情况:

select count(*) from maxcomputefee;

返回结果为:

1996

查询数据前十条,检查数据导入是否正确:

select * from maxcomputefee limit 10;

返回结果如下:

通过SQL分析账单数据

数据导入到MaxCompute之后,就可以进行相应的数据分析过程了,具体的分析示例如下。

示例1:分析SQL费用。云上用户使用MaxCompute,95%的用户通过SQL即可满足需求,SQL也在消费增长中占了很大比例。说明:一次SQL计算费用=计算输入数据量*SQL复杂度*单价(0.3元/GB)

-- 分析SQL费用
select to_char(endtime, 'yyyymmdd') as ds,feeid as instanceid,projectid,computation_sql_complexity,sum((cast(computation_sql_input as bigint) / 1024 / 1024 / 1024)) as computation_sql_input,sum((cast(computation_sql_input as bigint) / 1024 / 1024 / 1024)) * computation_sql_complexity * 0.3 as sqlmoney
from maxcomputefee
where type='ComputationSql'and computation_sql_input is not nulland computation_sql_complexity is not nulland to_char(endtime, 'yyyymmdd') >= '20200415'
group by to_char(endtime, 'yyyymmdd'), feeid, projectid, computation_sql_complexity
order by sqlmoney desc
limit 20;

返回结果如下:

示例2:分析作业增长趋势。通常费用的增长是由于重复执行或调度属性配置不合理造成的作业量暴涨。

-- 分析作业增长趋势
select to_char(endtime, 'yyyymmdd') as ds,projectid,count(*) as tasknum
from maxcomputefee
where type='ComputationSql' and  to_char(endtime, 'yyyymmdd') >= '20200415'
group by to_char(endtime, 'yyyymmdd'), projectid
order by tasknum desc
limit 20;

返回结果如下:

示例3:分析存储费用。说明 存储费用的计费规则相对复杂。明细中是按每个小时取一次得出的数据。按照MaxCompute存储计费规则,会先整体24小时求和,再将平均之后的值进行阶梯收费。详情请参见存储费用(按量计费)。

-- 分析存储费用
select t.ds,t.projectid,t.storage,case when t.storage < 0.5 then 0.1when t.storage >= 0.5 and t.storage <= 10240 then t.storage * 0.0072when t.storage > 10240 and t.storage <= 102400 then (10240 * 0.0072 + (t.storage - 10240) * 0.006)when t.storage > 102400 then (10240 * 0.0072 + (102400 - 10240) * 0.006 + (t.storage - 102400) * 0.004)end as storage_fee
from (select to_char(starttime, 'yyyymmdd') as ds,projectid,sum(storage / 1024 / 1024 / 1024) / 24 as storagefrom maxcomputefeewhere type='Storage' and storage is not null and storage > 0and to_char(starttime, 'yyyymmdd') >= '20200415'group by to_char(starttime, 'yyyymmdd'), projectid
) t
order by storage_fee desc
limit 20;

返回结果如下:

根据执行结果可以分析得出如下结论:

  • 由于数据量很小,因此这里的存储开销很比较少。
  • 对于数据量比较大时的存储优化,建议为表设置生命周期,删除长期不使用的临时表等。

示例4:分析下载费用。对于公网或者跨Region的数据下载,MaxCompute将按照下载的数据量进行计费。说明 计费公式为一次下载费用=下载数据量*单价(0.8元/GB)

-- 分析下载费用
select to_char(starttime, 'yyyymmdd') as ds,projectid,sum((download/1024/1024/1024)*0.8) as download_fee
from maxcomputefee
where type='DownloadEx'
and to_char(starttime, 'yyyymmdd') >= '20200415'
and download is not null
group by to_char(starttime, 'yyyymmdd'), projectid
order by download_fee desc
limit 20;

返回结果如下:

示例5:分析MapReduce作业消费。说明 MapReduce任务当日计算费用=当日总计算时*单价(0.46元)

-- 分析MapReduce作业消费(暂时无数据)
SELECT  TO_CHAR(starttime,'yyyymmdd') AS ds,projectid,(cu_usage/3600)*0.46 AS mr_fee
FROM    maxcomputefee
WHERE   type = 'MapReduce'
and     cu_usage is not null
AND     TO_CHAR(starttime, 'yyyymmdd') >= '20200415'
GROUP BY TO_CHAR(starttime, 'yyyymmdd'), projectid, cu_usage
ORDER BY mr_fee DESC
limit 20;

示例6:分析外部表作业(OTS和OSS)。说明 一次SQL外部表计算费用=计算输入数据量*SQL复杂度(1)*单价(0.03元/GB)

--分析OTS外部表SQL作业消费(暂时无数据)
SELECT  TO_CHAR(starttime,'yyyymmdd') AS ds,projectid,(input_ots/1024/1024/1024)*1*0.03 AS ots_fee
FROM    maxcomputefee
WHERE   type = 'ComputationSql'
AND     input_ots is not null
AND     TO_CHAR(starttime, 'yyyymmdd') >= '20200415'
GROUP BY TO_CHAR(starttime, 'yyyymmdd'), projectid, input_ots
ORDER BY ots_fee DESC
limit 20;--分析OSS外部表SQL作业消费(暂时无数据)
SELECT  TO_CHAR(starttime,'yyyymmdd') AS ds,projectid,(input_oss/1024/1024/1024)*1*0.03 AS ots_fee
FROM    maxcomputefee
WHERE   type = 'ComputationSql'
AND     input_oss is not null
AND     TO_CHAR(starttime,'yyyymmdd') >= '20200415'
GROUP BY TO_CHAR(starttime,'yyyymmdd'), projectid, input_oss
ORDER BY ots_fee DESC
limit 20;

示例7:分析Lightning查询费用。说明 一次Lightning查询费用 = 查询输入数据量*单价(0.03元/GB)

-- 分析Lightning查询费用(暂时无数据)
SELECT  to_char(endtime,'yyyymmdd') as ds,feeid as instanceid,projectid,computation_sql_complexity,SUM((computation_sql_input / 1024 / 1024 / 1024)) as computationsqlinput,SUM((computation_sql_input / 1024 / 1024 / 1024)) * computation_sql_complexity * 0.03 AS sqlmoney
FROM    maxcomputefee
WHERE   TYPE = 'LightningQuery'
--AND to_char(endtime,'yyyymmdd') >= '20190112'
AND     computation_sql_input is not null
AND     computation_sql_complexity is not null
GROUP BY to_char(endtime, 'yyyymmdd'), feeid, projectid, computation_sql_complexity
ORDER BY sqlmoney DESC
LIMIT   20;

示例8:分析Spark计算费用。说明 Spark任务当日计算费用 = 当日总计算时*单价(0.66元/计算时)

--分析Spark作业消费(暂时无数据)
SELECT  TO_CHAR(starttime, 'yyyymmdd') AS ds,projectid,(cu_usage/3600)*0.66 AS mr_fee
FROM    maxcomputefee
WHERE   type = 'spark'
AND     cu_usage it not null
AND     TO_CHAR(starttime, 'yyyymmdd') >= '20200415'
GROUP BY TO_CHAR(starttime, 'yyyymmdd'), projectid, cu_usage
ORDER BY mr_fee DESC
limit 20;

MaxCompute用量明细账单分析最佳实践相关推荐

  1. eBCC性能分析最佳实践(1) - 线上lstat, vfs_fstatat 开销高情景分析...

    Guide: eBCC性能分析最佳实践(0) - 开启性能分析新篇章 eBCC性能分析最佳实践(1) - 线上lstat, vfs_fstatat 开销高情景分析 eBCC性能分析最佳实践(2) - ...

  2. maxcompute操作_MaxCompute表设计最佳实践

    MaxCompute表设计最佳实践 产生大量小文件的操作 MaxCompute表的小文件会影响存储和计算性能,因此我们先介绍下什么样的操作会产生大量小文件,从 而在做表设计的时候考虑避开此类操作. 使 ...

  3. 智能分析最佳实践——指标逻辑树

    背景 所有业务都会面对"为什么涨.为什么降.原因是什么?"这种简单粗暴又不易定位的业务问题.为了找出数据发生异动的原因,业务人员会通过使用多维查询.dashboard等数据产品锁定 ...

  4. DLF +DDI 一站式数据湖构建与分析最佳实践

    简介: 本文由阿里云数据湖构建 DLF 团队和 Databricks 数据洞察团队联合撰写,旨在帮助您更深入地了解阿里云数据湖构建(DLF)+Databricks 数据洞察(DDI)构建一站式云上数据 ...

  5. DLF + DDI 一站式数据湖构建与分析最佳实践

    数据湖技术圈 作者 陈鑫伟(熙康), 阿里云计算平台事业部技术专家 冯加亮(加亮), 阿里云计算平台事业部技术研发 1 背景    随着数据时代的不断发展,数据量爆发式增长,数据形式也变得更加多样.传 ...

  6. 数据湖 | DLF + DDI 一站式数据湖构建与分析最佳实践

    作者 陈鑫伟(熙康), 阿里云计算平台事业部技术专家 冯加亮(加亮), 阿里云计算平台事业部技术研发 1 背景    随着数据时代的不断发展,数据量爆发式增长,数据形式也变得更加多样.传统数据仓库模式 ...

  7. 智能投放系统之场景分析最佳实践

    美团点评作为业内最大的O2O的平台,以短信/push作为运营手段触达用户的量级巨大,每日数以千万计. 美团点评线上存在超过千万的POI,覆盖超过2000城市.2.5万个后台商圈.在海量数据存在的前提下 ...

  8. PyODPS开发中的最佳实践

    摘要: PyODPS支持用 Python 来对 MaxCompute 对象进行操作,它提供了 DataFrame API 来用类似 pandas 的接口进行大规模数据分析以及预处理,并且可以用 ml ...

  9. SaaS 模式云数据仓库 MaxCompute 数据安全最佳实践

    简介:MaxCompute作为企业级SaaS模式云数据仓库,正在为客户业务及其数据提供持续的安全保护. MaxCompute 近期对产品的安全能力进行了全面升级,本文将针对数据误用.数据滥用.数据泄露 ...

最新文章

  1. Spring Cloud Alibaba IDE 工具重大升级
  2. hdu 3635(并查集+路径压缩变形)
  3. q-dir 打不开文件_Q-Dir –多窗格文件管理器
  4. 数据结构+算法 学习计划与资源
  5. SpringBoot整合阿里云OSS上传文件
  6. 软件测试用例优秀例子_新手入门:想要做好软件测试,这些理论知识,你得好好掌握...
  7. 以下不属于时序逻辑电路的有_静态时序分析圣经翻译计划——附录B:SDF
  8. python网页抓取与按键精灵原理一样吗_Python网络爬虫学习笔记之 三种网页抓取方法...
  9. cad2010多个文件并排显示_win10系统下CAD打不开多个窗口、文件如何解决
  10. 适合公司年会的4个热门互动小游戏
  11. c语言中xml的解析方式,浅谈Xml的三种解析方式
  12. range,xrange,arange比较
  13. python ppt教程_python pptx复制指定页的ppt教程
  14. 留给10年后的自己观看,T4-7生活就像那条小巷!
  15. 敲黑板!5G消息、富媒体消息、一键登录知识点汇总
  16. Windows 清除DNS缓存C++实现
  17. java架构师培训-成为java架构师的标准是什么
  18. 削华为足,以适IBM之履的再造流程
  19. Vue CLI 官方文档(一)@vue/cli、@vue/cli-service、插件和 Preset
  20. 排障集锦:九九八十一难之第十三难!-------------史上最全MySQL 单实例故障排查

热门文章

  1. bzoj4518[Sdoi2016] 征途
  2. 从华为年报看鲲鹏计算生态的内生动力
  3. php 记事本源代码_抖音无水印解析PHP源码
  4. SSM SpringBoot vue学校办公自动化系统
  5. 计算机仿真与实际应用的区别,虚拟现实技术与计算机仿真技术的区别?
  6. 斜率,截距,回归方程
  7. (二)链表学习之模块化处理
  8. 叮当软件测试简历,软件测试作业..doc
  9. Windows10-Outlook使用教程
  10. Maven系列第5篇:私服详解