From 4c0595605f2abbebe654544d0b3f7dcafb118ba3 Mon Sep 17 00:00:00 2001 From: Iakov GAN <82834333+iakov-aws@users.noreply.github.com> Date: Fri, 15 Nov 2024 17:31:21 +0100 Subject: [PATCH 1/5] convert extended support to cur2 (#1027) * convert extended support to cur2 --- .../extended-support-cost-projection.yaml | 84 +++++++++---------- 1 file changed, 39 insertions(+), 45 deletions(-) diff --git a/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml b/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml index 6f4a4881..5d79c267 100644 --- a/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml +++ b/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml @@ -3505,7 +3505,9 @@ datasets: views: eks_extended_support_view: dependsOn: - cur: true + cur2: + - pricing_unit + - product['region'] data: |- CREATE OR REPLACE VIEW "${athena_database_name}".eks_extended_support_view AS WITH @@ -3557,19 +3559,19 @@ views: , c.bill_payer_account_id payer_account_id , c.line_item_usage_account_id linked_account_id , accmap.account_name - , c.product_region + , c.product['region'] region_code , eksinv.cluster_name , eksinv.k8s_version - , c.line_item_line_item_description + , c.line_item_line_item_description item_description , c.pricing_unit , c.line_item_resource_id , c.line_item_usage_type , sum(c.line_item_usage_amount) FROM - ("${athena_database_name}"."${cur_table_name}" c - INNER JOIN eks_clusters_inventory eksinv ON ((c.bill_payer_account_id = eksinv.payer_id) AND (c.line_item_usage_account_id = eksinv.accountid) AND (c.product_region = eksinv.region) AND (c.line_item_resource_id = eksinv.cluster_arn))) + ("${cur2_database}"."${cur2_table_name}" c + INNER JOIN eks_clusters_inventory eksinv ON ((c.bill_payer_account_id = eksinv.payer_id) AND (c.line_item_usage_account_id = eksinv.accountid) AND (c.product['region'] = eksinv.region) AND (c.line_item_resource_id = eksinv.cluster_arn))) INNER JOIN account_map accmap on c.line_item_usage_account_id = accmap.account_id - WHERE (((c.bill_billing_period_start_date >= ("date_trunc"('month', current_timestamp) - INTERVAL '4' MONTH)) AND (CAST(concat(c.year, '-', c.month, '-01') AS date) >= (date_trunc('month', current_date) - INTERVAL '4' MONTH))) AND (c.product_servicecode = 'AmazonEKS') AND (c.line_item_line_item_type IN ('Usage')) AND ((c.product_product_family = 'Compute') AND (c.line_item_usage_type LIKE '%AmazonEKS-Hours:perCluster'))) + WHERE (((c.bill_billing_period_start_date >= ("date_trunc"('month', current_timestamp) - INTERVAL '4' MONTH)) AND (CAST(concat(c.billing_period, '-01') AS date) >= (date_trunc('month', current_date) - INTERVAL '4' MONTH))) AND (c.product_servicecode = 'AmazonEKS') AND (c.line_item_line_item_type IN ('Usage')) AND ((c.product_product_family = 'Compute') AND (c.line_item_usage_type LIKE '%AmazonEKS-Hours:perCluster'))) GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ) SELECT @@ -3594,14 +3596,6 @@ views: (eks_clusters_usage ekscus INNER JOIN eks_k8s_release_calendar rc ON (ekscus.k8s_version = rc.k8s_version)) parameters: - cur_database_name: - default: cid_cur - description: "Enter the name of the CUR database" - global: True - cur_table_name: - default: cur - description: "Enter the name of the CUR table" - global: True data_collection_database_name: type: athena query: SELECT DISTINCT table_schema FROM information_schema.columns WHERE table_name = 'inventory_eks_data' @@ -3610,7 +3604,15 @@ views: global: True rds_extended_support_view: dependsOn: - cur: true + cur2: + - pricing_unit + - product['database_engine'] + - product['deployment_option'] + - product['instance_type'] + - product['instance_type_family'] + - product['product_family'] + - product['region'] + - product['vcpu'] data: |- CREATE OR REPLACE VIEW "${athena_database_name}".rds_extended_support_view AS WITH @@ -3791,34 +3793,34 @@ views: ) , rds_resources (billing_period, usage_date, payer_account_id, linked_account_id, account_name, region_code, rds_type, deployment_option, engine, engineversion, instance_type_family, instance_type, item_description, vcpus, usage_unit, dbresourceidentifier, resource_id, original_deployment_option, original_usage_type, usage_amount, vcpu_acu_hours) AS ( SELECT - c.bill_billing_period_start_date - , date_trunc('day', c.line_item_usage_start_date) + c.bill_billing_period_start_date billing_period + , date_trunc('day', c.line_item_usage_start_date) usage_date , c.bill_payer_account_id payer_account_id , c.line_item_usage_account_id linked_account_id , accmap.account_name - , c.product_region - , (CASE WHEN (c.product_database_engine LIKE 'Aurora%') THEN 'Aurora' ELSE 'AmazonRDS' END) rds_type - , (CASE WHEN (c.line_item_usage_type LIKE '%InstanceUsage%') THEN 'SINGLE-AZ' WHEN (c.line_item_usage_type LIKE '%Multi-AZUsage%') THEN 'MULTI-AZ' WHEN (c.line_item_usage_type LIKE '%Multi-AZClusterUsage%') THEN 'MULTI-AZ-CLUSTER' WHEN ((c.product_product_family = 'Serverless') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')) THEN 'SERVERLESS' WHEN ((c.product_product_family = 'ServerlessV2') AND (c.line_item_usage_type like '%Aurora:ServerlessV2%Usage')) THEN 'SERVERLESSV2' ELSE 'UNDEFINED (Check the usage type)' END) - , (CASE WHEN (rdsu.engine IS NOT NULL) THEN rdsu.engine ELSE c.product_database_engine END) - , (CASE WHEN ((rdsu.engine IS NOT NULL) AND (rdsu.engineversion IS NOT NULL)) THEN CONCAT(rdsu.engine, rdsu.engineversion) ELSE 'engine-1.-1.-1' END) - , c.product_instance_type_family - , c.product_instance_type - , c.line_item_line_item_description - , (CASE WHEN ((c.product_product_family like 'Serverless%') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')) THEN 0 ELSE CAST(c.product_vcpu AS int) END) - , (CASE WHEN ((c.product_product_family = 'ServerlessV2') AND (c.line_item_usage_type like '%Aurora:ServerlessV2%Usage')) THEN 'acu-hour' ELSE 'vcpu-hour' END) - , split_part(c.line_item_resource_id, ':', 7) - , c.line_item_resource_id - , c.product_deployment_option - , c.line_item_usage_type - , sum(c.line_item_usage_amount) - , sum((CASE WHEN (c.pricing_unit = 'ACU-Hr') THEN c.line_item_usage_amount WHEN (c.line_item_usage_type LIKE '%Multi-AZUsage%') THEN (CAST(c.product_vcpu AS int) * c.line_item_usage_amount * 2) ELSE (CAST(c.product_vcpu AS int) * c.line_item_usage_amount) END)) + , c.product['region'] region_code + , (CASE WHEN (c.product['database_engine'] LIKE 'Aurora%') THEN 'Aurora' ELSE 'AmazonRDS' END) rds_type + , (CASE WHEN (c.line_item_usage_type LIKE '%InstanceUsage%') THEN 'SINGLE-AZ' WHEN (c.line_item_usage_type LIKE '%Multi-AZUsage%') THEN 'MULTI-AZ' WHEN (c.line_item_usage_type LIKE '%Multi-AZClusterUsage%') THEN 'MULTI-AZ-CLUSTER' WHEN ((c.product['product_family'] = 'Serverless') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')) THEN 'SERVERLESS' WHEN ((c.product['product_family'] = 'ServerlessV2') AND (c.line_item_usage_type like '%Aurora:ServerlessV2%Usage')) THEN 'SERVERLESSV2' ELSE 'UNDEFINED (Check the usage type)' END) deployment_option + , (CASE WHEN (rdsu.engine IS NOT NULL) THEN rdsu.engine ELSE c.product['database_engine'] END) engine + , (CASE WHEN ((rdsu.engine IS NOT NULL) AND (rdsu.engineversion IS NOT NULL)) THEN CONCAT(rdsu.engine, rdsu.engineversion) ELSE 'engine-1.-1.-1' END) engineversion + , c.product['instance_type_family'] instance_type_family + , c.product['instance_type'] instance_type + , c.line_item_line_item_description item_description + , (CASE WHEN ((c.product['product_family'] like 'Serverless%') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')) THEN 0 ELSE CAST(c.product['vcpu'] AS int) END) vcpus + , (CASE WHEN ((c.product['product_family'] = 'ServerlessV2') AND (c.line_item_usage_type like '%Aurora:ServerlessV2%Usage')) THEN 'acu-hour' ELSE 'vcpu-hour' END) usage_unit + , split_part(c.line_item_resource_id, ':', 7) dbresourceidentifier + , c.line_item_resource_id resource_id + , c.product['deployment_option'] original_deployment_option + , c.line_item_usage_type original_usage_type + , sum(c.line_item_usage_amount) usage_amount + , sum((CASE WHEN (c.pricing_unit = 'ACU-Hr') THEN c.line_item_usage_amount WHEN (c.line_item_usage_type LIKE '%Multi-AZUsage%') THEN (CAST(c.product['vcpu'] AS int) * c.line_item_usage_amount * 2) ELSE (CAST(c.product['vcpu'] AS int) * c.line_item_usage_amount) END)) vcpu_acu_hours FROM - (("${cur_database_name}"."${cur_table_name}" c - INNER JOIN all_sanitised_rds_resources rdsu ON ((c.bill_payer_account_id = rdsu.payer_id) AND (c.line_item_usage_account_id = rdsu.accountid) AND (c.product_region = rdsu.region) AND (split_part(c.line_item_resource_id, ':', 7) = rdsu.dbresourceidentifier))) + (("${cur2_database}"."${cur2_table_name}" c + INNER JOIN all_sanitised_rds_resources rdsu ON ((c.bill_payer_account_id = rdsu.payer_id) AND (c.line_item_usage_account_id = rdsu.accountid) AND (c.product['region'] = rdsu.region) AND (split_part(c.line_item_resource_id, ':', 7) = rdsu.dbresourceidentifier))) INNER JOIN account_map accmap ON (c.line_item_usage_account_id = accmap.account_id)) - WHERE (((c.bill_billing_period_start_date >= ("date_trunc"('month', current_timestamp) - INTERVAL '4' MONTH)) AND (CAST(concat(c.year, '-', c.month, '-01') AS date) >= (date_trunc('month', current_date) - INTERVAL '4' MONTH))) AND (c.product_servicecode = 'AmazonRDS') AND (c.line_item_line_item_type IN ('DiscountedUsage', 'Usage')) AND ((c.product_product_family = 'Database Instance') OR ((c.product_product_family like 'Serverless%') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')))) + WHERE (((c.bill_billing_period_start_date >= (date_trunc('month', current_timestamp) - INTERVAL '4' MONTH)) AND (CAST(concat(c.billing_period, '-01') AS date) >= (date_trunc('month', current_date) - INTERVAL '4' MONTH))) AND (c.product_servicecode = 'AmazonRDS') AND (c.line_item_line_item_type IN ('DiscountedUsage', 'Usage')) AND ((c.product['product_family'] = 'Database Instance') OR ((c.product['product_family'] like 'Serverless%') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')))) GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 - ) + ) SELECT rdsr.billing_period , rdsr.usage_date @@ -3860,14 +3862,6 @@ views: (rp.rds_type = 'Aurora' and rdsr.deployment_option in ('SERVERLESS', 'SERVERLESSV2')) ) parameters: - cur_database_name: - default: cid_cur - description: "Enter the name of the CUR database" - global: True - cur_table_name: - default: cur - description: "Enter the name of the CUR table" - global: True data_collection_database_name: type: athena query: SELECT DISTINCT table_schema FROM information_schema.columns WHERE table_name = 'inventory_rds_db_instances_data' From 26b7df6678e3f8e3efc7af4e50d87c481c26a88d Mon Sep 17 00:00:00 2001 From: work-bw <114696382+work-bw@users.noreply.github.com> Date: Fri, 15 Nov 2024 13:31:19 -0600 Subject: [PATCH 2/5] fix extended support cur2 query --- .../extended-support-cost-projection.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml b/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml index 5d79c267..340c7406 100644 --- a/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml +++ b/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml @@ -3610,7 +3610,7 @@ views: - product['deployment_option'] - product['instance_type'] - product['instance_type_family'] - - product['product_family'] + - product_product_family - product['region'] - product['vcpu'] data: |- @@ -3800,14 +3800,14 @@ views: , accmap.account_name , c.product['region'] region_code , (CASE WHEN (c.product['database_engine'] LIKE 'Aurora%') THEN 'Aurora' ELSE 'AmazonRDS' END) rds_type - , (CASE WHEN (c.line_item_usage_type LIKE '%InstanceUsage%') THEN 'SINGLE-AZ' WHEN (c.line_item_usage_type LIKE '%Multi-AZUsage%') THEN 'MULTI-AZ' WHEN (c.line_item_usage_type LIKE '%Multi-AZClusterUsage%') THEN 'MULTI-AZ-CLUSTER' WHEN ((c.product['product_family'] = 'Serverless') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')) THEN 'SERVERLESS' WHEN ((c.product['product_family'] = 'ServerlessV2') AND (c.line_item_usage_type like '%Aurora:ServerlessV2%Usage')) THEN 'SERVERLESSV2' ELSE 'UNDEFINED (Check the usage type)' END) deployment_option + , (CASE WHEN (c.line_item_usage_type LIKE '%InstanceUsage%') THEN 'SINGLE-AZ' WHEN (c.line_item_usage_type LIKE '%Multi-AZUsage%') THEN 'MULTI-AZ' WHEN (c.line_item_usage_type LIKE '%Multi-AZClusterUsage%') THEN 'MULTI-AZ-CLUSTER' WHEN ((c.product_product_family = 'Serverless') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')) THEN 'SERVERLESS' WHEN ((c.product_product_family = 'ServerlessV2') AND (c.line_item_usage_type like '%Aurora:ServerlessV2%Usage')) THEN 'SERVERLESSV2' ELSE 'UNDEFINED (Check the usage type)' END) deployment_option , (CASE WHEN (rdsu.engine IS NOT NULL) THEN rdsu.engine ELSE c.product['database_engine'] END) engine , (CASE WHEN ((rdsu.engine IS NOT NULL) AND (rdsu.engineversion IS NOT NULL)) THEN CONCAT(rdsu.engine, rdsu.engineversion) ELSE 'engine-1.-1.-1' END) engineversion , c.product['instance_type_family'] instance_type_family , c.product['instance_type'] instance_type , c.line_item_line_item_description item_description - , (CASE WHEN ((c.product['product_family'] like 'Serverless%') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')) THEN 0 ELSE CAST(c.product['vcpu'] AS int) END) vcpus - , (CASE WHEN ((c.product['product_family'] = 'ServerlessV2') AND (c.line_item_usage_type like '%Aurora:ServerlessV2%Usage')) THEN 'acu-hour' ELSE 'vcpu-hour' END) usage_unit + , (CASE WHEN ((c.product_product_family like 'Serverless%') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')) THEN 0 ELSE CAST(c.product['vcpu'] AS int) END) vcpus + , (CASE WHEN ((c.product_product_family = 'ServerlessV2') AND (c.line_item_usage_type like '%Aurora:ServerlessV2%Usage')) THEN 'acu-hour' ELSE 'vcpu-hour' END) usage_unit , split_part(c.line_item_resource_id, ':', 7) dbresourceidentifier , c.line_item_resource_id resource_id , c.product['deployment_option'] original_deployment_option @@ -3818,7 +3818,7 @@ views: (("${cur2_database}"."${cur2_table_name}" c INNER JOIN all_sanitised_rds_resources rdsu ON ((c.bill_payer_account_id = rdsu.payer_id) AND (c.line_item_usage_account_id = rdsu.accountid) AND (c.product['region'] = rdsu.region) AND (split_part(c.line_item_resource_id, ':', 7) = rdsu.dbresourceidentifier))) INNER JOIN account_map accmap ON (c.line_item_usage_account_id = accmap.account_id)) - WHERE (((c.bill_billing_period_start_date >= (date_trunc('month', current_timestamp) - INTERVAL '4' MONTH)) AND (CAST(concat(c.billing_period, '-01') AS date) >= (date_trunc('month', current_date) - INTERVAL '4' MONTH))) AND (c.product_servicecode = 'AmazonRDS') AND (c.line_item_line_item_type IN ('DiscountedUsage', 'Usage')) AND ((c.product['product_family'] = 'Database Instance') OR ((c.product['product_family'] like 'Serverless%') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')))) + WHERE (((c.bill_billing_period_start_date >= (date_trunc('month', current_timestamp) - INTERVAL '4' MONTH)) AND (CAST(concat(c.billing_period, '-01') AS date) >= (date_trunc('month', current_date) - INTERVAL '4' MONTH))) AND (c.product_servicecode = 'AmazonRDS') AND (c.line_item_line_item_type IN ('DiscountedUsage', 'Usage')) AND ((c.product_product_family = 'Database Instance') OR ((c.product_product_family like 'Serverless%') AND (c.line_item_usage_type like '%Aurora:Serverless%Usage')))) GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ) SELECT From 24df028fe5a9d13e2133e14c677ea2a314a8ee94 Mon Sep 17 00:00:00 2001 From: gurajani-aws <130507511+gurajani-aws@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:40:01 -0500 Subject: [PATCH 3/5] CUR2 Support (#1033) --- changes/CHANGELOG-graviton-savings.md | 7 + .../graviton_savings_dashboard.yaml | 1720 +++++++++++------ 2 files changed, 1172 insertions(+), 555 deletions(-) diff --git a/changes/CHANGELOG-graviton-savings.md b/changes/CHANGELOG-graviton-savings.md index 10a00e46..24227bb6 100644 --- a/changes/CHANGELOG-graviton-savings.md +++ b/changes/CHANGELOG-graviton-savings.md @@ -1,5 +1,12 @@ # What's new in the Graviton Savings Dashboard +## Graviton Savings Dashboard v2.1.0: +``` +cid-cmd update --dashboard-id graviton-savings --force --recursive +``` +* CUR 2 Support +* Fixed filters on Opensearch and ElastiCache Tabs + ## Graviton Savings Dashboard v2.0.0: ``` diff --git a/dashboards/graviton-savings-dashboard/graviton_savings_dashboard.yaml b/dashboards/graviton-savings-dashboard/graviton_savings_dashboard.yaml index 8772d302..0939044b 100644 --- a/dashboards/graviton-savings-dashboard/graviton_savings_dashboard.yaml +++ b/dashboards/graviton-savings-dashboard/graviton_savings_dashboard.yaml @@ -2103,28 +2103,6 @@ dashboards: - Scope: ALL_VISUALS SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a Status: ENABLED - - CrossDataset: SINGLE_DATASET - FilterGroupId: e594b280-a5a5-4eb1-b35f-96255efcdd56 - Filters: - - CategoryFilter: - Column: - ColumnName: graviton_eligibility - DataSetIdentifier: opensearch_graviton_dashboard - Configuration: - FilterListConfiguration: - CategoryValues: - - Requires Update - MatchOperator: CONTAINS - NullOption: NON_NULLS_ONLY - FilterId: 157aeccb-a6d4-4abd-a34c-c1814d4e294d - ScopeConfiguration: - SelectedSheets: - SheetVisualScopingConfigurations: - - Scope: SELECTED_VISUALS - SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a - VisualIds: - - 0a72f59c-d4a7-456a-b79d-84b3e9dd0d58 - Status: ENABLED - CrossDataset: SINGLE_DATASET FilterGroupId: be075717-c7a0-4e56-828a-3664b757de05 Filters: @@ -2188,28 +2166,6 @@ dashboards: - Scope: ALL_VISUALS SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a Status: ENABLED - - CrossDataset: SINGLE_DATASET - FilterGroupId: d2415f8a-4fcb-439d-82da-e89bf33045e7 - Filters: - - CategoryFilter: - Column: - ColumnName: graviton_instance - DataSetIdentifier: opensearch_graviton_dashboard - Configuration: - FilterListConfiguration: - CategoryValues: - - '' - MatchOperator: CONTAINS - NullOption: NON_NULLS_ONLY - FilterId: 1d3eb0ef-a472-4466-bdd9-9852574d4172 - ScopeConfiguration: - SelectedSheets: - SheetVisualScopingConfigurations: - - Scope: SELECTED_VISUALS - SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a - VisualIds: - - 0a72f59c-d4a7-456a-b79d-84b3e9dd0d58 - Status: ENABLED - CrossDataset: SINGLE_DATASET FilterGroupId: 4630e35b-01cf-4e89-a503-34245871c904 Filters: @@ -2643,27 +2599,6 @@ dashboards: VisualIds: - dbcad183-c013-4f07-8e56-7592c13c43ab Status: ENABLED - - CrossDataset: SINGLE_DATASET - FilterGroupId: 90b4e8d1-8c26-4130-8a70-e03f0eb4bab3 - Filters: - - CategoryFilter: - Column: - ColumnName: processor_type - DataSetIdentifier: opensearch_graviton_dashboard - Configuration: - CustomFilterConfiguration: - MatchOperator: EQUALS - NullOption: NON_NULLS_ONLY - ParameterName: OpenSearchProcessor - FilterId: 34a4e648-f9b9-4b0a-9edb-80268d4229be - ScopeConfiguration: - SelectedSheets: - SheetVisualScopingConfigurations: - - Scope: SELECTED_VISUALS - SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a - VisualIds: - - dbcad183-c013-4f07-8e56-7592c13c43ab - Status: ENABLED - CrossDataset: SINGLE_DATASET FilterGroupId: 9f143f6b-a2cd-46aa-9310-146062ae1307 Filters: @@ -2685,28 +2620,6 @@ dashboards: VisualIds: - dbcad183-c013-4f07-8e56-7592c13c43ab Status: ENABLED - - CrossDataset: SINGLE_DATASET - FilterGroupId: a539098b-3419-4c16-8496-b1112f1f52a0 - Filters: - - RelativeDatesFilter: - AnchorDateConfiguration: - AnchorOption: NOW - Column: - ColumnName: bill_billing_period_start_date - DataSetIdentifier: opensearch_graviton_dashboard - FilterId: 22e9c33e-75cb-4584-b37d-052216de2b3f - MinimumGranularity: DAY - NullOption: NON_NULLS_ONLY - RelativeDateType: PREVIOUS - TimeGranularity: MONTH - ScopeConfiguration: - SelectedSheets: - SheetVisualScopingConfigurations: - - Scope: SELECTED_VISUALS - SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a - VisualIds: - - 0a72f59c-d4a7-456a-b79d-84b3e9dd0d58 - Status: ENABLED - CrossDataset: SINGLE_DATASET FilterGroupId: be16a8a3-a1ab-4580-b6b2-440352f1761f Filters: @@ -6408,186 +6321,778 @@ dashboards: VisualIds: - 611377dc-276d-4378-8647-fa9988768eaa Status: ENABLED - Options: {} - ParameterDeclarations: - - DecimalParameterDeclaration: - DefaultValues: - StaticValues: - - 10.0 - Name: EC2EfficiencyGain - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: 'NULL' - - DecimalParameterDeclaration: - DefaultValues: - StaticValues: - - 10.0 - Name: RDSEfficiencyGain - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: 'NULL' - - DecimalParameterDeclaration: - DefaultValues: - StaticValues: - - 10.0 - Name: ElastiCacheEfficiencyGain - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: 'NULL' - - DecimalParameterDeclaration: - DefaultValues: - StaticValues: - - 10.0 - Name: OpenSearchEfficiencyGain - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: 'NULL' - - DecimalParameterDeclaration: - DefaultValues: - StaticValues: - - 100.0 - Name: TargetEC2GravitonCoverage - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: 'NULL' - - StringParameterDeclaration: - DefaultValues: {} - Name: LinkedAccount - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: - StaticValues: [] - Name: UnitCost - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: - StaticValues: - - Instance Type - Name: GroupDatabaseBy - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: PayerAccount - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: - StaticValues: [] - Name: Engine - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: - StaticValues: [] - Name: PurchaseOption - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: - StaticValues: [] - Name: EngineSelector - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: LinkedAccountName - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: AccountName - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: - DynamicValue: - DefaultValueColumn: - ColumnName: product_cache_engine - DataSetIdentifier: elasticache_graviton_dashboard - GroupNameColumn: - ColumnName: product_cache_engine - DataSetIdentifier: elasticache_graviton_dashboard - UserNameColumn: - ColumnName: product_cache_engine - DataSetIdentifier: elasticache_graviton_dashboard - StaticValues: [] - Name: ElasticacheEngine - ParameterValueType: SINGLE_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: InstanceType - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: Region - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: RDSRegions - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: RDSGravitonEligible - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: RDSDBEngine - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: RDSInstanceType - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: RDSDeploymentOption - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: RDSPricingTerm - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: RDSInstanceFamily - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: - DefaultValues: {} - Name: ElastiCacheRegion - ParameterValueType: MULTI_VALUED - ValueWhenUnset: - ValueWhenUnsetOption: RECOMMENDED_VALUE - - StringParameterDeclaration: + - CrossDataset: SINGLE_DATASET + FilterGroupId: 96d8847e-ae98-4a41-8915-0388541a8ad6 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_custom + DataSetIdentifier: elasticache_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: a94736e9-2526-4cfd-87ff-c087d6357365 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: cbe69215-5234-4fab-b3f2-614bf51a3438 + VisualIds: + - 28ea1f4a-1129-4a88-b304-b2df9667e56c + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 1dbb5c63-74f2-46ba-977b-f5299ed0d2c2 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_custom + DataSetIdentifier: elasticache_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: f34df328-a63b-46c2-999b-c261676c91b5 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: cbe69215-5234-4fab-b3f2-614bf51a3438 + VisualIds: + - 6e9c3b24-15c2-4957-ad32-0e6799006d69 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 7ba45f69-9483-4157-854b-ba014f2a2ab8 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_custom + DataSetIdentifier: elasticache_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: c8eb87f9-f424-4627-b4e7-e2c697d961de + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: cbe69215-5234-4fab-b3f2-614bf51a3438 + VisualIds: + - d0ce11dd-e109-48d8-bd18-ad7169293dbf + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: a02795ca-9528-42f3-b58c-645cb0da6a9c + Filters: + - CategoryFilter: + Column: + ColumnName: processor_custom + DataSetIdentifier: elasticache_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: e7ba933b-2d04-4e56-becb-3466be5e9123 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: cbe69215-5234-4fab-b3f2-614bf51a3438 + VisualIds: + - 144151e9-e382-4305-9917-ad03930347f5 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: b00ac44c-095e-4697-9283-5b919466a61c + Filters: + - CategoryFilter: + Column: + ColumnName: processor_custom + DataSetIdentifier: elasticache_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: b435c92c-436f-4db6-90ad-5912e829990d + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: cbe69215-5234-4fab-b3f2-614bf51a3438 + VisualIds: + - 6189b50b-70fc-462b-93a9-3b787f6d6e85 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 53e8bd68-e31d-4a49-9533-3b086f2ff3e0 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_custom + DataSetIdentifier: elasticache_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: f9001ac4-eb80-46fd-b485-e99d9e9337be + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: cbe69215-5234-4fab-b3f2-614bf51a3438 + VisualIds: + - f16da1f8-cb46-4c20-9d7c-6c917e71b6c3 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 3141fb83-4e51-4211-9e2d-20452bf3d462 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_custom + DataSetIdentifier: elasticache_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 8d090111-fd41-41bf-99d3-86f823aef2ae + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: cbe69215-5234-4fab-b3f2-614bf51a3438 + VisualIds: + - dd4bbaee-d054-400a-b4bd-64f084ee3b01 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 36a45eb7-2056-4a26-ab24-0e62a479c765 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_custom + DataSetIdentifier: elasticache_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: bf33e834-063b-46a8-a641-611138e41fc9 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: cbe69215-5234-4fab-b3f2-614bf51a3438 + VisualIds: + - 4af41837-1c58-4049-8c8e-cdb4c5a2ebb8 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 63e6a709-92f8-4f6c-b8fb-ec2253657ee8 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Graviton + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 2052f092-96a5-40b5-9a34-fb8321028bcf + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - f2d6838c-dbb0-4974-979b-6c26d53fbfc8 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: a0317c4b-79c3-45b3-bc9c-0de894880e3e + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Graviton + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: f34d6f3b-d2e4-45ef-a8c6-2426998938ff + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - 68f6914a-b416-441d-abf2-1c1ed47c2dfc + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: c28c4538-3767-4a8d-a4de-29031a4e2ab8 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Graviton + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 0b7be1d0-323b-4c48-ba9d-77d81f18b0e9 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - 84bcb07a-f5b0-43c3-99c1-331b46bca82e + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 618bb662-15eb-43a5-b0e3-69311876cc47 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 75925da0-820d-4938-a762-06d915799cfc + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - 582a99cb-fb18-45e2-911b-dc9c38ca72d1 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: e2a37a21-77b3-42f9-9fd4-2171d24b6d03 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 2683870e-6ec8-477c-aabd-9c67a46a9e6c + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - dbcad183-c013-4f07-8e56-7592c13c43ab + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 53f8d25a-daeb-4ba9-bfcc-e8484418a342 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 0df1fe51-d84d-4768-b372-736c53bcd693 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - 40898747-84e8-4801-916f-3eb433a2db94 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: c1dfd977-311e-4409-92e3-eeb0d95ac620 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 4c4af238-8afc-44c5-953a-11a465f58b89 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - 35ac44e0-bc1a-4fb4-a32e-e4284ced8801 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: b12ca508-086c-46f4-ae14-1b778b5f9a03 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 7c681224-19ce-483d-9bad-cda42fc09c4e + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - d050e318-4f87-4cf4-a952-522d730756c6 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 8d37d804-a855-4437-afd2-7ff06389c895 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 4f1db205-3a29-4d96-ad36-5e1bbd4ea52b + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - 8679738c-994b-45aa-9c5d-b3fb4dce6b17 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 6378f60a-db5a-4867-971e-299d75b7bb7c + Filters: + - CategoryFilter: + Column: + ColumnName: engine + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + SelectAllOptions: FILTER_ALL_VALUES + FilterId: 7f09b114-ed39-454f-bb11-cfbfafa7da91 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - c2d17c7e-d72d-4492-977f-be7026b420bf + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: b8329ec2-d8ad-4155-9c8d-c7b5558cb226 + Filters: + - CategoryFilter: + Column: + ColumnName: graviton_eligibility + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Eligible + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: f63be849-b85a-458b-a12a-873382f063a3 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - c2d17c7e-d72d-4492-977f-be7026b420bf + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: c3fb2c26-3b1f-4724-85c1-e6f0c0634c27 + Filters: + - CategoryFilter: + Column: + ColumnName: pricing_term + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - OnDemand + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 50ef2ace-33ac-4f57-b7a9-b6430704dda9 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - c2d17c7e-d72d-4492-977f-be7026b420bf + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 9eb6bf86-b12a-4122-82fb-6626bdc96059 + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: 8ac6a6de-4335-40e9-9768-fc6488a21ba3 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - c2d17c7e-d72d-4492-977f-be7026b420bf + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 7c4e5eea-025c-493f-98a4-2613b95a362b + Filters: + - RelativeDatesFilter: + AnchorDateConfiguration: + AnchorOption: NOW + Column: + ColumnName: bill_billing_period_start_date + DataSetIdentifier: opensearch_graviton_dashboard + FilterId: fb64d76e-e952-46f0-9bee-a1feb634cbed + MinimumGranularity: DAY + NullOption: NON_NULLS_ONLY + RelativeDateType: PREVIOUS + TimeGranularity: MONTH + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - c2d17c7e-d72d-4492-977f-be7026b420bf + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 03e928ba-1dac-4e17-a6f6-b609e06fea08 + Filters: + - CategoryFilter: + Column: + ColumnName: engine + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + SelectAllOptions: FILTER_ALL_VALUES + FilterId: 7a3f1db7-679f-49d0-a399-227d1abdd4a9 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - bdb2fb83-edd1-47e5-a32e-65833ba9f737 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: e7beec0b-0fca-49b1-a489-1f1bdc00dd3c + Filters: + - CategoryFilter: + Column: + ColumnName: graviton_eligibility + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Requires Update + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: a01f9f2f-0ec0-4a07-8670-13910dd0a225 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - bdb2fb83-edd1-47e5-a32e-65833ba9f737 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: ccff88c0-2947-4d41-a817-11f432e1171e + Filters: + - CategoryFilter: + Column: + ColumnName: pricing_term + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - OnDemand + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: d13c8649-f58d-4a30-82e5-52e581d80c95 + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - bdb2fb83-edd1-47e5-a32e-65833ba9f737 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: 3c117c0a-c1a9-4cba-a7fd-45e5275166bd + Filters: + - CategoryFilter: + Column: + ColumnName: processor_type + DataSetIdentifier: opensearch_graviton_dashboard + Configuration: + FilterListConfiguration: + CategoryValues: + - Intel + MatchOperator: CONTAINS + NullOption: NON_NULLS_ONLY + FilterId: ea1d3c4f-c179-43d0-b9f1-e6cf03aa033e + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - bdb2fb83-edd1-47e5-a32e-65833ba9f737 + Status: ENABLED + - CrossDataset: SINGLE_DATASET + FilterGroupId: e05e2ebd-5f6b-4607-903a-4d2b6ed1c17c + Filters: + - RelativeDatesFilter: + AnchorDateConfiguration: + AnchorOption: NOW + Column: + ColumnName: bill_billing_period_start_date + DataSetIdentifier: opensearch_graviton_dashboard + FilterId: 38aef614-d505-4126-a1e8-4968e7d805ff + MinimumGranularity: DAY + NullOption: NON_NULLS_ONLY + RelativeDateType: PREVIOUS + TimeGranularity: MONTH + ScopeConfiguration: + SelectedSheets: + SheetVisualScopingConfigurations: + - Scope: SELECTED_VISUALS + SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a + VisualIds: + - bdb2fb83-edd1-47e5-a32e-65833ba9f737 + Status: ENABLED + Options: {} + ParameterDeclarations: + - DecimalParameterDeclaration: + DefaultValues: + StaticValues: + - 10.0 + Name: EC2EfficiencyGain + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: 'NULL' + - DecimalParameterDeclaration: + DefaultValues: + StaticValues: + - 10.0 + Name: RDSEfficiencyGain + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: 'NULL' + - DecimalParameterDeclaration: + DefaultValues: + StaticValues: + - 10.0 + Name: ElastiCacheEfficiencyGain + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: 'NULL' + - DecimalParameterDeclaration: + DefaultValues: + StaticValues: + - 10.0 + Name: OpenSearchEfficiencyGain + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: 'NULL' + - DecimalParameterDeclaration: + DefaultValues: + StaticValues: + - 100.0 + Name: TargetEC2GravitonCoverage + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: 'NULL' + - StringParameterDeclaration: + DefaultValues: {} + Name: LinkedAccount + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: + StaticValues: [] + Name: UnitCost + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: + StaticValues: + - Instance Type + Name: GroupDatabaseBy + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: PayerAccount + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: + StaticValues: [] + Name: Engine + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: + StaticValues: [] + Name: PurchaseOption + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: + StaticValues: [] + Name: EngineSelector + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: LinkedAccountName + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: AccountName + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: + DynamicValue: + DefaultValueColumn: + ColumnName: product_cache_engine + DataSetIdentifier: elasticache_graviton_dashboard + GroupNameColumn: + ColumnName: product_cache_engine + DataSetIdentifier: elasticache_graviton_dashboard + UserNameColumn: + ColumnName: product_cache_engine + DataSetIdentifier: elasticache_graviton_dashboard + StaticValues: [] + Name: ElasticacheEngine + ParameterValueType: SINGLE_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: InstanceType + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: Region + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: RDSRegions + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: RDSGravitonEligible + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: RDSDBEngine + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: RDSInstanceType + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: RDSDeploymentOption + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: RDSPricingTerm + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: RDSInstanceFamily + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: + DefaultValues: {} + Name: ElastiCacheRegion + ParameterValueType: MULTI_VALUED + ValueWhenUnset: + ValueWhenUnsetOption: RECOMMENDED_VALUE + - StringParameterDeclaration: DefaultValues: {} Name: ElastiCacheInstanceFamily ParameterValueType: MULTI_VALUED @@ -6983,66 +7488,66 @@ dashboards: ElementId: ec8b905c-ecc4-4b32-9448-775831404d2c ElementType: TEXT_BOX RowIndex: 98 - RowSpan: 1 + RowSpan: 2 - ColumnIndex: 0 ColumnSpan: 5 ElementId: 921d2cb8-cf57-4871-82bf-5c46d667237d ElementType: FILTER_CONTROL - RowIndex: 99 + RowIndex: 100 RowSpan: 2 - ColumnIndex: 5 ColumnSpan: 5 ElementId: 922f6b3e-f89a-42c3-856c-a573cfdf375b ElementType: FILTER_CONTROL - RowIndex: 99 + RowIndex: 100 RowSpan: 2 - ColumnIndex: 10 ColumnSpan: 5 ElementId: 855dee4e-7dc4-4848-a14f-ec068b355c89 ElementType: FILTER_CONTROL - RowIndex: 99 + RowIndex: 100 RowSpan: 2 - ColumnIndex: 15 ColumnSpan: 5 ElementId: 491013f7-56fd-4b04-b9b9-226ed215c53f ElementType: FILTER_CONTROL - RowIndex: 99 + RowIndex: 100 RowSpan: 2 - ColumnIndex: 20 ColumnSpan: 5 ElementId: ffde6b96-bf72-4979-b577-9c04fb5c1a89 ElementType: FILTER_CONTROL - RowIndex: 99 + RowIndex: 100 RowSpan: 2 - ColumnIndex: 25 ColumnSpan: 5 ElementId: a0799b74-5d6b-4630-a94c-28daa5b111aa ElementType: FILTER_CONTROL - RowIndex: 99 + RowIndex: 100 RowSpan: 2 - ColumnIndex: 30 ColumnSpan: 5 ElementId: b7ce7f74-deea-47ed-9cab-1b4b9f4adb04 ElementType: FILTER_CONTROL - RowIndex: 99 + RowIndex: 100 RowSpan: 2 - ColumnIndex: 0 ColumnSpan: 36 ElementId: 1ad4a970-7e4d-4931-aa0e-063005cd7aba ElementType: VISUAL - RowIndex: 101 + RowIndex: 102 RowSpan: 14 - ColumnIndex: 0 ColumnSpan: 18 ElementId: b93349e7-2fbe-4078-be50-964d8e3876f5 ElementType: TEXT_BOX - RowIndex: 115 + RowIndex: 116 RowSpan: 6 - ColumnIndex: 18 ColumnSpan: 18 ElementId: 1f5d30a5-2260-43de-b725-7cb892d9d880 ElementType: TEXT_BOX - RowIndex: 115 + RowIndex: 116 RowSpan: 6 Name: EC2 ParameterControls: @@ -9313,6 +9818,7 @@ dashboards: Visibility: VISIBLE DataLabels: Overlap: DISABLE_OVERLAP + TotalsVisibility: VISIBLE Visibility: VISIBLE FieldWells: BarChartAggregatedFieldWells: @@ -9816,7 +10322,7 @@ dashboards: DisplayMode: POSITIVE NullValueFormatConfiguration: NullString: 'null' - NumberScale: THOUSANDS + NumberScale: AUTO SeparatorConfiguration: DecimalSeparator: DOT ThousandsSeparator: @@ -9828,6 +10334,13 @@ dashboards: ColumnName: Realized Graviton Savings % DataSetIdentifier: ec2_graviton_dashboard FieldId: 18e7e6ef-e0ec-4117-84fc-342c40962336.12.1731037301436 + FormatConfiguration: + FormatConfiguration: + PercentageDisplayFormatConfiguration: + DecimalPlacesConfiguration: + DecimalPlaces: 0 + NullValueFormatConfiguration: + NullString: 'null' SortConfiguration: FieldSortOptions: [] TableOptions: @@ -10261,6 +10774,10 @@ dashboards: - DataPathList: - FieldId: d76c6ad6-0eab-4acb-b93b-9f33300a945a.region.6.1709750028429 FieldValue: region + Width: 112px + - DataPathList: + - FieldId: d76c6ad6-0eab-4acb-b93b-9f33300a945a.normalized_usage_quantity.7.1709750035355 + FieldValue: normalized_usage_quantity Width: 102px - DataPathList: - FieldId: d76c6ad6-0eab-4acb-b93b-9f33300a945a.product_instance_type_family.2.1709750001887 @@ -10282,10 +10799,6 @@ dashboards: - FieldId: 30a1836d-deb7-4883-820a-0acb671b8a45.graviton_price.14.1726036560271 FieldValue: graviton_price Width: 89px - - DataPathList: - - FieldId: d76c6ad6-0eab-4acb-b93b-9f33300a945a.normalized_usage_quantity.7.1709750035355 - FieldValue: normalized_usage_quantity - Width: 87px SelectedFieldOptions: - CustomLabel: Account Name FieldId: 47626e9f-53d0-42ba-b193-a1a463746fca.account_name.10.1710859804154 @@ -10509,6 +11022,8 @@ dashboards: FormatConfiguration: FormatConfiguration: PercentageDisplayFormatConfiguration: + DecimalPlacesConfiguration: + DecimalPlaces: 0 NegativeValueConfiguration: DisplayMode: NEGATIVE NullValueFormatConfiguration: @@ -13761,6 +14276,9 @@ dashboards: - CustomLabel: Account Name FieldId: 3a626a64-21c8-4be1-8cd4-45a86fcd240d.account_name.10.1710858880835 Visibility: VISIBLE + - CustomLabel: Payer ID + FieldId: bb1be3db-3e61-4cf5-b074-24e95303a13b.bill_payer_account_id.20.1731699635528 + Visibility: VISIBLE - CustomLabel: Linked Account ID FieldId: 530d2655-2282-4e72-b694-dbbd85392931.account_id.19.1726779849494 Visibility: VISIBLE @@ -13827,6 +14345,11 @@ dashboards: ColumnName: account_name DataSetIdentifier: rds_graviton_dashboard FieldId: 3a626a64-21c8-4be1-8cd4-45a86fcd240d.account_name.10.1710858880835 + - CategoricalDimensionField: + Column: + ColumnName: bill_payer_account_id + DataSetIdentifier: rds_graviton_dashboard + FieldId: bb1be3db-3e61-4cf5-b074-24e95303a13b.bill_payer_account_id.20.1731699635528 - CategoricalDimensionField: Column: ColumnName: account_id @@ -16611,6 +17134,10 @@ dashboards: - FieldId: 07b00d3c-1514-4700-a4dc-3c466f317e67.graviton_instance.12.1725940637186 FieldValue: graviton_instance Width: 120px + - DataPathList: + - FieldId: 07b00d3c-1514-4700-a4dc-3c466f317e67.graviton_savings.14.1726458151424 + FieldValue: graviton_savings + Width: 118px - DataPathList: - FieldId: 79a39270-88a1-45be-9ae6-a3e39c6d4bde.line_item_usage_account_id.4.1695327092350 FieldValue: line_item_usage_account_id @@ -17377,19 +17904,25 @@ dashboards: RowIndex: 53 RowSpan: 2 - ColumnIndex: 0 - ColumnSpan: 12 + ColumnSpan: 10 ElementId: 582a99cb-fb18-45e2-911b-dc9c38ca72d1 ElementType: VISUAL RowIndex: 55 RowSpan: 5 - - ColumnIndex: 12 - ColumnSpan: 12 - ElementId: 0a72f59c-d4a7-456a-b79d-84b3e9dd0d58 + - ColumnIndex: 10 + ColumnSpan: 9 + ElementId: c2d17c7e-d72d-4492-977f-be7026b420bf ElementType: VISUAL RowIndex: 55 RowSpan: 5 - - ColumnIndex: 24 - ColumnSpan: 12 + - ColumnIndex: 19 + ColumnSpan: 9 + ElementId: bdb2fb83-edd1-47e5-a32e-65833ba9f737 + ElementType: VISUAL + RowIndex: 55 + RowSpan: 5 + - ColumnIndex: 28 + ColumnSpan: 8 ElementId: fe498f81-3244-4385-8094-ef1e213346c4 ElementType: VISUAL RowIndex: 55 @@ -17425,24 +17958,18 @@ dashboards: RowIndex: 76 RowSpan: 9 - ColumnIndex: 0 - ColumnSpan: 11 + ColumnSpan: 13 ElementId: cde60a3b-b35f-41b7-acf3-c173af1af875 ElementType: TEXT_BOX RowIndex: 85 RowSpan: 2 - - ColumnIndex: 11 + - ColumnIndex: 13 ColumnSpan: 8 ElementId: b20f0523-94ab-4a34-8f46-22fdef5ee615 ElementType: PARAMETER_CONTROL RowIndex: 85 RowSpan: 2 - - ColumnIndex: 19 - ColumnSpan: 9 - ElementId: 0274ebbf-511c-4caf-8d05-bc20412cbee6 - ElementType: PARAMETER_CONTROL - RowIndex: 85 - RowSpan: 2 - - ColumnIndex: 28 + - ColumnIndex: 21 ColumnSpan: 8 ElementId: e16dd599-e535-4371-89a2-165b37ce2553 ElementType: PARAMETER_CONTROL @@ -17453,18 +17980,18 @@ dashboards: ElementId: dbcad183-c013-4f07-8e56-7592c13c43ab ElementType: VISUAL RowIndex: 87 - RowSpan: 18 + RowSpan: 13 - ColumnIndex: 0 ColumnSpan: 17 ElementId: dda659f2-97c3-4457-9583-2594b981eff7 ElementType: TEXT_BOX - RowIndex: 105 + RowIndex: 100 RowSpan: 7 - ColumnIndex: 17 ColumnSpan: 19 ElementId: 2e92ff4a-f144-432b-ac93-d0ea05da26df ElementType: TEXT_BOX - RowIndex: 105 + RowIndex: 100 RowSpan: 7 Name: OpenSearch ParameterControls: @@ -17495,10 +18022,6 @@ dashboards: ColumnName: engine DataSetIdentifier: opensearch_graviton_dashboard SourceSheetControlId: e16dd599-e535-4371-89a2-165b37ce2553 - - ColumnToMatch: - ColumnName: processor_type - DataSetIdentifier: opensearch_graviton_dashboard - SourceSheetControlId: 0274ebbf-511c-4caf-8d05-bc20412cbee6 DisplayOptions: InfoIconLabelOptions: Visibility: HIDDEN @@ -17544,10 +18067,6 @@ dashboards: ColumnName: engine DataSetIdentifier: opensearch_graviton_dashboard SourceSheetControlId: e16dd599-e535-4371-89a2-165b37ce2553 - - ColumnToMatch: - ColumnName: processor_type - DataSetIdentifier: opensearch_graviton_dashboard - SourceSheetControlId: 0274ebbf-511c-4caf-8d05-bc20412cbee6 DisplayOptions: InfoIconLabelOptions: Visibility: HIDDEN @@ -17593,10 +18112,6 @@ dashboards: ColumnName: engine DataSetIdentifier: opensearch_graviton_dashboard SourceSheetControlId: e16dd599-e535-4371-89a2-165b37ce2553 - - ColumnToMatch: - ColumnName: processor_type - DataSetIdentifier: opensearch_graviton_dashboard - SourceSheetControlId: 0274ebbf-511c-4caf-8d05-bc20412cbee6 DisplayOptions: InfoIconLabelOptions: Visibility: HIDDEN @@ -17641,11 +18156,7 @@ dashboards: - ColumnToMatch: ColumnName: engine DataSetIdentifier: opensearch_graviton_dashboard - SourceSheetControlId: e16dd599-e535-4371-89a2-165b37ce2553 - - ColumnToMatch: - ColumnName: processor_type - DataSetIdentifier: opensearch_graviton_dashboard - SourceSheetControlId: 0274ebbf-511c-4caf-8d05-bc20412cbee6 + SourceSheetControlId: e16dd599-e535-4371-89a2-165b37ce2553 DisplayOptions: InfoIconLabelOptions: Visibility: HIDDEN @@ -17691,10 +18202,6 @@ dashboards: ColumnName: engine DataSetIdentifier: opensearch_graviton_dashboard SourceSheetControlId: e16dd599-e535-4371-89a2-165b37ce2553 - - ColumnToMatch: - ColumnName: processor_type - DataSetIdentifier: opensearch_graviton_dashboard - SourceSheetControlId: 0274ebbf-511c-4caf-8d05-bc20412cbee6 DisplayOptions: InfoIconLabelOptions: Visibility: HIDDEN @@ -17749,25 +18256,6 @@ dashboards: SourceParameterName: OpenSearchEngine Title: Engine Type: MULTI_SELECT - - Dropdown: - DisplayOptions: - InfoIconLabelOptions: - Visibility: HIDDEN - SelectAllOptions: - Visibility: VISIBLE - TitleOptions: - FontConfiguration: - FontSize: - Relative: MEDIUM - Visibility: VISIBLE - ParameterControlId: 0274ebbf-511c-4caf-8d05-bc20412cbee6 - SelectableValues: - LinkToDataSetColumn: - ColumnName: processor_type - DataSetIdentifier: opensearch_graviton_dashboard - SourceParameterName: OpenSearchProcessor - Title: Processor Type - Type: MULTI_SELECT SheetId: 43d3c206-77a5-4997-980c-90be244e7f2a TextBoxes: - Content: |- @@ -17867,6 +18355,90 @@ dashboards: \ OpenSearch Graviton Opportunity\n \n \n" SheetTextBoxId: cf310330-aaa1-4981-99ec-c16500e1784a Visuals: + - KPIVisual: + Actions: [] + ChartConfiguration: + FieldWells: + TargetValues: [] + TrendGroups: [] + Values: + - CategoricalMeasureField: + AggregationFunction: DISTINCT_COUNT + Column: + ColumnName: version + DataSetIdentifier: opensearch_graviton_dashboard + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.version.0.1731701331949 + KPIOptions: + Comparison: + ComparisonMethod: PERCENT_DIFFERENCE + PrimaryValueDisplayType: ACTUAL + SecondaryValueFontConfiguration: + FontSize: + Relative: EXTRA_LARGE + Sparkline: + Type: AREA + Visibility: VISIBLE + VisualLayoutOptions: + StandardLayout: + Type: VERTICAL + SortConfiguration: {} + ColumnHierarchies: [] + Subtitle: + FormatText: + RichText: Previous Month - On Demand + Visibility: VISIBLE + Title: + FormatText: + RichText: |- + + + Requires Update by Engine Version + + + Visibility: VISIBLE + VisualId: bdb2fb83-edd1-47e5-a32e-65833ba9f737 + - KPIVisual: + Actions: [] + ChartConfiguration: + FieldWells: + TargetValues: [] + TrendGroups: [] + Values: + - CategoricalMeasureField: + AggregationFunction: DISTINCT_COUNT + Column: + ColumnName: version + DataSetIdentifier: opensearch_graviton_dashboard + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.version.0.1731701288965 + KPIOptions: + Comparison: + ComparisonMethod: PERCENT_DIFFERENCE + PrimaryValueDisplayType: ACTUAL + SecondaryValueFontConfiguration: + FontSize: + Relative: EXTRA_LARGE + Sparkline: + Type: AREA + Visibility: VISIBLE + VisualLayoutOptions: + StandardLayout: + Type: VERTICAL + SortConfiguration: {} + ColumnHierarchies: [] + Subtitle: + FormatText: + RichText: Previous Month - On Demand + Visibility: VISIBLE + Title: + FormatText: + RichText: |- + + + Eligible by Engine Version + + + Visibility: VISIBLE + VisualId: c2d17c7e-d72d-4492-977f-be7026b420bf - BarChartVisual: Actions: [] ChartConfiguration: @@ -18654,46 +19226,6 @@ dashboards: Visibility: VISIBLE VisualId: 582a99cb-fb18-45e2-911b-dc9c38ca72d1 - - KPIVisual: - Actions: [] - ChartConfiguration: - FieldWells: - TargetValues: [] - TrendGroups: [] - Values: - - CategoricalMeasureField: - AggregationFunction: DISTINCT_COUNT - Column: - ColumnName: line_item_resource_id - DataSetIdentifier: opensearch_graviton_dashboard - FieldId: 21ab4447-1069-4fa1-86b2-81eb3f0563ea.line_item_resource_id.0.1696601729333 - KPIOptions: - Comparison: - ComparisonMethod: PERCENT_DIFFERENCE - PrimaryValueDisplayType: ACTUAL - PrimaryValueFontConfiguration: - FontColor: '#DFE3E4' - SecondaryValueFontConfiguration: - FontSize: - Relative: EXTRA_LARGE - Sparkline: - Type: AREA - Visibility: VISIBLE - VisualLayoutOptions: - StandardLayout: - Type: VERTICAL - SortConfiguration: {} - ColumnHierarchies: [] - Subtitle: - FormatText: - RichText: Previous Month - Visibility: VISIBLE - Title: - FormatText: - RichText: "\n \n Require\ - \ Version Update\_\n \n" - Visibility: VISIBLE - VisualId: 0a72f59c-d4a7-456a-b79d-84b3e9dd0d58 - KPIVisual: Actions: [] ChartConfiguration: @@ -18802,6 +19334,7 @@ dashboards: FieldId: 21ab4447-1069-4fa1-86b2-81eb3f0563ea.generation.0.1695330568607 LineValues: [] Legend: + Position: AUTO Title: Visibility: HIDDEN LineDataLabels: @@ -18883,6 +19416,7 @@ dashboards: FontSize: Relative: MEDIUM Overlap: ENABLE_OVERLAP + TotalsVisibility: VISIBLE Visibility: VISIBLE FieldWells: BarChartAggregatedFieldWells: @@ -19579,6 +20113,10 @@ dashboards: ChartConfiguration: FieldOptions: DataPathOptions: + - DataPathList: + - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.graviton_instance.5.1726471581017 + FieldValue: graviton_instance + Width: 149px - DataPathList: - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.graviton_savings.1.1726471466503 FieldValue: graviton_savings @@ -19588,9 +20126,13 @@ dashboards: FieldValue: line_item_resource_id Width: 135px - DataPathList: - - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.engine.10.1726471823268 - FieldValue: engine - Width: 124px + - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.graviton_eligibility.4.1726471574355 + FieldValue: graviton_eligibility + Width: 133px + - DataPathList: + - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.version.13.1726472130660 + FieldValue: version + Width: 125px - DataPathList: - FieldId: f99cbee2-9f2b-407b-a890-fa912abcb2ac.6.1726471586598 FieldValue: Total_Amortized_Cost @@ -19600,21 +20142,21 @@ dashboards: FieldValue: pricing_term Width: 110px - DataPathList: - - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.graviton_eligibility.4.1726471574355 - FieldValue: graviton_eligibility - Width: 103px + - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.engine.10.1726471823268 + FieldValue: engine + Width: 102px + - DataPathList: + - FieldId: d4aae438-6594-49c7-a9a3-457cb9abd75f.account_name.0.1726471466503 + FieldValue: account_name + Width: 101px - DataPathList: - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.product_location.14.1726472763595 FieldValue: product_location - Width: 103px - - DataPathList: - - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.processor_type.12.1726472057544 - FieldValue: processor_type - Width: 101px + Width: 91px - DataPathList: - - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.version.13.1726472130660 - FieldValue: version - Width: 68px + - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.line_item_usage_amount.14.1731694549708 + FieldValue: line_item_usage_amount + Width: 65px SelectedFieldOptions: - CustomLabel: Account Name FieldId: d4aae438-6594-49c7-a9a3-457cb9abd75f.account_name.0.1726471466503 @@ -19622,14 +20164,8 @@ dashboards: - CustomLabel: Management Payer ID FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.bill_payer_account_id.2.1726471477590 Visibility: VISIBLE - - CustomLabel: Processor - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.processor_type.12.1726472057544 - Visibility: VISIBLE - - CustomLabel: Resource ID - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.line_item_resource_id.3.1726471568430 - Visibility: VISIBLE - - CustomLabel: Current Instance Type - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.product_instance_type.9.1726471814975 + - CustomLabel: Region + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.product_location.14.1726472763595 Visibility: VISIBLE - CustomLabel: Current Engine FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.engine.10.1726471823268 @@ -19637,19 +20173,26 @@ dashboards: - CustomLabel: Current Engine Version FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.version.13.1726472130660 Visibility: VISIBLE - - CustomLabel: Region - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.product_location.14.1726472763595 + - CustomLabel: Resource ID + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.line_item_resource_id.3.1726471568430 Visibility: VISIBLE - - CustomLabel: Elibility - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.graviton_eligibility.4.1726471574355 + - CustomLabel: Current Instance Type + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.product_instance_type.9.1726471814975 Visibility: VISIBLE - - CustomLabel: Graviton Instance + - CustomLabel: Compared Graviton Instance FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.graviton_instance.5.1726471581017 Visibility: VISIBLE - CustomLabel: Pricing Term FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.pricing_term.15.1726472884778 Visibility: VISIBLE - - FieldId: cdbfa1bc-b652-4351-8125-128dfe31d867.15.1731087061202 + - CustomLabel: Graviton Eligibility + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.graviton_eligibility.4.1726471574355 + Visibility: VISIBLE + - CustomLabel: Usage + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.line_item_usage_amount.14.1731694549708 + Visibility: VISIBLE + - CustomLabel: Unit Cost + FieldId: cdbfa1bc-b652-4351-8125-128dfe31d867.15.1731087061202 Visibility: VISIBLE - CustomLabel: Amortized Cost FieldId: f99cbee2-9f2b-407b-a890-fa912abcb2ac.6.1726471586598 @@ -19676,19 +20219,9 @@ dashboards: FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.bill_payer_account_id.2.1726471477590 - CategoricalDimensionField: Column: - ColumnName: processor_type - DataSetIdentifier: opensearch_graviton_dashboard - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.processor_type.12.1726472057544 - - CategoricalDimensionField: - Column: - ColumnName: line_item_resource_id - DataSetIdentifier: opensearch_graviton_dashboard - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.line_item_resource_id.3.1726471568430 - - CategoricalDimensionField: - Column: - ColumnName: product_instance_type + ColumnName: product_location DataSetIdentifier: opensearch_graviton_dashboard - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.product_instance_type.9.1726471814975 + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.product_location.14.1726472763595 - CategoricalDimensionField: Column: ColumnName: engine @@ -19701,14 +20234,14 @@ dashboards: FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.version.13.1726472130660 - CategoricalDimensionField: Column: - ColumnName: product_location + ColumnName: line_item_resource_id DataSetIdentifier: opensearch_graviton_dashboard - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.product_location.14.1726472763595 + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.line_item_resource_id.3.1726471568430 - CategoricalDimensionField: Column: - ColumnName: graviton_eligibility + ColumnName: product_instance_type DataSetIdentifier: opensearch_graviton_dashboard - FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.graviton_eligibility.4.1726471574355 + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.product_instance_type.9.1726471814975 - CategoricalDimensionField: Column: ColumnName: graviton_instance @@ -19719,12 +20252,51 @@ dashboards: ColumnName: pricing_term DataSetIdentifier: opensearch_graviton_dashboard FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.pricing_term.15.1726472884778 + - CategoricalDimensionField: + Column: + ColumnName: graviton_eligibility + DataSetIdentifier: opensearch_graviton_dashboard + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.graviton_eligibility.4.1726471574355 Values: + - NumericalMeasureField: + AggregationFunction: + SimpleNumericalAggregation: SUM + Column: + ColumnName: line_item_usage_amount + DataSetIdentifier: opensearch_graviton_dashboard + FieldId: 6f1fc28d-3742-4f40-a60e-9f13b33b4f53.line_item_usage_amount.14.1731694549708 + FormatConfiguration: + FormatConfiguration: + NumberDisplayFormatConfiguration: + NegativeValueConfiguration: + DisplayMode: NEGATIVE + NullValueFormatConfiguration: + NullString: 'null' + SeparatorConfiguration: + DecimalSeparator: DOT + ThousandsSeparator: + Symbol: COMMA + Visibility: VISIBLE - NumericalMeasureField: Column: ColumnName: Unit Cost DataSetIdentifier: opensearch_graviton_dashboard FieldId: cdbfa1bc-b652-4351-8125-128dfe31d867.15.1731087061202 + FormatConfiguration: + FormatConfiguration: + CurrencyDisplayFormatConfiguration: + DecimalPlacesConfiguration: + DecimalPlaces: 2 + NegativeValueConfiguration: + DisplayMode: POSITIVE + NullValueFormatConfiguration: + NullString: 'null' + SeparatorConfiguration: + DecimalSeparator: DOT + ThousandsSeparator: + Symbol: COMMA + Visibility: VISIBLE + Symbol: USD - NumericalMeasureField: AggregationFunction: SimpleNumericalAggregation: SUM @@ -20073,7 +20645,7 @@ dashboards: - Content: "\n \n \n \n Graviton Savings Dashboard\n\ \ \n \n \n
\n \n\ - \ \n v2.0.0\n \n \n\ + \ \n v2.1.0\n \n \n\ \
\n \n
\n \n\ \
\n \n
\n \n\ \
\n \n
\n Built\ @@ -20745,7 +21317,15 @@ datasets: views: graviton_opensearch_view: dependsOn: - cur: true + cur2: + - line_item_normalized_usage_amount + - product['instance_type'] + - product['location'] + - pricing_term + - pricing_lease_contract_length + - pricing_offering_class + - pricing_purchase_option + - product['vcpu'] views: - modernization_mapping parameters: @@ -20757,48 +21337,48 @@ views: CREATE OR REPLACE VIEW graviton_opensearch_view AS WITH cur_data AS ( - SELECT - cur.bill_payer_account_id - , cur.line_item_usage_account_id - , DATE_FORMAT(cur.bill_billing_period_start_date, '%Y-%m-%d') bill_billing_period_start_date - , SPLIT_PART(cur.line_item_resource_id, '/', 2) line_item_resource_id - , cur.product_instance_type - , SPLIT_PART(product_instance_type, '.', 1) instance_family - , (CASE WHEN (SPLIT_PART(product_instance_type, '.', 1) LIKE '%g%') THEN 'Graviton' ELSE 'Intel' END) processor_type - , cur.product_location - , cur.pricing_term - , cur.pricing_lease_contract_length - , cur.pricing_offering_class - , cur.pricing_purchase_option - , SUM((CASE WHEN (cur.line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN cur.line_item_usage_amount WHEN (cur.line_item_line_item_type = 'DiscountedUsage') THEN cur.line_item_usage_amount WHEN (cur.line_item_line_item_type = 'Usage') THEN cur.line_item_usage_amount ELSE 0 END)) line_item_usage_amount - , (SUM((CASE WHEN (cur.line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN cur.line_item_usage_amount WHEN (cur.line_item_line_item_type = 'DiscountedUsage') THEN cur.line_item_usage_amount WHEN (cur.line_item_line_item_type = 'Usage') THEN cur.line_item_usage_amount ELSE 0 END)) * CAST(product_vcpu AS double)) line_item_vcpu_normalized_usage_amount - , SUM(line_item_unblended_cost) line_item_unblended_cost - , SUM((CASE WHEN (cur.line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN cur.savings_plan_savings_plan_effective_cost WHEN (cur.line_item_line_item_type = 'SavingsPlanRecurringFee') THEN (cur.savings_plan_total_commitment_to_date - cur.savings_plan_used_commitment) WHEN (cur.line_item_line_item_type = 'SavingsPlanNegation') THEN 0 WHEN (cur.line_item_line_item_type = 'SavingsPlanUpfrontFee') THEN 0 WHEN (cur.line_item_line_item_type = 'DiscountedUsage') THEN cur.reservation_effective_cost WHEN (cur.line_item_line_item_type = 'RIFee') THEN (cur.reservation_unused_amortized_upfront_fee_for_billing_period + cur.reservation_unused_recurring_fee) WHEN ((cur.line_item_line_item_type = 'Fee') AND (cur.reservation_reservation_a_r_n <> '')) THEN 0 ELSE cur.line_item_unblended_cost END)) amortized_cost - , modernization_mapping.generation - , (CASE WHEN (modernization_mapping.latest_arm <> '') THEN CONCAT(modernization_mapping.latest_arm, '.', SPLIT_PART(cur.product_instance_type, '.', 2), '.search') ELSE '' END) graviton_instance - , (CASE WHEN (modernization_mapping.previous_intel <> '') THEN CONCAT(modernization_mapping.previous_intel, '.', SPLIT_PART(cur.product_instance_type, '.', 2), '.search') ELSE '' END) previous_intel_instance - FROM - (${cur_table_name} cur - LEFT JOIN modernization_mapping ON (CONCAT(SPLIT_PART(cur.product_instance_type, '.', 1), '.search') = modernization_mapping.family)) - WHERE ((cur.product_product_name IN ('Amazon Elasticsearch Service', 'Amazon OpenSearch Service')) AND (cur.line_item_product_code = 'AmazonES') AND (cur.line_item_line_item_type IN ('DiscountedUsage', 'Usage', 'SavingsPlanCoveredUsage')) AND (cur.product_product_family = 'Amazon OpenSearch Service Instance') AND (("bill_billing_period_start_date" >= ("date_trunc"('month', current_timestamp) - INTERVAL '7' MONTH)) AND (CAST("concat"("year", '-', "month", '-01') AS date) >= ("date_trunc"('month', current_date) - INTERVAL '7' MONTH)))) - GROUP BY cur.bill_payer_account_id, cur.line_item_usage_account_id, DATE_FORMAT(cur.bill_billing_period_start_date, '%Y-%m-%d'), DATE_FORMAT(cur.line_item_usage_start_date, '%Y-%m-%d'), SPLIT_PART(cur.line_item_resource_id, '/', 2), cur.product_instance_type, cur.product_location, cur.pricing_term, cur.pricing_lease_contract_length, cur.pricing_offering_class, cur.pricing_purchase_option, modernization_mapping.generation, cur.product_vcpu, 18, 19 - ) + SELECT + cur.bill_payer_account_id + , cur.line_item_usage_account_id + , DATE_FORMAT(cur.bill_billing_period_start_date, '%Y-%m-%d') bill_billing_period_start_date + , SPLIT_PART(cur.line_item_resource_id, '/', 2) line_item_resource_id + , cur.product_instance_type + , SPLIT_PART(product_instance_type, '.', 1) instance_family + , (CASE WHEN (SPLIT_PART(product_instance_type, '.', 1) LIKE '%g%') THEN 'Graviton' ELSE 'Intel' END) processor_type + , cur.product_location + , cur.pricing_term + , coalesce(cur.pricing_lease_contract_length,'') pricing_lease_contract_length + , coalesce(cur.pricing_offering_class,'') pricing_offering_class + , coalesce(cur.pricing_purchase_option,'') pricing_purchase_option + , SUM((CASE WHEN (cur.line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN cur.line_item_usage_amount WHEN (cur.line_item_line_item_type = 'DiscountedUsage') THEN cur.line_item_usage_amount WHEN (cur.line_item_line_item_type = 'Usage') THEN cur.line_item_usage_amount ELSE 0 END)) line_item_usage_amount + , (SUM((CASE WHEN (cur.line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN cur.line_item_usage_amount WHEN (cur.line_item_line_item_type = 'DiscountedUsage') THEN cur.line_item_usage_amount WHEN (cur.line_item_line_item_type = 'Usage') THEN cur.line_item_usage_amount ELSE 0 END)) * CAST(product['vcpu'] AS double)) line_item_vcpu_normalized_usage_amount + , SUM(line_item_unblended_cost) line_item_unblended_cost + , SUM((CASE WHEN (cur.line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN cur.savings_plan_savings_plan_effective_cost WHEN (cur.line_item_line_item_type = 'SavingsPlanRecurringFee') THEN (cur.savings_plan_total_commitment_to_date - cur.savings_plan_used_commitment) WHEN (cur.line_item_line_item_type = 'SavingsPlanNegation') THEN 0 WHEN (cur.line_item_line_item_type = 'SavingsPlanUpfrontFee') THEN 0 WHEN (cur.line_item_line_item_type = 'DiscountedUsage') THEN cur.reservation_effective_cost WHEN (cur.line_item_line_item_type = 'RIFee') THEN (cur.reservation_unused_amortized_upfront_fee_for_billing_period + cur.reservation_unused_recurring_fee) WHEN ((cur.line_item_line_item_type = 'Fee') AND (cur.reservation_reservation_a_r_n <> '')) THEN 0 ELSE cur.line_item_unblended_cost END)) amortized_cost + , modernization_mapping.generation + , (CASE WHEN (modernization_mapping.latest_arm <> '') THEN CONCAT(modernization_mapping.latest_arm, '.', SPLIT_PART(cur.product_instance_type, '.', 2), '.search') ELSE '' END) graviton_instance + , (CASE WHEN (modernization_mapping.previous_intel <> '') THEN CONCAT(modernization_mapping.previous_intel, '.', SPLIT_PART(cur.product_instance_type, '.', 2), '.search') ELSE '' END) previous_intel_instance + FROM + ( "${cur2_database}"."${cur2_table_name}" cur + LEFT JOIN modernization_mapping ON (CONCAT(SPLIT_PART(cur.product_instance_type, '.', 1), '.search') = modernization_mapping.family)) + WHERE ((cur.product['product_name'] IN ('Amazon Elasticsearch Service', 'Amazon OpenSearch Service')) AND (cur.line_item_product_code = 'AmazonES') AND (cur.line_item_line_item_type IN ('DiscountedUsage', 'Usage', 'SavingsPlanCoveredUsage')) AND (cur.product_product_family = 'Amazon OpenSearch Service Instance') AND (("bill_billing_period_start_date" >= ("date_trunc"('month', current_timestamp) - INTERVAL '7' MONTH)) AND (CAST(concat(split_part("billing_period", '-', 1), '-', split_part("billing_period", '-', 2), '-01') AS date) >= ("date_trunc"('month', current_date) - INTERVAL '7' MONTH)))) + GROUP BY cur.bill_payer_account_id, cur.line_item_usage_account_id, DATE_FORMAT(cur.bill_billing_period_start_date, '%Y-%m-%d'), DATE_FORMAT(cur.line_item_usage_start_date, '%Y-%m-%d'), SPLIT_PART(cur.line_item_resource_id, '/', 2), cur.product_instance_type, cur.product_location, cur.pricing_term, cur.pricing_lease_contract_length, cur.pricing_offering_class, cur.pricing_purchase_option, modernization_mapping.generation, cur.product['vcpu'], 18, 19 + ) , describe_domains AS ( - SELECT DISTINCT - domainname - , engineversion - , SPLIT_PART(engineversion, '_', 1) engine - , SPLIT_PART(engineversion, '_', 2) version - , SPLIT_PART(SPLIT_PART(engineversion, '_', 2), '.', 1) major - , SPLIT_PART(SPLIT_PART(engineversion, '_', 2), '.', 2) minor - FROM - ${data_collection_database_name}.inventory_opensearch_domains_data + SELECT DISTINCT + domainname + , engineversion + , SPLIT_PART(engineversion, '_', 1) engine + , SPLIT_PART(engineversion, '_', 2) version + , SPLIT_PART(SPLIT_PART(engineversion, '_', 2), '.', 1) major + , SPLIT_PART(SPLIT_PART(engineversion, '_', 2), '.', 2) minor + FROM + ${data_collection_database_name}.inventory_opensearch_domains_data ) , pricing AS ( - SELECT * - FROM - ${data_collection_database_name}.pricing_opensearch_data - WHERE (("instance type" <> '') AND (operation = 'ESDomain') AND (unit = 'Hrs')) + SELECT * + FROM + ${data_collection_database_name}.pricing_opensearch_data + WHERE (("instance type" <> '') AND (operation = 'ESDomain') AND (unit = 'Hrs')) ) SELECT cur.* @@ -20816,7 +21396,12 @@ views: LEFT JOIN pricing PL2 ON ((PL2."instance type" = cur.previous_intel_instance) AND (PL2.location = cur.product_location) AND (PL2.termtype = cur.pricing_term) AND (PL2.leasecontractlength = cur.pricing_lease_contract_length) AND (PL2.purchaseoption = cur.pricing_purchase_option) AND (PL2.offeringclass = cur.pricing_offering_class))) graviton_elasticache_view: dependsOn: - cur: true + cur2: + - line_item_normalized_usage_amount + - product_location + - pricing_offering_class + - pricing_lease_contract_length + - product['cache_engine'] views: - modernization_mapping parameters: @@ -20828,33 +21413,33 @@ views: CREATE OR REPLACE VIEW graviton_elasticache_view AS WITH elasticache_spend AS ( - SELECT - bill_payer_account_id - , line_item_usage_account_id - , DATE_FORMAT(line_item_usage_start_date, '%Y-%m') month_line_item_usage_start_date - , SPLIT_PART(line_item_resource_id, ':', 7) split_line_item_resource_id - , SPLIT_PART(line_item_usage_type, ':', 2) split_line_item_usage_type - , product_location - , product_cache_engine - , (CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN 'Reserved Instance' WHEN (line_item_line_item_type = 'Usage') THEN 'OnDemand' ELSE 'Others' END) case_purchase_option - , pricing_lease_contract_length - , pricing_offering_class - , pricing_purchase_option - , SUM((CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN line_item_usage_amount WHEN (line_item_line_item_type = 'Usage') THEN line_item_usage_amount ELSE 0 END)) sum_line_item_usage_amount - , SUM(line_item_unblended_cost) sum_line_item_unblended_cost - , SUM((CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN reservation_effective_cost WHEN (line_item_line_item_type = 'RIFee') THEN (reservation_unused_amortized_upfront_fee_for_billing_period + reservation_unused_recurring_fee) WHEN ((line_item_line_item_type = 'Fee') AND (reservation_reservation_a_r_n <> '')) THEN 0 ELSE line_item_unblended_cost END)) sum_amortized_cost - , SUM((CASE WHEN (line_item_line_item_type = 'RIFee') THEN -(reservation_amortized_upfront_fee_for_billing_period) ELSE 0 END)) sum_ri_trueup - , SUM((CASE WHEN ((line_item_line_item_type = 'Fee') AND (reservation_reservation_a_r_n <> '')) THEN line_item_unblended_cost ELSE 0 END)) ri_upfront_fees - , modernization_mapping.generation - , modernization_mapping.latest_arm graviton_family - , modernization_mapping.previous_intel previous_intel_family - , (CASE WHEN (modernization_mapping.latest_arm <> '') THEN CONCAT(modernization_mapping.latest_arm, '.', SPLIT_PART(line_item_usage_type, '.', 3)) ELSE '' END) graviton_instance - , (CASE WHEN (modernization_mapping.previous_intel <> '') THEN CONCAT(modernization_mapping.previous_intel, '.', SPLIT_PART(line_item_usage_type, '.', 3)) ELSE '' END) previous_intel - FROM - (${cur_table_name} - LEFT JOIN modernization_mapping ON (CONCAT('cache.', SPLIT_PART(line_item_usage_type, '.', 2)) = modernization_mapping.family)) - WHERE ((product_product_name = 'Amazon ElastiCache') AND (product_product_family = 'Cache Instance') AND (line_item_line_item_type IN ('DiscountedUsage', 'Usage', 'RIFee', 'Fee')) AND (("bill_billing_period_start_date" >= ("date_trunc"('month', current_timestamp) - INTERVAL '7' MONTH)) AND (CAST("concat"("year", '-', "month", '-01') AS date) >= ("date_trunc"('month', current_date) - INTERVAL '7' MONTH)))) - GROUP BY DATE_FORMAT(line_item_usage_start_date, '%Y-%m'), bill_payer_account_id, line_item_usage_account_id, line_item_line_item_type, line_item_resource_id, line_item_usage_type, product_location, product_cache_engine, pricing_lease_contract_length, pricing_offering_class, pricing_purchase_option, modernization_mapping.generation, modernization_mapping.latest_arm, modernization_mapping.previous_intel + SELECT + bill_payer_account_id + , line_item_usage_account_id + , DATE_FORMAT(line_item_usage_start_date, '%Y-%m') month_line_item_usage_start_date + , SPLIT_PART(line_item_resource_id, ':', 7) split_line_item_resource_id + , SPLIT_PART(line_item_usage_type, ':', 2) split_line_item_usage_type + , product_location + , product['cache_engine'] product_cache_engine + , (CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN 'Reserved Instance' WHEN (line_item_line_item_type = 'Usage') THEN 'OnDemand' ELSE 'Others' END) case_purchase_option + , coalesce(pricing_lease_contract_length,'') pricing_lease_contract_length + , coalesce(pricing_offering_class,'') pricing_offering_class + , coalesce(pricing_purchase_option,'') pricing_purchase_option + , SUM((CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN line_item_usage_amount WHEN (line_item_line_item_type = 'Usage') THEN line_item_usage_amount ELSE 0 END)) sum_line_item_usage_amount + , SUM(line_item_unblended_cost) sum_line_item_unblended_cost + , SUM((CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN reservation_effective_cost WHEN (line_item_line_item_type = 'RIFee') THEN (reservation_unused_amortized_upfront_fee_for_billing_period + reservation_unused_recurring_fee) WHEN ((line_item_line_item_type = 'Fee') AND (reservation_reservation_a_r_n <> '')) THEN 0 ELSE line_item_unblended_cost END)) sum_amortized_cost + , SUM((CASE WHEN (line_item_line_item_type = 'RIFee') THEN -(reservation_amortized_upfront_fee_for_billing_period) ELSE 0 END)) sum_ri_trueup + , SUM((CASE WHEN ((line_item_line_item_type = 'Fee') AND (reservation_reservation_a_r_n <> '')) THEN line_item_unblended_cost ELSE 0 END)) ri_upfront_fees + , modernization_mapping.generation + , modernization_mapping.latest_arm graviton_family + , modernization_mapping.previous_intel previous_intel_family + , (CASE WHEN (modernization_mapping.latest_arm <> '') THEN CONCAT(modernization_mapping.latest_arm, '.', SPLIT_PART(line_item_usage_type, '.', 3)) ELSE '' END) graviton_instance + , (CASE WHEN (modernization_mapping.previous_intel <> '') THEN CONCAT(modernization_mapping.previous_intel, '.', SPLIT_PART(line_item_usage_type, '.', 3)) ELSE '' END) previous_intel + FROM + ("${cur2_database}"."${cur2_table_name}" + LEFT JOIN modernization_mapping ON (CONCAT('cache.', SPLIT_PART(line_item_usage_type, '.', 2)) = modernization_mapping.family)) + WHERE ((product['product_name'] = 'Amazon ElastiCache') AND (product_product_family = 'Cache Instance') AND (line_item_line_item_type IN ('DiscountedUsage', 'Usage', 'RIFee', 'Fee')) AND (("bill_billing_period_start_date" >= ("date_trunc"('month', current_timestamp) - INTERVAL '7' MONTH)) AND (CAST(concat(split_part("billing_period", '-', 1), '-', split_part("billing_period", '-', 2), '-01') AS date) >= ("date_trunc"('month', current_date) - INTERVAL '7' MONTH)))) + GROUP BY DATE_FORMAT(line_item_usage_start_date, '%Y-%m'), bill_payer_account_id, line_item_usage_account_id, line_item_line_item_type, line_item_resource_id, line_item_usage_type, product_location, product['cache_engine'] , pricing_lease_contract_length, pricing_offering_class, pricing_purchase_option, modernization_mapping.generation, modernization_mapping.latest_arm, modernization_mapping.previous_intel ) , elasticache_engineversion AS ( SELECT DISTINCT @@ -20887,7 +21472,18 @@ views: LEFT JOIN pricing PL2 ON ((elasticache_spend.previous_intel = PL2."instance type") AND (elasticache_spend.product_location = PL2.location) AND (elasticache_spend.product_cache_engine = PL2."cache engine") AND (elasticache_spend.case_purchase_option = PL2.termtype) AND (elasticache_spend.pricing_lease_contract_length = PL2.leasecontractlength) AND (elasticache_spend.pricing_purchase_option = PL2.purchaseoption))) graviton_ec2_view: dependsOn: - cur: true + cur2: + - line_item_normalized_usage_amount + - product['region'] + - product['operating_system'] + - product['physical_processor'] + - product['instance_type'] + - product['instance_type_family'] + - pricing_offering_class + - savings_plan_offering_type + - savings_plan_purchase_term + - reservation_reservation_a_r_n + - savings_plan_savings_plan_a_r_n views: - modernization_mapping parameters: @@ -20902,33 +21498,33 @@ views: SELECT "bill_billing_period_start_date" "billing_period" , DATE_FORMAT(line_item_usage_start_date, '%Y-%m-%d') "usage_date" - , "bill_payer_account_id" "payer_account_id" - , "line_item_usage_account_id" "linked_account_id" + , bill_payer_account_id "payer_account_id" + , line_item_usage_account_id "linked_account_id" , product_instance_type existing_instance - , "line_item_line_item_type" "charge_type" - , (CASE WHEN ("savings_plan_savings_plan_a_r_n" <> '') THEN 'SavingsPlan' WHEN ("reservation_reservation_a_r_n" <> '') THEN 'Reserved' WHEN ("line_item_usage_type" LIKE '%Spot%') THEN 'Spot' ELSE 'OnDemand' END) "purchase_option" - , "product_region" "region" - , product_location "location" - , product_operating_system - , line_item_operation - , (CASE WHEN (product_physical_processor LIKE '%Intel%') THEN 'Intel' WHEN (product_physical_processor LIKE '%AMD%') THEN 'AMD' WHEN (product_physical_processor LIKE '%Graviton%') THEN 'Graviton' ELSE product_physical_processor END) processor_type - , product_instance_type_family - , "split_part"(product_instance_type, '.', 2) size - , (CASE WHEN (pricing_lease_contract_length <> '') THEN pricing_lease_contract_length ELSE savings_plan_purchase_term END) contract_length - , (CASE WHEN (pricing_offering_class <> '') THEN pricing_offering_class ELSE savings_plan_offering_type END) offering_type - , (CASE WHEN (pricing_offering_class <> '') THEN pricing_offering_class WHEN (savings_plan_offering_type = 'ComputeSavingsPlans') THEN 'convertible' WHEN (savings_plan_offering_type = 'EC2InstanceSavingsPlans') THEN 'standard' END) offering_type_mapping_only_column - , (CASE WHEN (pricing_purchase_option <> '') THEN pricing_purchase_option ELSE savings_plan_payment_option END) payment_option - , (CASE WHEN ((NOT (product_physical_processor LIKE '%Graviton%')) AND (modernization_mapping.latest_arm <> '')) THEN "concat"(modernization_mapping.latest_arm, '.', "split_part"(product_instance_type, '.', 2)) ELSE ' ' END) graviton_instance - , (CASE WHEN (product_physical_processor LIKE '%Graviton%') THEN "concat"(modernization_mapping.previous_intel, '.', "split_part"(product_instance_type, '.', 2)) ELSE ' ' END) previous_intel_instance - , "sum"((CASE WHEN ("line_item_line_item_type" = 'SavingsPlanCoveredUsage') THEN "line_item_usage_amount" WHEN ("line_item_line_item_type" = 'DiscountedUsage') THEN "line_item_usage_amount" WHEN ("line_item_line_item_type" = 'Usage') THEN "line_item_usage_amount" ELSE 0 END)) "usage_quantity" - , "sum"((CASE WHEN ("line_item_line_item_type" = 'SavingsPlanCoveredUsage') THEN "line_item_normalized_usage_amount" WHEN ("line_item_line_item_type" = 'DiscountedUsage') THEN "line_item_normalized_usage_amount" WHEN ("line_item_line_item_type" = 'Usage') THEN "line_item_normalized_usage_amount" ELSE 0 END)) "normalized_usage_quantity" - , "sum"("line_item_unblended_cost") "unblended_cost" - , "sum"((CASE WHEN ("line_item_line_item_type" = 'SavingsPlanCoveredUsage') THEN "savings_plan_savings_plan_effective_cost" WHEN ("line_item_line_item_type" = 'SavingsPlanRecurringFee') THEN ("savings_plan_total_commitment_to_date" - "savings_plan_used_commitment") WHEN ("line_item_line_item_type" = 'SavingsPlanNegation') THEN 0 WHEN ("line_item_line_item_type" = 'SavingsPlanUpfrontFee') THEN 0 WHEN ("line_item_line_item_type" = 'DiscountedUsage') THEN "reservation_effective_cost" WHEN ("line_item_line_item_type" = 'RIFee') THEN ("reservation_unused_amortized_upfront_fee_for_billing_period" + "reservation_unused_recurring_fee") WHEN (("line_item_line_item_type" = 'Fee') AND ("reservation_reservation_a_r_n" <> '')) THEN 0 ELSE "line_item_unblended_cost" END)) "amortized_cost" - FROM - (${cur_table_name} - LEFT JOIN modernization_mapping ON (product_instance_type_family = modernization_mapping.family)) - WHERE (((((line_item_product_code = 'AmazonEC2') AND ((line_item_usage_type LIKE '%BoxUsage%') OR ("line_item_usage_type" LIKE '%Spot%'))) AND (line_item_line_item_type <> 'SavingsPlanNegation')) AND (("bill_billing_period_start_date" >= ("date_trunc"('month', current_timestamp) - INTERVAL '7' MONTH)) AND (CAST("concat"("year", '-', "month", '-01') AS date) >= ("date_trunc"('month', current_date) - INTERVAL '7' MONTH)))) AND (line_item_line_item_type IN ('DiscountedUsage', 'Usage', 'Fee', 'RIFee', 'SavingsPlanCoveredUsage'))) - GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 + , line_item_line_item_type "charge_type" + , (CASE WHEN (savings_plan_savings_plan_a_r_n <> '') THEN 'SavingsPlan' WHEN (reservation_reservation_a_r_n <> '') THEN 'Reserved' WHEN (line_item_usage_type LIKE '%Spot%') THEN 'Spot' ELSE 'OnDemand' END) "purchase_option" + , product['region'] "region" + , product_location "location" + , product['operating_system'] "product_operating_system" + , line_item_operation + , (CASE WHEN (product['physical_processor'] LIKE '%Intel%') THEN 'Intel' WHEN (product['physical_processor'] LIKE '%AMD%') THEN 'AMD' WHEN (product['physical_processor'] LIKE '%Graviton%') THEN 'Graviton' ELSE product['physical_processor'] END) processor_type + , product['instance_type_family'] "product_instance_type_family" + , split_part(product_instance_type, '.', 2) size + , (CASE WHEN (pricing_lease_contract_length <> '') THEN pricing_lease_contract_length ELSE savings_plan_purchase_term END) contract_length + , COALESCE((CASE WHEN (COALESCE(pricing_offering_class, '') <> '') THEN COALESCE(pricing_offering_class, '') ELSE savings_plan_offering_type END), '') offering_type + , (CASE WHEN (COALESCE(pricing_offering_class, '') <> '') THEN COALESCE(pricing_offering_class, '') WHEN (savings_plan_offering_type = 'ComputeSavingsPlans') THEN 'convertible' WHEN (savings_plan_offering_type = 'EC2InstanceSavingsPlans') THEN 'standard' END) offering_type_mapping_only_column + , (CASE WHEN (pricing_purchase_option <> '') THEN pricing_purchase_option ELSE savings_plan_payment_option END) payment_option + , (CASE WHEN ((NOT (product['physical_processor'] LIKE '%Graviton%')) AND (modernization_mapping.latest_arm <> '')) THEN concat(modernization_mapping.latest_arm, '.', split_part(product_instance_type, '.', 2)) ELSE ' ' END) graviton_instance + , (CASE WHEN (product['physical_processor'] LIKE '%Graviton%') THEN concat(modernization_mapping.previous_intel, '.', split_part(product_instance_type, '.', 2)) ELSE ' ' END) previous_intel_instance + , sum((CASE WHEN (line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN line_item_usage_amount WHEN (line_item_line_item_type = 'DiscountedUsage') THEN line_item_usage_amount WHEN (line_item_line_item_type = 'Usage') THEN line_item_usage_amount ELSE 0 END)) "usage_quantity" + , sum((CASE WHEN (line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN line_item_normalized_usage_amount WHEN (line_item_line_item_type = 'DiscountedUsage') THEN line_item_normalized_usage_amount WHEN (line_item_line_item_type = 'Usage') THEN line_item_normalized_usage_amount ELSE 0 END)) "normalized_usage_quantity" + , sum(line_item_unblended_cost) "unblended_cost" + , sum((CASE WHEN (line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN savings_plan_savings_plan_effective_cost WHEN (line_item_line_item_type = 'SavingsPlanRecurringFee') THEN (savings_plan_total_commitment_to_date - savings_plan_used_commitment) WHEN (line_item_line_item_type = 'SavingsPlanNegation') THEN 0 WHEN (line_item_line_item_type = 'SavingsPlanUpfrontFee') THEN 0 WHEN (line_item_line_item_type = 'DiscountedUsage') THEN reservation_effective_cost WHEN (line_item_line_item_type = 'RIFee') THEN (reservation_unused_amortized_upfront_fee_for_billing_period + reservation_unused_recurring_fee) WHEN ((line_item_line_item_type = 'Fee') AND (reservation_reservation_a_r_n <> '')) THEN 0 ELSE line_item_unblended_cost END)) "amortized_cost" + FROM + ("${cur2_database}"."${cur2_table_name}" + LEFT JOIN modernization_mapping ON (product['instance_type_family'] = modernization_mapping.family)) + WHERE (((((line_item_product_code = 'AmazonEC2') AND ((line_item_usage_type LIKE '%BoxUsage%') OR (line_item_usage_type LIKE '%Spot%'))) AND (line_item_line_item_type <> 'SavingsPlanNegation')) AND ((bill_billing_period_start_date >= (date_trunc('month', current_timestamp) - INTERVAL '7' MONTH)) AND (CAST(concat(split_part("billing_period", '-', 1), '-', split_part("billing_period", '-', 2), '-01') AS date) >= (date_trunc('month', current_date) - INTERVAL '7' MONTH)))) AND (line_item_line_item_type IN ('DiscountedUsage', 'Usage', 'Fee', 'RIFee', 'SavingsPlanCoveredUsage'))) + GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ) , ec2_pricing AS ( SELECT @@ -20981,7 +21577,21 @@ views: summary_view_reserved ri graviton_rds_view: dependsOn: - cur: true + cur2: + - line_item_normalized_usage_amount + - line_item_unblended_rate + - pricing_lease_contract_length + - pricing_public_on_demand_rate + - pricing_purchase_option + - pricing_term + - pricing_unit + - product['database_engine'] + - product['deployment_option'] + - product['instance_type_family'] + - product['instance_type'] + - product['location'] + - product['physical_processor'] + - product['storage'] views: - modernization_mapping parameters: @@ -20993,39 +21603,39 @@ views: CREATE OR REPLACE VIEW graviton_rds_view AS WITH cur_data AS ( - SELECT - bill_payer_account_id - , line_item_usage_account_id - , bill_billing_period_start_date - , product_instance_type - , product_storage - , pricing_term - , pricing_lease_contract_length - , pricing_purchase_option - , pricing_unit - , SPLIT_PART(line_item_resource_id, ':', 7) line_item_resource_id - , (CASE WHEN (product_storage LIKE 'EBS Only') THEN 'EBS Only' WHEN (product_storage LIKE 'Aurora IO Optimization Mode') THEN 'Aurora IO Optimization Mode' WHEN (product_storage LIKE '%SSD%') THEN 'SSD' ELSE 'Other Storage' END) product_storage_type - , (CASE WHEN (product_database_engine LIKE 'Aurora%') THEN 'Aurora' ELSE 'AmazonRDS' END) rds_type - , (CASE WHEN (product_database_engine LIKE 'Aurora%') THEN SPLIT_PART(product_database_engine, ' ', 2) ELSE product_database_engine END) db_engine - , line_item_availability_zone - , product_location - , lower(product_instance_type_family) "product_instance_type_family" - , (CASE WHEN (product_physical_processor LIKE '%Intel%') THEN 'Intel' WHEN (product_physical_processor LIKE '%AMD%') THEN 'AMD' WHEN (product_physical_processor LIKE '%Graviton%') THEN 'Graviton' ELSE product_physical_processor END) processor_type - , product_deployment_option - , line_item_unblended_rate - , pricing_public_on_demand_rate - , SUM((CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN line_item_usage_amount WHEN (line_item_line_item_type = 'Usage') THEN line_item_usage_amount ELSE 0 END)) line_item_usage_amount - , SUM(line_item_unblended_cost) line_item_unblended_cost - , SUM((CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN reservation_effective_cost WHEN (line_item_line_item_type = 'RIFee') THEN (reservation_unused_amortized_upfront_fee_for_billing_period + reservation_unused_recurring_fee) WHEN ((line_item_line_item_type = 'Fee') AND (reservation_reservation_a_r_n <> '')) THEN 0 ELSE line_item_unblended_cost END)) sum_amortized_cost - , modernization_mapping.generation - , modernization_mapping.latest_arm - , (CASE WHEN (modernization_mapping.latest_arm <> '') THEN CONCAT('db.', modernization_mapping.latest_arm, '.', SPLIT_PART(product_instance_type, '.', 3)) ELSE '' END) graviton_instance_type - , (CASE WHEN (modernization_mapping.previous_intel <> '') THEN CONCAT('db.', modernization_mapping.previous_intel, '.', SPLIT_PART(product_instance_type, '.', 3)) ELSE '' END) latest_intel_instance_type - FROM - (${cur_table_name} - LEFT JOIN modernization_mapping ON (lower(product_instance_type_family) = modernization_mapping.family)) - WHERE (((product_product_name = 'Amazon Relational Database Service') AND (line_item_line_item_type IN ('DiscountedUsage', 'Usage', 'Fee', 'RIFee')) AND (product_product_family = 'Database Instance')) AND (("bill_billing_period_start_date" >= ("date_trunc"('month', current_timestamp) - INTERVAL '7' MONTH)) AND (CAST("concat"("year", '-', "month", '-01') AS date) >= ("date_trunc"('month', current_date) - INTERVAL '7' MONTH)))) - GROUP BY bill_payer_account_id, line_item_usage_account_id, bill_billing_period_start_date, product_instance_type, product_storage, line_item_usage_amount, pricing_term, line_item_availability_zone, product_instance_type_family, product_location, line_item_resource_id, product_database_engine, product_deployment_option, line_item_unblended_rate, product_physical_processor, modernization_mapping.generation, modernization_mapping.latest_arm, pricing_lease_contract_length, pricing_purchase_option, pricing_unit, pricing_public_on_demand_rate, 26, 27 + SELECT + bill_payer_account_id + , line_item_usage_account_id + , bill_billing_period_start_date + , product_instance_type + , product['storage'] product_storage + , pricing_term + , coalesce(pricing_lease_contract_length,'') pricing_lease_contract_length + , coalesce(pricing_purchase_option,'') pricing_purchase_option + , pricing_unit + , SPLIT_PART(line_item_resource_id, ':', 7) line_item_resource_id + , (CASE WHEN (product['storage'] LIKE 'EBS Only') THEN 'EBS Only' WHEN (product['storage'] LIKE 'Aurora IO Optimization Mode') THEN 'Aurora IO Optimization Mode' WHEN (product['storage'] LIKE '%SSD%') THEN 'SSD' ELSE 'Other Storage' END) product_storage_type + , (CASE WHEN (product['database_engine'] LIKE 'Aurora%') THEN 'Aurora' ELSE 'AmazonRDS' END) rds_type + , (CASE WHEN (product['database_engine'] LIKE 'Aurora%') THEN SPLIT_PART(product['database_engine'], ' ', 2) ELSE product['database_engine'] END) db_engine + , line_item_availability_zone + , product_location + , lower(product['instance_type_family']) "product_instance_type_family" + , (CASE WHEN (product['physical_processor'] LIKE '%Intel%') THEN 'Intel' WHEN (product['physical_processor'] LIKE '%AMD%') THEN 'AMD' WHEN (product['physical_processor'] LIKE '%Graviton%') THEN 'Graviton' ELSE product['physical_processor'] END) processor_type + , product['deployment_option'] product_deployment_option + , line_item_unblended_rate + , pricing_public_on_demand_rate + , SUM((CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN line_item_usage_amount WHEN (line_item_line_item_type = 'Usage') THEN line_item_usage_amount ELSE 0 END)) line_item_usage_amount + , SUM(line_item_unblended_cost) line_item_unblended_cost + , SUM((CASE WHEN (line_item_line_item_type = 'DiscountedUsage') THEN reservation_effective_cost WHEN (line_item_line_item_type = 'RIFee') THEN (reservation_unused_amortized_upfront_fee_for_billing_period + reservation_unused_recurring_fee) WHEN ((line_item_line_item_type = 'Fee') AND (reservation_reservation_a_r_n <> '')) THEN 0 ELSE line_item_unblended_cost END)) sum_amortized_cost + , modernization_mapping.generation + , modernization_mapping.latest_arm + , (CASE WHEN (modernization_mapping.latest_arm <> '') THEN CONCAT('db.', modernization_mapping.latest_arm, '.', SPLIT_PART(product_instance_type, '.', 3)) ELSE '' END) graviton_instance_type + , (CASE WHEN (modernization_mapping.previous_intel <> '') THEN CONCAT('db.', modernization_mapping.previous_intel, '.', SPLIT_PART(product_instance_type, '.', 3)) ELSE '' END) latest_intel_instance_type + FROM + ( "${cur2_database}"."${cur2_table_name}" + LEFT JOIN modernization_mapping ON (lower(product['instance_type_family']) = modernization_mapping.family)) + WHERE (((product['product_name'] = 'Amazon Relational Database Service') AND (line_item_line_item_type IN ('DiscountedUsage', 'Usage', 'Fee', 'RIFee')) AND (product_product_family = 'Database Instance')) AND (("bill_billing_period_start_date" >= ("date_trunc"('month', current_timestamp) - INTERVAL '7' MONTH)) AND (CAST(concat(split_part("billing_period", '-', 1), '-', split_part("billing_period", '-', 2), '-01') AS date) >= ("date_trunc"('month', current_date) - INTERVAL '7' MONTH)))) + GROUP BY bill_payer_account_id, line_item_usage_account_id, bill_billing_period_start_date, product_instance_type, product['storage'], line_item_usage_amount, pricing_term, line_item_availability_zone, product['instance_type_family'], product_location, line_item_resource_id, product['database_engine'], product['deployment_option'], line_item_unblended_rate, product['physical_processor'], modernization_mapping.generation, modernization_mapping.latest_arm, pricing_lease_contract_length, pricing_purchase_option, pricing_unit, pricing_public_on_demand_rate, 26, 27 ) , describe_db_data AS ( SELECT DISTINCT From b8a5d62b3cedc630ac99190972bbde320af2bc34 Mon Sep 17 00:00:00 2001 From: Iakov GAN <82834333+iakov-aws@users.noreply.github.com> Date: Sat, 16 Nov 2024 17:37:16 +0100 Subject: [PATCH 4/5] make safer update (#1026) * add incremental refresh option --- cid/common.py | 9 ++-- cid/helpers/quicksight/__init__.py | 38 +++++++++----- cid/helpers/quicksight/dashboard.py | 80 +++++++++++++---------------- 3 files changed, 66 insertions(+), 61 deletions(-) diff --git a/cid/common.py b/cid/common.py index ebaad349..9efabe16 100644 --- a/cid/common.py +++ b/cid/common.py @@ -1090,11 +1090,10 @@ def update_dashboard(self, dashboard_id, dashboard_definition): print(f'Dashboard "{dashboard_id}" is not deployed') return - if isinstance(dashboard.deployedTemplate, CidQsTemplate): - print(f'Deployed template: {dashboard.deployedTemplate.arn}') - if isinstance(dashboard.sourceTemplate, CidQsTemplate): - print(f"Latest template: {dashboard.sourceTemplate.arn}/version/{dashboard.sourceTemplate.version}") - + if isinstance(dashboard.deployed_template, CidQsTemplate): + print(f'Deployed template: {dashboard.deployed_template.arn}') + if isinstance(dashboard.source_template, CidQsTemplate): + print(f"Latest template: {dashboard.source_template.arn}/version/{dashboard.source_template.version}") try: cid_print(f'\nUpdating {dashboard_id} from {dashboard.cid_version} to {dashboard.latest_available_cid_version}') except: diff --git a/cid/helpers/quicksight/__init__.py b/cid/helpers/quicksight/__init__.py index 0a99a9fd..5baff4c4 100644 --- a/cid/helpers/quicksight/__init__.py +++ b/cid/helpers/quicksight/__init__.py @@ -255,7 +255,7 @@ def _safe_int(value, default=None): try: _template = self.describe_template(**params) if isinstance(_template, CidQsTemplate): - dashboard.deployedTemplate = _template + dashboard.deployed_template = _template except Exception as exc: logger.debug(exc, exc_info=True) logger.info(f'Unable to describe template for {dashboardId}, {exc}') @@ -263,7 +263,7 @@ def _safe_int(value, default=None): logger.info("Minimum template version could not be found for Dashboard {dashboardId}: {_template_arn}, deployed template could not be described") else: # Dashboard is not template based but definition based try: - dashboard.deployedDefinition = self.describe_dashboard_definition(dashboard_id=dashboardId, refresh=refresh) + dashboard.deployed_definition = self.describe_dashboard_definition(dashboard_id=dashboardId, refresh=refresh) except CidError as exc: logger.info('Exception on reading dashboard definition {dashboardId}: {exc}. Not critical. Continue.') @@ -271,7 +271,7 @@ def _safe_int(value, default=None): # Resolve source definition (the latest definition publicly available) data_stream = io.StringIO(_definition["data"]) definition_data = yaml.safe_load(data_stream) - dashboard.sourceDefinition = CidQsDefinition(definition_data) + dashboard.source_definition = CidQsDefinition(definition_data) # Fetch datasets (works for both TEMPLATE and DEFINITION based dashboards) for dataset in dashboard.version.get('DataSetArns', []): @@ -289,7 +289,7 @@ def _safe_int(value, default=None): logger.info(f'Invalid dataset {dataset_id}') logger.info(f"{dashboard.name} has {len(dashboard.datasets)} datasets") - # Fetch the latest version of sourceTemplate referenced in definition + # Fetch the latest version of source_template referenced in definition source_template_account_id = _definition.get('sourceAccountId') template_id = _definition.get('templateId') region = _definition.get('region', 'us-east-1') @@ -297,13 +297,13 @@ def _safe_int(value, default=None): try: logger.debug(f'Loading latest source template {template_id} from source account {source_template_account_id} in {region}') template = self.describe_template(template_id, account_id=source_template_account_id, region=region) - dashboard.sourceTemplate = template + dashboard.source_template = template except Exception as exc: logger.debug(exc, exc_info=True) logger.info(f'Unable to describe template {template_id} in {source_template_account_id} ({region})') # Checking for version override in template definition - for dashboard_template in [dashboard.deployedTemplate, dashboard.sourceTemplate]: + for dashboard_template in [dashboard.deployed_template, dashboard.source_template]: if not isinstance(dashboard_template, CidQsTemplate)\ or int(dashboard_template.version) <= 0 \ or not version_obj: @@ -585,21 +585,18 @@ def discover_data_sources(self) -> None: self.describe_data_source(d) except Exception as exc: logger.debug(exc, exc_info=True) - + def discover_dashboards(self, refresh_overrides: List[str]=[], refresh: bool = False) -> None: """ Discover deployed dashboards - :param refresh_overrides: a list of dashboard ids to refresh :param refresh: force refresh all dashboards """ - if refresh or self._dashboards is None: self._dashboards = {} else: for dashboard_id in refresh_overrides: if dashboard_id in self._dashboards: del self._dashboards[dashboard_id] - logger.info('Discovering deployed dashboards') deployed_dashboards=self.list_dashboards() logger.info(f'Found {len(deployed_dashboards)} deployed dashboards') @@ -611,9 +608,7 @@ def discover_dashboards(self, refresh_overrides: List[str]=[], refresh: bool = F dashboard_id = dashboard.get('DashboardId') bar.set_description(f'Discovering {dashboard_name[:10]:<10}', refresh=True) logger.info(f'Discovering "{dashboard_name}"') - refresh = dashboard_id in refresh_overrides - self.discover_dashboard(dashboard_id, refresh=refresh) def list_dashboards(self) -> list: @@ -1259,7 +1254,6 @@ def ensure_dataset_refresh_schedule(self, dataset_id, schedules: list): return for schedule in schedules: - # Get the list of existing schedules with the same id existing_schedule = None for existing in existing_schedules: @@ -1267,6 +1261,24 @@ def ensure_dataset_refresh_schedule(self, dataset_id, schedules: list): existing_schedule = existing break + refresh_configuration = schedule.pop('RefreshConfiguration', {}) + if refresh_configuration: + # schedule exists so we need to update + logger.debug(f'Updating refresh schedule configuration with id {schedule["ScheduleId"]} for dataset {dataset_id}.') + try: + self.client.put_data_set_refresh_properties( + DataSetId=dataset_id, + AwsAccountId=self.account_id, + DataSetRefreshProperties={'RefreshConfiguration': refresh_configuration} + ) + logger.debug(f'Refresh schedule configuration with id {schedule["ScheduleId"]} for dataset {dataset_id} is updated.') + except self.client.exceptions.ResourceNotFoundException: + logger.error(f'Unable to update refresh schedule configuration with id {schedule["ScheduleId"]}. Dataset {dataset_id} does not exist.') + except self.client.exceptions.AccessDeniedException: + logger.error(f'Unable to update refresh schedule configuration with id {schedule["ScheduleId"]}. Please add quicksight:UpdateDataSet permission.') + except Exception as exc: + logger.error(f'Unable to update refresh schedule configuration with id {schedule["ScheduleId"]} for dataset "{dataset_id}": {str(exc)}') + # Verify that all schedule parameters are set schedule["ScheduleId"] = schedule.get("ScheduleId", "cid") if "ScheduleFrequency" not in schedule: diff --git a/cid/helpers/quicksight/dashboard.py b/cid/helpers/quicksight/dashboard.py index 5476fd37..eff073ab 100644 --- a/cid/helpers/quicksight/dashboard.py +++ b/cid/helpers/quicksight/dashboard.py @@ -18,13 +18,13 @@ def __init__(self, raw: dict, qs=None) -> None: # Initialize properties self.datasets: Dict[str, str] = {} # Deployed template - self._deployedTemplate: CidQsTemplate = None - self._deployedDefinition: CidQsDefinition = None + self._deployed_template: CidQsTemplate = None + self._deployed_definition: CidQsDefinition = None self._status = str() self.status_detail = str() # Source template in origin account - self.sourceTemplate: CidQsTemplate = None - self.sourceDefinition: CidQsDefinition = None + self.source_template: CidQsTemplate = None + self.source_definition: CidQsDefinition = None self.qs = qs @property @@ -36,75 +36,69 @@ def version(self) -> dict: return self.get_property('Version') @property - def deployedTemplate(self) -> CidQsTemplate: - return self._deployedTemplate + def deployed_template(self) -> CidQsTemplate: + return self._deployed_template - @deployedTemplate.setter - def deployedTemplate(self, template: CidQsTemplate) -> None: - self._deployedTemplate = template + @deployed_template.setter + def deployed_template(self, template: CidQsTemplate) -> None: + self._deployed_template = template @property - def deployedDefinition(self) -> CidQsTemplate: - return self._deployedDefinition + def deployed_definition(self) -> CidQsTemplate: + return self._deployed_definition - @deployedDefinition.setter - def deployedDefinition(self, definition: CidQsDefinition) -> None: - self._deployedDefinition = definition + @deployed_definition.setter + def deployed_definition(self, definition: CidQsDefinition) -> None: + self._deployed_definition = definition @property def template_id(self) -> str: - if isinstance(self.deployedTemplate, CidQsTemplate): - return self.deployedTemplate.id + if isinstance(self.deployed_template, CidQsTemplate): + return self.deployed_template.id return None @property def template_arn(self) -> str: - if isinstance(self.deployedTemplate, CidQsTemplate): - return self.deployedTemplate.arn + if isinstance(self.deployed_template, CidQsTemplate): + return self.deployed_template.arn return None @property def deployed_cid_version(self) -> int: - if isinstance(self.deployedTemplate, CidQsTemplate): - return self.deployedTemplate.cid_version - elif isinstance(self.deployedDefinition, CidQsDefinition): - return self.deployedDefinition.cid_version + if isinstance(self.deployed_template, CidQsTemplate): + return self.deployed_template.cid_version + elif isinstance(self.deployed_definition, CidQsDefinition): + return self.deployed_definition.cid_version else: return None @property def latest(self) -> bool: - return self.latest_available_cid_version == self.deployed_cid_version + try: + return self.latest_available_cid_version == self.deployed_cid_version + except Exception as exc: + logger.debug(f'Failed to determine if latest for dashboards: {self.id}. {exc}') + return None @property def health(self) -> bool: return self.status not in ['broken'] - - @property - def origin_type(self) -> str: - if self.deployedTemplate is not None: - return "TEMPLATE" - elif self.deployedDefinition is not None: - return "DEFINITION" - else: - return "UNKNOWN" - @property def cid_version(self) -> int: - if self.origin_type == "TEMPLATE": - return self.deployedTemplate.cid_version - elif self.origin_type == "DEFINITION": - return self.deployedDefinition.cid_version + if self.deployed_template: + return self.deployed_template.cid_version + elif self.deployed_definition: + return self.deployed_definition.cid_version else: return None - + @property def latest_available_cid_version(self) -> int: - if self.origin_type == "TEMPLATE": - return self.sourceTemplate.cid_version - elif self.origin_type == "DEFINITION": - return self.sourceDefinition.cid_version + if self.source_template: + return self.source_template.cid_version + elif self.source_definition: + return self.source_definition.cid_version else: return None @@ -126,7 +120,7 @@ def status(self) -> str: logger.info(f"Found datasets: {self.datasets}") logger.info(f"Required datasets: {self.definition.get('dependsOn').get('datasets')}") # Source Template has changed - elif self.deployedTemplate and self.sourceTemplate and self.deployedTemplate.arn and self.sourceTemplate.arn and not self.deployedTemplate.arn.startswith(self.sourceTemplate.arn): + elif self.deployed_template and self.source_template and self.deployed_template.arn and self.source_template.arn and not self.deployed_template.arn.startswith(self.source_template.arn): self._status = 'legacy' elif not self.latest_available_cid_version or not self.deployed_cid_version: self._status = 'undetermined' From d59c5295936bd27821de5382eb6945fb6f02fb49 Mon Sep 17 00:00:00 2001 From: Iakov GAN <82834333+iakov-aws@users.noreply.github.com> Date: Sat, 16 Nov 2024 17:37:36 +0100 Subject: [PATCH 5/5] fix default time columns (#1030) * fix default time columns --- cfn-templates/cid-cfn.yml | 4 ++-- cid/_version.py | 2 +- cid/helpers/cur.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cfn-templates/cid-cfn.yml b/cfn-templates/cid-cfn.yml index c1ee2220..848f527f 100644 --- a/cfn-templates/cid-cfn.yml +++ b/cfn-templates/cid-cfn.yml @@ -1,5 +1,5 @@ AWSTemplateFormatVersion: '2010-09-09' -Description: Deployment of Cloud Intelligence Dashboards v4.0.4 +Description: Deployment of Cloud Intelligence Dashboards v4.0.5 Metadata: AWS::CloudFormation::Interface: ParameterGroups: @@ -1781,7 +1781,7 @@ Resources: - LambdaLayerBucketPrefixIsManaged - !FindInMap [RegionMap, !Ref 'AWS::Region', BucketName] - !Sub '${LambdaLayerBucketPrefix}-${AWS::Region}' # Region added for backward compatibility - S3Key: 'cid-resource-lambda-layer/cid-4.0.4.zip' #replace version here if needed + S3Key: 'cid-resource-lambda-layer/cid-4.0.5.zip' #replace version here if needed CompatibleRuntimes: - python3.10 - python3.11 diff --git a/cid/_version.py b/cid/_version.py index 680617c7..653faaf3 100644 --- a/cid/_version.py +++ b/cid/_version.py @@ -1,2 +1,2 @@ -__version__ = '4.0.4' +__version__ = '4.0.5' diff --git a/cid/helpers/cur.py b/cid/helpers/cur.py index 4a5940f0..7b5ff704 100644 --- a/cid/helpers/cur.py +++ b/cid/helpers/cur.py @@ -111,7 +111,7 @@ def get_type_of_column(self, column: str, version=None): if column.endswith('_date') and not column.endswith('_to_date'): return 'TIMESTAMP' if column.endswith('_time') and (version or self.version) == '2': - return 'TIMESTAMP' + return 'STRING' # yes, they are string special_cases = { "cost_category": "MAP", "discount": "MAP",