
# 使用DLI分析账单消费数据
#### 应用场景
本文主要介绍如何使用华为云DLI上的实际消费数据（文中涉及账户的信息已脱敏），在DLI的大数据分析平台上进行分析，找出费用优化的空间，并给出使用DLI过程中降低成本的一些优化措施。
#### 流程介绍
使用DLI进行账单分析与优化的操作过程主要包括以下步骤：
[步骤1：获取消费数据]。获取账户的实际消费数据。
[步骤2：分析账户消费结构并优化]。在DLI上分析账户消费结构，找出开支较大的资源或用户，并给出降低成本的优化措施。
#### 资源和成本规划
表1资源和成本规划 
| 资源  | 资源说明                                                                 | 成本说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| DLI | 数据湖探索（DLI）作为华为云大数据分析平台，其计费项包括存储费用与计算费用两项，计费类型包括包周期（包年包月），套餐包和按需计费三种。 | DLI目前支持三种作业：SQL作业，Flink作业和Spark作业。 SQL作业的计费包括存储计费和计算计费，其中计算计费有包年包月计费和按需计费两种。 - 包年包月计费根据购买周期进行扣费，推荐使用包年包月模式，价格优惠且在周期内独享计算资源。  - 按需计费以小时为单位进行扣费。按需计费又分为按CU时计费和按扫描数据量计费，这两种计费方式是互斥的，可根据需要选择其中一种。建议优先选择按CU时计费，可资源独享，且成本核算清晰。同时，按CU时计费还提供套餐包的购买和使用。 - CU时资费=CU数\*使用时长\*单价。使用时长按自然小时计费，不足一个小时按一个小时计费。    - 扫描数据量资费=执行SQL时产生的扫描数据量\*单价。如果计算任务超时或失败，则本次计算不收取费用。     - Flink作业和Spark作业的计费只有计算计费，具体计费规则与SQL作业相同。   具体计费规则可以参考华为云官网[价格详情](https://www.huaweicloud.com/pricing.html?tab=detail#/dli)。 |
   
 #### 步骤1：获取消费数据
1. 获取消费明细数据。
   1. 使用华为云账户登录控制台。
   
   2. 通过"费用中心"\>"费用账单"进入费用中心。
      图1费用账单   
      ![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001232651199.png) 
   
   3. 单击"账单详情 \> 自定义账单"，单击"维度设置"，选择"按使用量"。"统计周期"选择"明细"。在显示数据的标题行，"产品类型"选择"数据湖探索 DLI"，"产品"选择"DLI计算资源使用量"，单击"导出账单"。
      图2导出消费数据   
      ![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001187948316.png "点击放大") 
   
   4. 左侧导航栏，选择"导出记录"。下载对应的消费明细数据。
    
 
 #### 步骤2：分析账户消费结构并优化
1. 在DLI上进行消费明细分析。
   1. 将[1]下载的消费明细数据上传到已建好的OBS桶中。
   
   2. 在数据湖探索服务中创建表。
      1. 登录DLI控制台，左侧导航栏单击"SQL编辑器"，执行引擎选择"spark"，选择执行的队列和数据库。本次演示队列和数据库选择"default"。
      
      2. 下载的文件中包含时间用量等，按表头意义在DLI上创建表，具体可以参考如下示例，其中amount列为费用。
         ```
         CREATE TABLE `spending` (
           account_period string,
           EnterpriseProject string,
           EnterpriseProjectID string,
           accountID string,
           product_type_code string,
           product_type string,
           product_code string,
           product_name string,
           product_id string,
           mode string,
           time1 string,
           use_start string,
           use_end string,
           orderid string,
           ordertime string,
           resource_type string,
           resource_id string,
           resource_name string,
           tag string,
           skuid string,
           `c22name` STRING,
           `c23name` STRING,
           `c24name` STRING,
           `c25name` STRING,
           `c26name` STRING,
           `c27name` STRING,
           `c28name` STRING,
           `c29name` STRING,
           size STRING,
           `c31name` STRING,
           `c32name` STRING,
           `c33name` STRING,
           `c34name` STRING,
           `c35name` STRING,
           `amount` STRING,
           `c37name` STRING,
           `c38name` STRING,
           `c39name` STRING,
           `c40name` STRING,
           `c41name` STRING,
           `c42name` STRING,
           `c43name` STRING,
           `c44name` STRING,
           `c45name` STRING,
           `c46name` STRING,
           `c47name` STRING,
           `c48name` STRING,
           `c49name` STRING,
           `c50name` STRING,
           `c51name` STRING,
           `c52name` STRING,
           `c53name` STRING,
           `c54name` STRING
         ) USING csv options (
           path 'obs://xxx/Spendings(ByTransaction)_20200501_20200531.csv',
           header true)
         ```
         
       
   
   3. 查询该时间内消费最高的resource_id, resource_name。 通过以下语句，可以发现sql和flink队列使用的费用均为1842，在总费用3754中占比为98%。
      ```
      select resource_id, resource_name, sum(size) 
         as usage, sum(amount) 
         as sum_amount 
         from spending 
         group by resource_id, resource_name 
         order by sum_amount desc
      ```
      图3查询结果   
      ![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001154617991.png "点击放大") 
   
   4. 使用以下语句具体分析sql和flink这两个资源消费的时间段。
      ```
      select * from spending where resource_id = 'd91d4616-b10c-471a-820d-e676e6c5f4b4' order by ordertime
      ```
      可以发现sql队列从2020-05-14 17:00:00 GMT+08:00开始，每小时产生新的费用，持续到2020-05-28 10:00:00 GMT+08:00，说明这个sql队列在这段时间内持续使用。
      同样，也可以发现flink队列在2020-05-14 17:00:00 GMT+08:00到2020-05-28 10:00:00 GMT+08:00这段 内持续使用。
      
    
2. 优化建议。 通过以上分析，了解到sql和flink这两个队列几乎是在持续使用的，建议通过购买包周期队列来降低使用成本。另外，对于明确需要使用多少CU时的作业，也可以提前购买对应的CU时套餐包，来降低使用成本。
   
 
企业中的业务模式较多且经常变化，成本管理员通常并不能全面及时了解花销较大的业务在哪里，哪些是合理的，哪些是不合理的，通过在DLI中对费用明细进行分析，可以及时发现企业花销不合理的地方，及时进行成本管理，进一步降低企业使用华为云的成本。
