Je souhaite interroger mon utilisation des unités de traitement Amazon Redshift (RPU) afin de pouvoir calculer les informations de facturation pour Redshift Serverless.
Brève description
Vous engagez des coûts en fonction des charges de travail que vous exécutez. Les charges de travail sont mesurées en heures RPU et sont comptabilisées à la seconde avec une charge minimale d’une minute. Pour plus d’informations, consultez la section Facturation pour Amazon Redshift Serverless.
Résolution
Pour obtenir des informations sur vos coûts, utilisez un outil client ou un éditeur de requêtes connecté à votre compte Amazon Redshift Serverless pour exécuter les requêtes suivantes. Pour plus d'informations, consultez la section Connexion à Amazon Redshift Serverless.
Remarque : dans les requêtes suivantes, remplacez AWS_REGION_PRICE par le prix par heure RPU pour votre région AWS. Pour plus d’informations sur les coûts du RPU, consultez Amazon Redshift Serverless sur la page de tarification d'Amazon Redshift.
Les résultats des coûts que vous recevez des requêtes suivantes sont des approximations. Les résultats peuvent varier par rapport au coût Amazon Redshift sans serveur affiché dans la console de facturation AWS.
Coût par jour
Pour déterminer le coût que vous avez engagé chaque jour au cours des 7 derniers jours, exécutez la requête suivante :
SELECT date_trunc('d',start_time) "Day",
(
sum(charged_seconds)/3600::double precision
) * AWS_REGION_PRICE as cost_incurred
FROM sys_serverless_usage
GROUP BY 1
ORDER BY 1;
Remarque : Amazon Redshift sans serveur ne stocke que 5 à 7 jours de données historiques. Il est possible que vous ne puissiez pas récupérer des données datant de plus de 7 jours.
Exemple de résultat :
day | cost_incurred($)
--------------------+--------------------------
2024-05-27 00:00:00 | 1.536
2024-05-29 00:00:00 | 59.903999999999996
2024-05-30 00:00:00 | 13.824
2024-05-31 00:00:00 | 0.768
Utilisation du RPU et coût pour un jour donné
Pour vérifier l’utilisation de la RPU et le coût total de la veille, exécutez la requête suivante. Pour interroger d'autres jours, remplacez le -1 dans dateadd(day,-1,sysdate) par un autre nombre négatif :
SELECT date_trunc('d',start_time) as "day",
(
sum(charged_seconds)/3600::double precision
) * <AWS_REGION_PRICE> as cost_incurred,
min(compute_capacity) min_rpu,
max(compute_capacity) max_rpu,
avg(compute_capacity) avg_rpu,
max(data_storage) as max_storage
FROM sys_serverless_usage
WHERE "day" = date_trunc('d', dateadd(day,-1,sysdate))
GROUP BY 1
ORDER BY 1
Exemple de sortie :
day | cost_incurred ($) | min_rpu | max_rpu | avg_rpu | max_storage
---------------------+-------------------+------------+-----------+-------------+-------------
2024-05-30 00:00:00 | 13.824 | 0 | 128 | 92.16 | 3166
Utilisation du RPU et coût par requête
Pour obtenir l’utilisation et le coût approximatifs du RPU pour chaque requête que vous avez exécutée à une date précise, exécutez la requête suivante :
with
daily_cost as (
select
trunc(start_time) "YYY-MM-DD",
max(compute_capacity) max_compute_capacity,
(sum(charged_seconds) / 3600:: double precision) * <AWS_REGION_PRICE> as daily_cost
from
sys_serverless_usage
group by
1
),
daily_queries as (
SELECT
*,
elapsed_time / total_time_for_day:: double precision as perc
from
(
SELECT
query_id,
user_id,
query_text,
trunc(start_time) "Day",
elapsed_time,
sum(elapsed_time) over (partition by trunc(start_time)) total_time_for_day
FROM
sys_query_history
)
)
select
q.*,
c.daily_cost * q.perc as query_cost,
c.*
from
daily_cost c
join daily_queries q using ("Day") where Day ='<start_date>';
**Remarque :**Remplacez YYYY-MM-DD par la date précise à laquelle vous souhaitez interroger. La date doit être au format YYYY-MM-DD.
Exemple de sortie :
query_id| user_id | day | elapsed_time | total_time_for_day | perc | query_cost | day | max_compute_capacity | daily_cost | query_text
--------+---------+------------+--------------+--------------------+------------------------+------------------------+------------+----------------------+------------------+--------------------------------------+
5240721 | 101 | 2024-05-30 | 174646 | 22720291 | 0.00768678534971229 | 0.10921384624871222 | 2024-05-30 | 128 | 14.208 | SELECT table_name as view_name, table_type, schema_name FROM SVV_ALL_TABLES WHERE database_name='dev' AND schema_name='lakeformation_schema' and table_type IN ('VIEW');
5240073 | 101 | 2024-05-30 | 765 | 22720291 | 0.00003367034339480951 | 0.00047838823895345354 | 2024-05-30 | 128 | 14.208 | select oid, lanname from pg_language order by lanname asc
Important : la sortie est une approximation. La requête détermine le coût total encouru à la date et répartit le coût entre toutes les requêtes lancées en fonction du temps de requête écoulé.
Informations connexes
SYS_SERVERLESS_USAGE
SYS_QUERY_HISTORY