Warum kann ich meine neuesten Rechnungsdaten nicht einsehen, wenn ich meine Kosten- und Nutzungsberichte mit Amazon Athena abfrage?

Lesedauer: 5 Minute
0

Ich kann meine aktuellen Rechnungsdaten nicht einsehen, wenn ich meine Kosten- und Nutzungsberichte mit Amazon Athena abfrage.

Lösung

Der häufigste Grund für dieses Problem sind fehlende Partitionen in der Tabelle der Kosten- und Nutzungsberichte. Um dieses Problem zu beheben, wählen Sie eine oder mehrere der folgenden Lösungen.

Stellen Sie sicher, dass Sie die Tabellenpartitionen für die manuell erstellte Tabelle der Kosten- und Nutzungsberichte laden

Wenn Sie die Tabelle der Kosten- und Nutzungsberichte manuell erstellt haben, laden Sie die Tabellenpartitionen, indem Sie den Befehl MCSK REPAIR TABLE in der Amazon Athena-Konsole ausführen. Sie können die Partitionen auch von der Amazon Athena-Konsole aus hochladen.

Wenn Sie einen AWS Glue-Crawler eingerichtet haben, der Ihrer Tabelle regelmäßig Partitionen hinzufügt, stellen Sie sicher, dass die Ausführung des Crawlers geplant ist, bevor Sie den Bericht generieren. Andernfalls werden die neuesten Rechnungsdaten möglicherweise nicht in den Abfrageergebnissen angezeigt.

Überprüfen Sie unbedingt den Amazon Simple Storage Service (Amazon S3)-Pfad und den AWS Glue-Crawler

Sie können eine AWS CloudFormation-Vorlage verwenden, um Ihre Kosten- und Nutzungsberichte in Athena zu integrieren. Diese Vorlage enthält einen AWS Glue-Crawler, eine AWS Glue-Datenbank und ein AWS Lambda-Ereignis. Die Lambda-Funktion initiiert einen AWS Glue-Crawler, wenn neue Kosten- und Nutzungsberichtsdateien an den Amazon S3-Pfad übermittelt werden. Anschließend fügt der Crawler der Tabelle automatisch Partitionen hinzu, die auf den Daten in den Kosten- und Nutzungsberichtsdateien basieren. Wenn Sie bei der Abfrage der Tabelle nicht die neuesten Rechnungsdaten einsehen können, überprüfen Sie Ihren S3-Pfad. Stellen Sie sicher, dass die Dateien mit den Kosten- und Nutzungsberichten geliefert werden. Überprüfen Sie außerdem Ihren AWS Glue-Crawler, um sicherzustellen, dass er nicht den Status RUNNING oder FAILED hat.

Verwenden Sie die Partitionsprojektion, um die Partitionen automatisch zu befüllen

Sie können die Tabelle der Kosten- und Nutzungsberichte mithilfe der Partitionsprojektion erstellen. Bei der Partitionsprojektion werden Partitionswerte und Speicherorte dynamisch berechnet, anstatt physisch im AWS Glue-Datenkatalog gespeichert zu werden. Daher müssen Sie die Partitionen nicht manuell hinzufügen, um die neuesten Daten anzuzeigen. Sie können die Berichtsdateien sofort abfragen, nachdem sie an Ihren Amazon S3-Bucket übermittelt wurden.

Gehen Sie wie folgt vor, um mithilfe der Partitionsprojektion eine Tabelle mit Kosten- und Nutzungsberichten zu erstellen:

Hinweis: Stellen Sie sicher, dass Athena für Berichtsdatenintegration aktivieren ausgewählt war, als Sie die Kosten- und Nutzungsberichte erstellt haben. Wenn Sie Athena für die Integration in den Bericht auswählen, werden die Berichtsdateien im partitionierten Parquet-Format an das Zielkonto übermittelt. Es kann bis zu 24 Stunden dauern, bis die Berichtsdateien an die Zieldateien übermittelt werden. Die Dateipfade sehen in etwa wie folgt aus:

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.Öffnen Sie die Amazon Athena-Konsole.

2.Geben Sie auf der Registerkarte Abfrage-Editor einen Befehl ein, der dem folgenden ähnelt:

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.Wählen Sie Speichern unter aus, um die Abfrage zu speichern.

4.Wählen Sie Abfrage ausführen aus, um die Tabelle test_cur_partitionprojection zu erstellen.

Sie können die Tabelle sofort nach ihrer Erstellung abfragen. Weitere Informationen finden Sie unter Abfragen von Kosten- und Nutzungsberichten mit Amazon Athena.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren