diff --git a/cid/builtin/core/data/queries/kpi/kpi_ebs_storage_view.sql b/cid/builtin/core/data/queries/kpi/kpi_ebs_storage_view.sql index bd761f91f..f2e9b7e49 100644 --- a/cid/builtin/core/data/queries/kpi/kpi_ebs_storage_view.sql +++ b/cid/builtin/core/data/queries/kpi/kpi_ebs_storage_view.sql @@ -75,6 +75,18 @@ ebs_spend_with_unit_cost AS ( WHEN usage_storage_gb_mo <= 150 THEN 0 ELSE 125 END AS gp2_usage_added_throughput_gibps_mo + -->>SAVINGS: look at inverse from a current gp3 perspective + , CASE WHEN volume_api_name <> 'gp3' THEN 0 + WHEN usage_storage_gb_mo*3 < 3000 THEN 3000 - 3000 + WHEN usage_storage_gb_mo*3 > 16000 THEN 16000 - 3000 + ELSE usage_storage_gb_mo*3 - 3000 + END equiv_gp2_usage_added_iops_mo + , CASE + WHEN volume_api_name <> 'gp3' THEN 0 + WHEN usage_storage_gb_mo <= 150 THEN 0 + ELSE 125 + END equiv_gp2_usage_added_throughput_gibps_mo + --<>SAVINGS: look at inverse from a current gp3 perspective + , CASE + WHEN volume_api_name = 'gp3' THEN (cost_storage_gb_mo/0.8) / usage_storage_gb_mo + ELSE 0 + END "estimated_gp2_unit_cost" + --<>SAVINGS: look at inverse from a current gp3 perspective + , sum(equiv_gp2_usage_added_iops_mo) equiv_gp2_usage_added_iops_mo + , sum(equiv_gp2_usage_added_throughput_gibps_mo) equiv_gp2_usage_added_throughput_gibps_mo + --<>SAVINGS: look at inverse from a current gp3 perspective + , sum(CASE + WHEN (volume_api_name = 'gp3') THEN + ( + (cost_storage_gb_mo/0.8) + + (estimated_gp2_unit_cost * 0.5 * equiv_gp2_usage_added_throughput_gibps_mo) + + (estimated_gp2_unit_cost * 0.06 * equiv_gp2_usage_added_iops_mo) + ) ELSE 0 + END) ebs_gp2_potential_cost + --<>SAVINGS: look at inverse from a current gp3 perspective + , ebs_gp2_potential_cost - ebs_gp3_cost gp3_current_savings + --< 'Graviton')) THEN amortized_cost*.2 ELSE 0 END "lambda_graviton_potential_savings" /*Uses 20% savings estimate*/ - + +/*Savings estimation*/ + -->>SAVINGS: + -- EC2 Graviton current savings + , CASE + WHEN (adjusted_processor = 'Graviton') AND ("charge_type" LIKE '%Usage%') AND ("product_code" = 'AmazonEC2') THEN (amortized_cost / 8E-1) * 2E-1 + ELSE 0 END "ec2_graviton_current_savings" + -- EC2 AMD current savings + , CASE + WHEN (adjusted_processor = 'AMD') AND ("charge_type" LIKE '%Usage%') AND ("product_code" = 'AmazonEC2') THEN (amortized_cost / 9E-1) * 1E-1 + ELSE 0 END "ec2_amd_current_savings" + -- Spot current savings + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonEC2') AND + ("instance_type" <> '') AND + ("operation" LIKE '%RunInstances%') AND + (purchase_option = 'Spot') AND (NOT (savings_plan_offering_type LIKE '%EC2%')) THEN (adjusted_amortized_cost / 5.5E-1) * 4.5E-1 + ELSE 0 END "ec2_spot_current_savings" + -- Latest generation current savings + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonEC2') AND + ("instance_type" <> '') AND + ("operation" LIKE '%RunInstances%') AND + (generation IN ('Current')) AND + (purchase_option <> 'Spot') AND + (purchase_option <> 'Reserved') AND + (NOT (savings_plan_offering_type LIKE '%EC2%')) THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "ec2_latest_generation_current_savings" + -- RDS Graviton current savings + , CASE WHEN (adjusted_processor = 'Graviton') AND + ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonRDS') AND + (purchase_option = 'OnDemand') AND + (database_engine IN ('Aurora MySQL', 'Aurora PostgreSQL', 'MariaDB', 'PostgreSQL')) THEN (amortized_cost / 9E-1) * 1E-1 + ELSE 0 END "rds_graviton_current_savings" + -- ElastiCache Graviton current savings + , CASE WHEN (adjusted_processor = 'Graviton') AND + ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonElastiCache') THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "elasticache_graviton_current_savings" + -- AOS Graviton current saving + , CASE WHEN ("charge_type" = 'Usage') AND + ("product_code" = 'AmazonES') AND + (adjusted_processor = 'Graviton') THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "opensearch_graviton_current_savings" + -- Lambda Graviton current saving + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AWSLambda') AND + (adjusted_processor = 'Graviton') THEN (amortized_cost / 8E-1) 2E-1 + ELSE 0 END "lambda_graviton_current_savings" + --< 'Graviton')) THEN amortized_cost*.2 ELSE 0 END "lambda_graviton_potential_savings" /*Uses 20% savings estimate*/ - +/*Savings estimation*/ + -->>SAVINGS: + -- EC2 Graviton current savings + , CASE + WHEN (adjusted_processor = 'Graviton') AND ("charge_type" LIKE '%Usage%') AND ("product_code" = 'AmazonEC2') THEN (amortized_cost / 8E-1) * 2E-1 + ELSE 0 END "ec2_graviton_current_savings" + -- EC2 AMD current savings + , CASE + WHEN (adjusted_processor = 'AMD') AND ("charge_type" LIKE '%Usage%') AND ("product_code" = 'AmazonEC2') THEN (amortized_cost / 9E-1) * 1E-1 + ELSE 0 END "ec2_amd_current_savings" + -- Spot current savings + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonEC2') AND + ("instance_type" <> '') AND + ("operation" LIKE '%RunInstances%') AND + (purchase_option = 'Spot') AND (NOT (savings_plan_offering_type LIKE '%EC2%')) THEN (adjusted_amortized_cost / 5.5E-1) * 4.5E-1 + ELSE 0 END "ec2_spot_current_savings" + -- Latest generation current savings + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonEC2') AND + ("instance_type" <> '') AND + ("operation" LIKE '%RunInstances%') AND + (generation IN ('Current')) AND + (purchase_option <> 'Spot') AND + (purchase_option <> 'Reserved') AND + (NOT (savings_plan_offering_type LIKE '%EC2%')) THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "ec2_latest_generation_current_savings" + -- RDS Graviton current savings + , CASE WHEN (adjusted_processor = 'Graviton') AND + ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonRDS') AND + (purchase_option = 'OnDemand') AND + (database_engine IN ('Aurora MySQL', 'Aurora PostgreSQL', 'MariaDB', 'PostgreSQL')) THEN (amortized_cost / 9E-1) * 1E-1 + ELSE 0 END "rds_graviton_current_savings" + -- ElastiCache Graviton current savings + , CASE WHEN (adjusted_processor = 'Graviton') AND + ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonElastiCache') THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "elasticache_graviton_current_savings" + -- AOS Graviton current saving + , CASE WHEN ("charge_type" = 'Usage') AND + ("product_code" = 'AmazonES') AND + (adjusted_processor = 'Graviton') THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "opensearch_graviton_current_savings" + -- Lambda Graviton current saving + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AWSLambda') AND + (adjusted_processor = 'Graviton') THEN (amortized_cost / 8E-1) 2E-1 + ELSE 0 END "lambda_graviton_current_savings" + --< 'Graviton')) THEN amortized_cost*.2 ELSE 0 END "lambda_graviton_potential_savings" /*Uses 20% savings estimate*/ - +/*Savings estimation*/ + -->>SAVINGS: + -- EC2 Graviton current savings + , CASE + WHEN (adjusted_processor = 'Graviton') AND ("charge_type" LIKE '%Usage%') AND ("product_code" = 'AmazonEC2') THEN (amortized_cost / 8E-1) * 2E-1 + ELSE 0 END "ec2_graviton_current_savings" + -- EC2 AMD current savings + , CASE + WHEN (adjusted_processor = 'AMD') AND ("charge_type" LIKE '%Usage%') AND ("product_code" = 'AmazonEC2') THEN (amortized_cost / 9E-1) * 1E-1 + ELSE 0 END "ec2_amd_current_savings" + -- Spot current savings + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonEC2') AND + ("instance_type" <> '') AND + ("operation" LIKE '%RunInstances%') AND + (purchase_option = 'Spot') AND (NOT (savings_plan_offering_type LIKE '%EC2%')) THEN (adjusted_amortized_cost / 5.5E-1) * 4.5E-1 + ELSE 0 END "ec2_spot_current_savings" + -- Latest generation current savings + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonEC2') AND + ("instance_type" <> '') AND + ("operation" LIKE '%RunInstances%') AND + (generation IN ('Current')) AND + (purchase_option <> 'Spot') AND + (purchase_option <> 'Reserved') AND + (NOT (savings_plan_offering_type LIKE '%EC2%')) THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "ec2_latest_generation_current_savings" + -- RDS Graviton current savings + , CASE WHEN (adjusted_processor = 'Graviton') AND + ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonRDS') AND + (purchase_option = 'OnDemand') AND + (database_engine IN ('Aurora MySQL', 'Aurora PostgreSQL', 'MariaDB', 'PostgreSQL')) THEN (amortized_cost / 9E-1) * 1E-1 + ELSE 0 END "rds_graviton_current_savings" + -- ElastiCache Graviton current savings + , CASE WHEN (adjusted_processor = 'Graviton') AND + ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonElastiCache') THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "elasticache_graviton_current_savings" + -- AOS Graviton current saving + , CASE WHEN ("charge_type" = 'Usage') AND + ("product_code" = 'AmazonES') AND + (adjusted_processor = 'Graviton') THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "opensearch_graviton_current_savings" + -- Lambda Graviton current saving + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AWSLambda') AND + (adjusted_processor = 'Graviton') THEN (amortized_cost / 8E-1) 2E-1 + ELSE 0 END "lambda_graviton_current_savings" + --< 'Graviton')) THEN amortized_cost*.2 ELSE 0 END "lambda_graviton_potential_savings" /*Uses 20% savings estimate*/ - +/*Savings estimation*/ + -->>SAVINGS: + -- EC2 Graviton current savings + , CASE + WHEN (adjusted_processor = 'Graviton') AND ("charge_type" LIKE '%Usage%') AND ("product_code" = 'AmazonEC2') THEN (amortized_cost / 8E-1) * 2E-1 + ELSE 0 END "ec2_graviton_current_savings" + -- EC2 AMD current savings + , CASE + WHEN (adjusted_processor = 'AMD') AND ("charge_type" LIKE '%Usage%') AND ("product_code" = 'AmazonEC2') THEN (amortized_cost / 9E-1) * 1E-1 + ELSE 0 END "ec2_amd_current_savings" + -- Spot current savings + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonEC2') AND + ("instance_type" <> '') AND + ("operation" LIKE '%RunInstances%') AND + (purchase_option = 'Spot') AND (NOT (savings_plan_offering_type LIKE '%EC2%')) THEN (adjusted_amortized_cost / 5.5E-1) * 4.5E-1 + ELSE 0 END "ec2_spot_current_savings" + -- Latest generation current savings + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonEC2') AND + ("instance_type" <> '') AND + ("operation" LIKE '%RunInstances%') AND + (generation IN ('Current')) AND + (purchase_option <> 'Spot') AND + (purchase_option <> 'Reserved') AND + (NOT (savings_plan_offering_type LIKE '%EC2%')) THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "ec2_latest_generation_current_savings" + -- RDS Graviton current savings + , CASE WHEN (adjusted_processor = 'Graviton') AND + ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonRDS') AND + (purchase_option = 'OnDemand') AND + (database_engine IN ('Aurora MySQL', 'Aurora PostgreSQL', 'MariaDB', 'PostgreSQL')) THEN (amortized_cost / 9E-1) * 1E-1 + ELSE 0 END "rds_graviton_current_savings" + -- ElastiCache Graviton current savings + , CASE WHEN (adjusted_processor = 'Graviton') AND + ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AmazonElastiCache') THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "elasticache_graviton_current_savings" + -- AOS Graviton current saving + , CASE WHEN ("charge_type" = 'Usage') AND + ("product_code" = 'AmazonES') AND + (adjusted_processor = 'Graviton') THEN (amortized_cost / 9.5E-1) * 5E-2 + ELSE 0 END "opensearch_graviton_current_savings" + -- Lambda Graviton current saving + , CASE WHEN ("charge_type" LIKE '%Usage%') AND + ("product_code" = 'AWSLambda') AND + (adjusted_processor = 'Graviton') THEN (amortized_cost / 8E-1) 2E-1 + ELSE 0 END "lambda_graviton_current_savings" + --< 0 THEN 'in use' ELSE 'not in use' END AS s3_analytics_in_use , CASE WHEN "s3_intelligent-tiering_storage_usage_quantity" > 0 THEN 'in use' ELSE 'not in use' END AS s3_int_in_use , s3_standard_storage_cost * s3_standard_savings AS s3_standard_storage_potential_savings + -->>SAVINGS: estimate for non-standard, currently lumped into one group from IT to Glacier, based on the current KPI method for potential + , (("s3_standard-ia_storage_cost" + + "s3_onezone-ia_storage_cost" + + "s3_intelligent-tiering_storage_cost" + + s3_glacier_instant_retrieval_storage_cost + + s3_glacier_flexible_retrieval_storage_cost + + s3_glacier_deep_archive_storage_storage_cost) / (1 - s3_standard_savings)) * s3_standard_savings s3_storage_current_savings + --<>SAVINGS: added fields for new chart +, coalesce(ebs_all.gp3_current_savings, 0) gp3_current_savings +, coalesce(s3_all.s3_storage_current_savings, 0) s3_storage_current_savings +, coalesce(instance_all.ec2_graviton_current_savings, 0) ec2_graviton_current_savings +, coalesce(instance_all.ec2_amd_current_savings, 0) ec2_amd_current_savings +, coalesce(instance_all.ec2_spot_current_savings, 0) ec2_spot_current_savings +, coalesce(instance_all.ec2_latest_generation_current_savings, 0) ec2_latest_generation_current_savings +, coalesce(instance_all.rds_graviton_current_savings, 0) rds_graviton_current_savings +, coalesce(instance_all.elasticache_graviton_current_savings, 0) elasticache_graviton_current_savings +, coalesce(instance_all.opensearch_graviton_current_savings, 0) opensearch_graviton_current_savings +, coalesce(instance_all.lambda_graviton_current_savings, 0) lambda_graviton_current_savings +, (coalesce(ebs_all.gp3_current_savings, 0) ++ coalesce(s3_all.s3_storage_current_savings, 0) ++ coalesce(instance_all.ec2_graviton_current_savings, 0) ++ coalesce(instance_all.ec2_amd_current_savings, 0) ++ coalesce(instance_all.ec2_spot_current_savings, 0) ++ coalesce(instance_all.ec2_latest_generation_current_savings, 0) ++ coalesce(instance_all.rds_graviton_current_savings, 0) ++ coalesce(instance_all.elasticache_graviton_current_savings, 0) ++ coalesce(instance_all.opensearch_graviton_current_savings, 0) ++ coalesce(instance_all.lambda_graviton_current_savings, 0) ++ coalesce(instance_all.rds_commit_savings, 0) ++ coalesce(instance_all.elasticache_commit_savings, 0) ++ coalesce(instance_all.compute_commit_savings, 0) ++ coalesce(instance_all.opensearch_commit_savings, 0) ++ coalesce(instance_all.redshift_commit_savings, 0) ++ coalesce(instance_all.dynamodb_commit_savings, 0) ++ coalesce(instance_all.sagemaker_commit_savings, 0)) total_current_savings +--<>SAVINGS: instance rollup + , "sum"("ec2_graviton_current_savings") "ec2_graviton_current_savings" + , "sum"("ec2_amd_current_savings") "ec2_amd_current_savings" + , "sum"("ec2_spot_current_savings") "ec2_spot_current_savings" + , "sum"("ec2_latest_generation_current_savings") "ec2_latest_generation_current_savings" + , "sum"("rds_graviton_current_savings") "rds_graviton_current_savings" + , "sum"("elasticache_graviton_current_savings") "elasticache_graviton_current_savings" + , "sum"("opensearch_graviton_current_savings") "opensearch_graviton_current_savings" + , "sum"("lambda_graviton_current_savings") "lambda_graviton_current_savings" +--<>SAVINGS: ebs rollup + , "sum"("gp3_current_savings") "gp3_current_savings" +--<>SAVINGS: s3 rollup + , "sum"("s3_storage_current_savings") "s3_storage_current_savings" +--<