メンバーズ CUR を Q in QuickSight で利用するためのデータセット作成方法

メンバーズ CUR を Q in QuickSight で利用するためのデータセット作成方法

2025.08.16

はじめに

「AWS Cost and Usage Reports のデータを生成 AI の力で分析、可視化すれば最強のコスト分析ダッシュボードができるのでは?」

クラスメソッドメンバーズが提供する Cost and Usage Reports(以降 メンバーズ CUR)の分析を生成 AI の機能付きの AWS の BI ツール Q in QuickSight に任せようと思った夏の午後、Q in QuickSight でメンバーズ CUR を扱うには工夫が必要でしたので共有します。

前提条件

メンバーズ CUR の出力設定と Glue データカタログ設定は以下の記事を参考に設定してください。

https://dev.classmethod.jp/articles/how-to-create-athena-analysis-environment-with-mcur/

MCUR−QS-1(1).png

序章

メンバーズ CUR を QuickSight で分析をはじめる

Glue データカタログをソースにし Athena からデータセットを作成しました。

New_Data_Set-24.png

あとは、Q in QuickSight の機能で自然言語によるグラフを作成や、コスト分析を試す予定でした。ですが、データセットのカラム数が 200 を超えると Build visual 機能が使えませんでした。

MCUR_analysis-2.png

データセット作成時のカスタム SQL でメンバーズ CUR のカラム数を調整することになりました。

メンバーズ CUR のカラム数を確認

Athena のクエリエディタで確認すると、メンバーズ CUR には 288 カラムが存在します。ここを 200 以内に抑えないと Q in QuickSight のお目当ての機能が使えないです。

クエリエディタ___Athena___ap-northeast-1-7.png

必要な CUR 項目の選定

メンバーズ CUR は CUR の互換です。そのため、CUR のドキュメントから各項目を確認できます。現在は 288 カラムでしたが、AWS 側で CUR の項目に変更は入れば、メンバーズ CUR にも変更が入ってきます。

明細項目の詳細 - AWS Data Exports

全 288 項目確認するのは骨が折れるので、ヘッダーからある程度絞る方針にしました。特に lineitem 系の項目はコスト分析に必須です。product系は AWS サービスごとに細かく別れているため、EC2、RDS の様な主要なサービスを抑えつつ、productの項目を減らすことにしました。

本テンプレートについて.png

引用: AWS Cost and Usage Reports

カスタム SQL でカラム数を 200 以内に調整

Q in QuickSight の制限に対応するためカスタム SQL を使用します。

Data_Prep-4.png

分析に必要な項目を維持しながら、product 系カラムを厳選しました。SPICE の容量の都合、アカウント ID を 2 つに制限しています。

SELECT
    -- ========================================
    -- 基本項目
    -- ========================================
    bill_invoice_id,
    bill_billing_entity,
    bill_bill_type,
    bill_payer_account_id,
    bill_billing_period_start_date,
    bill_billing_period_end_date,
    bill_invoicing_entity,

    -- ========================================
    -- 明細項目情報
    -- ========================================
    line_item_usage_account_id,
    line_item_line_item_type,
    line_item_usage_start_date,
    line_item_usage_end_date,
    line_item_product_code,
    line_item_usage_type,
    line_item_operation,
    line_item_availability_zone,
    line_item_resource_id,
    line_item_usage_amount,
    line_item_normalization_factor,
    line_item_normalized_usage_amount,
    line_item_currency_code,
    line_item_unblended_rate,
    line_item_unblended_cost,
    line_item_line_item_description,
    line_item_tax_type,
    line_item_legal_entity,

    -- ========================================
    -- 価格情報
    -- ========================================
    pricing_term,
    pricing_unit,
    pricing_public_on_demand_cost,
    pricing_public_on_demand_rate,
    pricing_lease_contract_length,
    pricing_purchase_option,
    pricing_offering_class,

    -- ========================================
    -- リザーブドインスタンス情報
    -- ========================================
    reservation_amortized_upfront_cost_for_usage,
    reservation_amortized_upfront_fee_for_billing_period,
    reservation_availability_zone,
    reservation_effective_cost,
    reservation_end_time,
    reservation_modification_status,
    reservation_normalized_units_per_reservation,
    reservation_number_of_reservations,
    reservation_recurring_fee_for_usage,
    reservation_reservation_a_r_n,
    reservation_start_time,
    reservation_total_reserved_normalized_units,
    reservation_total_reserved_units,
    reservation_units_per_reservation,
    reservation_unused_amortized_upfront_fee_for_billing_period,
    reservation_unused_normalized_unit_quantity,
    reservation_unused_quantity,
    reservation_unused_recurring_fee,
    reservation_upfront_value,

    -- ========================================
    -- Savings Plans情報
    -- ========================================
    savings_plan_total_commitment_to_date,
    savings_plan_savings_plan_a_r_n,
    savings_plan_region,
    savings_plan_instance_type_family,
    savings_plan_offering_type,
    savings_plan_payment_option,
    savings_plan_purchase_term,
    savings_plan_start_time,
    savings_plan_end_time,
    savings_plan_amortized_upfront_commitment_for_billing_period,
    savings_plan_recurring_commitment_for_billing_period,
    savings_plan_savings_plan_effective_cost,
    savings_plan_savings_plan_rate,
    savings_plan_used_commitment,

    -- ========================================
    -- コスト配分タグ
    -- ========================================
    resource_tags_user_cm_billing_group,

    -- ========================================
    -- Product系カラム(125個)
    -- ========================================

    -- 基本情報(20個)
    product_product_name,
    product_sku,
    product_region,
    product_location,
    product_location_type,
    product_servicecode,
    product_servicename,
    product_group,
    product_group_description,
    product_usagetype,
    product_operation,
    product_category,
    product_description,
    product_availability,
    product_availability_zone,
    product_fee_code,
    product_fee_description,
    product_from_location,
    product_to_location,
    product_transfer_type,

    -- EC2/コンピュート関連(40個)
    product_instance,
    product_instance_capacity10xlarge,
    product_instance_capacity12xlarge,
    product_instance_capacity24xlarge,
    product_instance_capacity2xlarge,
    product_instance_capacity4xlarge,
    product_instance_capacity8xlarge,
    product_instance_capacity_large,
    product_instance_capacity_xlarge,
    product_instance_family,
    product_instance_type,
    product_instance_type_family,
    product_instancesku,
    product_instances,
    product_vcpu,
    product_memory,
    product_memory_gib,
    product_memorytype,
    product_storage,
    product_storage_media,
    product_network_performance,
    product_physical_cores,
    product_physical_processor,
    product_processor_architecture,
    product_processor_features,
    product_clock_speed,
    product_cputype,
    product_current_generation,
    product_dedicated_ebs_throughput,
    product_ecu,
    product_enhanced_networking_supported,
    product_gpu,
    product_gpu_memory,
    product_intel_avx2_available,
    product_intel_avx_available,
    product_intel_turbo_available,
    product_normalization_size_factor,
    product_capacitystatus,
    product_tenancy,
    product_operating_system,

    -- OS/ライセンス関連(10個)
    product_os_license_model,
    product_license_model,
    product_pre_installed_sw,
    product_software_included,
    product_software_type,
    product_edition,
    product_version,
    product_attachment_type,
    product_bundle,
    product_addon_feature,

    -- データベース関連(15個)
    product_database_edition,
    product_database_engine,
    product_deployment_option,
    product_deployment_location,
    product_engine_code,
    product_min_volume_size,
    product_max_volume_size,
    product_max_iops_burst_performance,
    product_provisioned,
    product_volume_type,
    product_volume_api_name,
    product_rootvolume,
    product_uservolume,
    product_elastic_graphics_type,
    product_compute_family,

    -- ストレージ関連(15個)
    product_storage_class,
    product_storage_type,
    product_durability,
    product_access_type,
    product_ebs_optimized,
    product_file_system_type,
    product_data,
    product_data_transfer,
    product_data_transfer_quota,
    product_io,
    product_compute_type,
    product_content_type,
    product_directory_size,
    product_directory_type,
    product_directory_type_description,

    -- ネットワーク/転送関連(15個)
    product_datatransferout,
    product_direct_connect_location,
    product_endpoint_type,
    product_routing_type,
    product_routing_target,
    product_from_location_type,
    product_to_location_type,
    product_protocol,
    product_port_speed,
    product_traffic_direction,
    product_dominantnondominant,
    product_endpoint,
    product_concurrencyscalingfreeusage,
    product_api_type,
    product_calling_type,

    -- その他サービス固有(10個)
    product_activity_type,
    product_alarm_type,
    product_broker_engine,
    product_cache_engine,
    product_cache_memory_size_gb,
    product_client_location,
    product_codec,
    product_device,
    product_device_type,
    product_event_type

FROM "mcur-from-other-account"."mcur"."cur"

WHERE
    line_item_usage_account_id IN ('111111111111', '222222222222')

カラム数調整後

カスタム SQL の適用により以下の Q in QuickSight 機能が利用可能になりました。

Build visual でグラフ作成

カラム数を調整した結果、ビジュアル作成機能が使えるようになりました。ですが、質問内容には答えてもらえませんでした。この辺は追々調整していきます。

MCUR_analysis-3.png

Q トピックへの質問

データセットに入っているデータに対して自然言語での質問も可能になりました。

QuickSight_Q_Topics-2.png

補足:200 カラム超でもトピック作成は可能でした

最初の 200 カラムを超えるデータセットでもトピック作成自体は成功しました。

QuickSight_-_分析-4.png
QuickSight_Q_Topics.png

まとめ

メンバーズ CUR を Q in QuickSight で分析するには、200 カラム制限への対応が必要です。カスタム SQL を使用してカラム数を調整することで、一部制限のあった Q in QuickSight の機能が利用可能になります。

おわりに

今回カスタム SQL で作成したデータセットは、Cloud Intelligence Dashboards が期待するカラムを含んだデータセットではなくなりました。Cloud Intelligence Dashboards を利用する場合は、すべてのカラムを含めた別のデータセットを用意してください。

https://dev.classmethod.jp/articles/how-to-create-cid-with-mcur/

参考

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.