Pourquoi est-ce que mes dernières données de facturation ne s'affichent pas lorsque j'interroge mes rapports de coût et d'utilisation à l'aide d'Amazon Athena ?

Dernière mise à jour : 20/04/2021

Mes dernières données de facturation ne s'affichent pas lorsque j'interroge mes rapports de coût et d'utilisation à l'aide d'Amazon Athena.

Solution

Ce problème s'explique le plus souvent par l'absence de certaines partitions dans la table Rapports de coût et d'utilisation. Pour le résoudre, choisissez une ou plusieurs des solutions décrites ci-après.

Vérifier le chargement des partitions lors de la création manuelle de la table Rapports de coût et d'utilisation

Si vous avez créé manuellement la table Rapports de coût et d'utilisation, chargez les partitions en exécutant la commande MCSK REPAIR TABLE dans la console Amazon Athena. Vous pouvez aussi charger les partitions directement depuis la console Amazon Athena.

Si vous avez configuré un analyseur AWS Glue pour ajouter périodiquement des partitions à votre table, veillez à en planifier l'exécution avant de générer le rapport. À défaut, vos dernières données de facturation risquent de ne pas s'afficher dans les résultats de requête.

Vérifier le chemin d'accès Amazon Simple Storage Service (Amazon S3) et l'analyseur AWS Glue

Vous pouvez utiliser un modèle AWS CloudFormation pour intégrer vos rapports de coût et d'utilisation à Athena. Ce modèle inclut un analyseur AWS Glue, une base de données AWS Glue et un événement AWS Lambda. La fonction Lambda lance une analyse AWS Glue lorsque de nouveaux fichiers Rapports de coût et d'utilisation sont envoyés vers le chemin d'accès Amazon S3. En fonction des données qu'ils contiennent, l'analyseur ajoute ensuite automatiquement des partitions à la table Rapports de coût et d'utilisation. Si vos dernières données de facturation ne s'affichent pas en interrogeant la table, vérifiez votre chemin d'accès S3. Assurez-vous que les fichiers Rapports de coût et d'utilisation sont correctement distribués. Consultez également les paramètres de votre analyse AWS Glue pour vérifier l'absence du statut RUNNING ou FAILED.

Effectuer un remplissage automatique via la projection de partitions

Vous pouvez créer la table Rapports de coût et d'utilisation à l'aide d'une projection de partitions. Dans ce scénario, les valeurs et les emplacements des partitions sont calculés dynamiquement au lieu d'être stockés physiquement dans le catalogue de données AWS Glue. Il n'est pas donc nécessaire d'ajouter manuellement les partitions pour afficher les données les plus récentes. Vous pouvez interroger les fichiers de rapport immédiatement après leur arrivée dans votre compartiment Amazon S3.

Pour créer une table Rapports de coût et d'utilisation à l'aide de la projection de partitions, procédez comme suit :

Remarque : veillez à sélectionner Athena dans la rubrique Activer l'intégration de données de rapport pour lors de la création des rapports de coût et d'utilisation. En choisissant Athena, les fichiers de rapport seront ainsi envoyés au compte cible au format parquet partitionné. La remise des fichiers de rapport à l'emplacement cible peut prendre jusqu'à 24 heures. Voici un exemple de chemins d'accès aux fichiers :

s3://example-report-prefix/example-report-name/example-report-name/year=2021/month=1
s3://example-report-prefix/example-report-name/example-report-name/year=2021/month=2

1.    Ouvrez la console Amazon Athena.

2.    Dans l'onglet Éditeur de requête, entrez une commande comme celle-ci :

CREATE EXTERNAL TABLE test_cur_partitionprojection(
  `identity_line_item_id` string,
  `identity_time_interval` string,
  `bill_invoice_id` string,
  `bill_billing_entity` string,
  `bill_bill_type` string,
  `bill_payer_account_id` string,
  `bill_billing_period_start_date` timestamp,
  `bill_billing_period_end_date` timestamp,
  `line_item_usage_account_id` string,
  `line_item_line_item_type` string,
  `line_item_usage_start_date` timestamp,
  `line_item_usage_end_date` timestamp,
  `line_item_product_code` string,
  `line_item_usage_type` string,
  `line_item_operation` string,
  `line_item_availability_zone` string,
  `line_item_usage_amount` double,
  `line_item_normalization_factor` double,
  `line_item_normalized_usage_amount` double,
  `line_item_currency_code` string,
  `line_item_unblended_rate` string,
  `line_item_unblended_cost` double,
  `line_item_blended_rate` string,
  `line_item_blended_cost` double,
  `line_item_line_item_description` string,
  `line_item_tax_type` string,
  `line_item_legal_entity` string,
  `product_product_name` string,
  `product_alarm_type` string,
  `product_availability` string,
  `product_bundle` string,
  `product_bundle_description` string,
  `product_bundle_group` string,
  `product_capacitystatus` string,
  `product_clock_speed` string,
  `product_component` string,
  `product_compute_type` string,
  `product_content_type` string,
  `product_cputype` string,
  `product_current_generation` string,
  `product_database_engine` string,
  `product_dedicated_ebs_throughput` string,
  `product_deployment_option` string,
  `product_description` string,
  `product_durability` string,
  `product_ecu` string,
  `product_edition` string,
  `product_engine_code` string,
  `product_enhanced_networking_supported` string,
  `product_event_type` string,
  `product_free_query_types` string,
  `product_free_trial` string,
  `product_from_location` string,
  `product_from_location_type` string,
  `product_gpu` string,
  `product_gpu_memory` string,
  `product_group` string,
  `product_group_description` string,
  `product_instance_family` string,
  `product_instance_name` string,
  `product_instance_type` string,
  `product_instance_type_family` string,
  `product_intel_avx2_available` string,
  `product_intel_avx_available` string,
  `product_intel_turbo_available` string,
  `product_license` string,
  `product_license_model` string,
  `product_location` string,
  `product_location_type` string,
  `product_logs_destination` string,
  `product_max_iops_burst_performance` string,
  `product_max_iopsvolume` string,
  `product_max_throughputvolume` string,
  `product_max_volume_size` string,
  `product_maximum_extended_storage` string,
  `product_maximum_storage_volume` string,
  `product_memory` string,
  `product_memorytype` string,
  `product_message_delivery_frequency` string,
  `product_message_delivery_order` string,
  `product_min_volume_size` string,
  `product_minimum_storage_volume` string,
  `product_network_performance` string,
  `product_normalization_size_factor` string,
  `product_operating_system` string,
  `product_operation` string,
  `product_origin` string,
  `product_physical_cpu` string,
  `product_physical_gpu` string,
  `product_physical_processor` string,
  `product_pre_installed_sw` string,
  `product_processor_architecture` string,
  `product_processor_features` string,
  `product_product_family` string,
  `product_queue_type` string,
  `product_recipient` string,
  `product_region` string,
  `product_resource_type` string,
  `product_rootvolume` string,
  `product_routing_target` string,
  `product_routing_type` string,
  `product_running_mode` string,
  `product_servicecode` string,
  `product_servicename` string,
  `product_sku` string,
  `product_software_included` string,
  `product_software_type` string,
  `product_standard_storage_retention_included` string,
  `product_storage` string,
  `product_storage_class` string,
  `product_storage_media` string,
  `product_storage_type` string,
  `product_subscription_type` string,
  `product_tenancy` string,
  `product_to_location` string,
  `product_to_location_type` string,
  `product_transfer_type` string,
  `product_usagetype` string,
  `product_uservolume` string,
  `product_vcpu` string,
  `product_version` string,
  `product_volume_api_name` string,
  `product_volume_type` string,
  `pricing_rate_id` string,
  `pricing_currency` string,
  `pricing_public_on_demand_cost` double,
  `pricing_public_on_demand_rate` string,
  `pricing_term` string,
  `pricing_unit` string,
  `reservation_amortized_upfront_cost_for_usage` double,
  `reservation_amortized_upfront_fee_for_billing_period` double,
  `reservation_effective_cost` double,
  `reservation_end_time` string,
  `reservation_modification_status` string,
  `reservation_normalized_units_per_reservation` string,
  `reservation_number_of_reservations` string,
  `reservation_recurring_fee_for_usage` double,
  `reservation_start_time` string,
  `reservation_subscription_id` string,
  `reservation_total_reserved_normalized_units` string,
  `reservation_total_reserved_units` string,
  `reservation_units_per_reservation` string,
  `reservation_unused_amortized_upfront_fee_for_billing_period` double,
  `reservation_unused_normalized_unit_quantity` double,
  `reservation_unused_quantity` double,
  `reservation_unused_recurring_fee` double,
  `reservation_upfront_value` double,
  `savings_plan_total_commitment_to_date` double,
  `savings_plan_savings_plan_a_r_n` string,
  `savings_plan_savings_plan_rate` double,
  `savings_plan_used_commitment` double,
  `savings_plan_savings_plan_effective_cost` double,
  `savings_plan_amortized_upfront_commitment_for_billing_period` double,
  `savings_plan_recurring_commitment_for_billing_period` double)
PARTITIONED BY (
  `year` int,
  `month` int)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://example-report-prefix/example-report-name/example-report-name'
TBLPROPERTIES (
  'projection.enabled'='true',
  'projection.month.range'='1,12',
  'projection.month.type'='integer',
  'projection.year.range'='1900,2050',
  'projection.year.type'='integer',
  'storage.location.template'='s3://example-report-prefix/example-report-name/example-report-name/year=${year}/month=${month}')

3.    Choisissez Enregistrer sous pour enregistrer la requête.

4.    Sélectionnez Exécuter la requête pour créer la table test_cur_partitionprojection.

Vous pouvez interroger la table immédiatement après sa création. Pour en savoir plus, consultez la sectionInterroger les rapports de coût et d'utilisation à l'aide d'Amazon Athena.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?