es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener los datos más recientes de DynamoDB para cada clave de partición primaria en PartiQL.

Tengo una tabla en DynamoDB. Almacena estadísticas de cuenta. Es posible que las estadísticas de la cuenta se actualicen varias veces al día. Por lo tanto, los registros de la tabla pueden verse así:

+————+————–+——-+——-+
| account_id | record_id | views | stars |
+————+————–+——-+——-+
| 3 | 2019/03/16/1 | 29 | 3 |
+————+————–+——-+——-+
| 2 | 2019/03/16/2 | 130 | 21 |
+————+————–+——-+——-+
| 1 | 2019/03/16/3 | 12 | 2 |
+————+————–+——-+——-+
| 2 | 2019/03/16/1 | 57 | 12 |
+————+————–+——-+——-+
| 1 | 2019/03/16/2 | 8 | 2 |
+————+————–+——-+——-+
| 1 | 2019/03/16/1 | 3 | 0 |
+————+————–+——-+——-+

account_id es una clave de partición principal. record_id es una clave de clasificación principal.

¿Cómo puedo obtener solo los últimos registros para cada uno de los account_ids? Entonces, a partir del ejemplo anterior, espero obtener:

+————+————–+——-+——-+
| account_id | record_id | views | stars |
+————+————–+——-+——-+
| 3 | 2019/03/16/1 | 29 | 3 |
+————+————–+——-+——-+
| 2 | 2019/03/16/2 | 130 | 21 |
+————+————–+——-+——-+
| 1 | 2019/03/16/3 | 12 | 2 |
+————+————–+——-+——-+

Estos datos son convenientes para fines de informes.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener solo los registros más recientes de cada account_id, puede utilizar la siguiente consulta en Amazon DynamoDB con PartiQL:

    SELECT * FROM (
      SELECT account_id, MAX(record_id) AS max_record_id
      FROM account_stats
      GROUP BY account_id
    ) INNER JOIN account_stats
    ON account_stats.account_id = max_records.account_id AND account_stats.record_id = max_records.max_record_id
    

    Esta consulta primero agrupa los registros por account_id y encuentra el record_id máximo para cada grupo mediante la función MAX. Luego une los resultados con la tabla original de account_stats para recuperar los datos de registro correspondientes para cada par de account_id y max_record_id.

    Esta consulta devolverá el registro más reciente para cada account_id, como se muestra en la tabla de resultados esperados.

Comments are closed.