Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

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.

Laden Sie die Tabellenpartitionen für die manuell erstellte Tabelle der Kosten- und Nutzungsberichte

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

Wenn Sie einen AWS Glue-Crawler einrichten, der Ihrer Tabelle regelmäßig Partitionen hinzufügt, stellen Sie sicher, dass die Ausführung des Crawlers geplant ist. Andernfalls erhalten Sie beim Generieren des Berichts möglicherweise nicht die neuesten Rechnungsdaten.

Überprüfen Sie 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. Sie müssen 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.

Hinweis: Stellen Sie sicher, dass Sie Athena für Berichtsdatenintegration aktivieren auswählen, wenn Sie die Kosten- und Nutzungsberichte erstellen. Die Berichtsdateien werden 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

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

  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.

  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 einem Jahr