如何从 DynamoDB 获取每个主分区键的最新数据?

2023-12-26

我在 dynamodb 中有一张表。它存储帐户统计信息。帐户统计数据可能每天会更新多次。所以表记录可能如下所示:

+------------+--------------+-------+-------+
| 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是主分区键。record_id是主排序键

我如何才能只获取每个的最新记录account_id是?所以从上面的例子我期望得到:

+------------+--------------+-------+-------+
| 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     |
+------------+--------------+-------+-------+

该数据可方便地用于报告目的。


如果您知道以下列表,则可以非常有效地完成此操作account_id是您存储在表中的。

在这种情况下,您需要做的就是逐一查询主键,并使用以下命令对值进行排序ScanIndexForward=False并将结果限制为 1 项,使用Limit=1.

这是Python中的代码

import boto3
import json

client = boto3.client('dynamodb')

account_ids = ['1', '2', '3']
results = []

for aid in account_ids:
    result = client.query(
        TableName='test-table',
        KeyConditionExpression="#aid = :aid",
        ExpressionAttributeNames={
            '#aid': 'account_id'
        },
        ExpressionAttributeValues={
            ':aid': {
                'N': aid
            }
        },
        ScanIndexForward=False,
        Limit=1,
    )
    results.append(result['Items'])

print(json.dumps(results, indent=2))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 DynamoDB 获取每个主分区键的最新数据? 的相关文章

随机推荐

  • 使用 Pandas 从 CSV 读取整数时如何优雅地回退到“NaN”值?

    使用时read csv对于 Pandas 如果我想要将给定的列转换为类型 格式错误的值将中断整个操作 而不会指示有问题的值 例如 运行如下内容 import pandas as pd import numpy as np df pd rea
  • 将字符串作为条件求值 Java

    我必须从 D B 检索一组列值并将其作为条件进行检查 例如 我会有像这样的字符串 value gt 2 4 lt value lt 6 在 D B 列中 值是一直被比较的值 我将在代码中声明一个变量值 并且我应该评估这个条件 int val
  • GoLand 的运行/调试配置窗口中“Go 工具参数”的“-i”选项是什么?

    What is the i option for Go tool arguments in GoLand s Run Debug Configurations window 取自go help build The i flag instal
  • 关闭弹出窗口时刷新父页面

    我有一个父页面 我在其中添加了搜索功能 像下面这样 function FunClick StrPriCaption var StrPriHTML if StrPriCaption AdvSearch document getElementB
  • 画布工具提示出现在画布之外?

    我使用 KineticJS 和 D3 js 制作了以下内容 我使用 KineticJS 让我在用户将鼠标悬停在其中一个点上时弹出工具提示 但是 由于画布的边界 工具提示看起来被切断 有什么办法可以让它出现而不被剪掉吗 整个代码本身非常庞大
  • Azure SQL - 用户登录失败

    我正在使用免费的 azure 订阅 设置了 SQL 服务器 v12 并在其上创建了数据库 但是 我似乎无法使用在 SQL Server 凭据期间出现提示时设置的服务器管理凭据登录 管理工作室回报 Cannot connect to
  • 本地文件的 NSURLThumbnailDictionaryKey 为空

    我想获取必须在我的应用程序中显示的文件的缩略图 我在这里使用 NSURL NSDictionary thumbnails nil BOOL success fileURL getResourceValue thumbnails forKey
  • 套接字输入和输出的单独线程

    我被分配去解决多线程 java 服务器的一些性能和随机崩溃问题 尽管线程和线程安全对我来说并不是真正的新主题 但我发现设计一个新的多线程应用程序可能比尝试调整一些遗留代码困难一半 我浏览了一些著名的书籍来寻找答案 但奇怪的是 只要我阅读并分
  • 具有多维数组的 tf.SequenceExample

    在 Tensorflow 中 我想将多维数组保存到 TFRecord 例如 1 2 3 1 2 3 2 1 由于我试图解决的任务是连续的 因此我尝试使用 Tensorflowtf train SequenceExample 当写入数据时 我
  • 如何在 Jetpack Compose 中禁用和启用 LazyColumn/LazyRow 中的滚动?

    我想以编程方式动态启用和禁用滚动LazyColumn 好像没有相关功能LazyListState或相关参数LazyColumn本身 我怎样才能在 Compose 中实现这一目标 Since 1 2 0 userScrollEnabled范围
  • 如何从 QVBoxLayout 中删除(子)布局项?

    我找到了很多关于从 QVBoxLayout 中删除小部件的答案 但我没有找到任何有关删除布局的答案 我知道我可以将我的子布局放入 QWidget 中 我只是想了解更多 layout QtGui QVBoxLayout item in lay
  • 使用 OpenCV 读取 mp4 (Go Pro) 视频

    在 Visual Studio 2013 中使用带有 C 接口的 OpenCV 时 我在读取某些视频文件时遇到困难 我已经能够读取其他视频格式 因此相信我的代码没问题 问题视频文件是使用 Go Pro 拍摄的 格式为 mp4 我可以在使用
  • 为什么我的表单无法在 Internet Explorer 9 中上传文件?

    欢迎收看第 32 342 343 集 为什么 Internet Explorer 这么糟糕 我看到很多报道称 IE9 在上传文件方面表现不佳 显然 它有很多关于何时有效或无效的警告 如果有人有明确的列表 我很乐意看到它 然而 我发现的大多数
  • Mixpanel 人物个人资料头像图片

    我已经在互联网上搜索了此问题的解决方案 但无济于事 是否可以将我们用户的个人资料图片设置为 Mixpanel 人员报告中的个人资料图片 我尝试在声明 Mixpanel 用户属性的方法中调用我们的用户图片对象 但它没有更新照片 这里有最佳实践
  • Mean.js req.isAuthenticated 显示失败?

    我已经下载了meanjs 电子邮件受保护 cdn cgi l email protection我使用了两台服务器作为前端 我使用了 Angular 和 ionic 它在 localhost 3000 中运行 对于后端 我使用了meanjs
  • 从数组循环渲染组件

    在我的 app component ts 中 我有一个包含组件标签的数组 compData app component one app component two app component three 然后在我的 app componen
  • 链接:致命错误 LNK1104:无法打开文件“D:\...\MyProj.exe”

    使用 Visual Studio 2010 当我在短时间内构建 运行我的应用程序时 经常会收到以下错误 如果我等一两分钟再试一次就可以了 Unlocker http www emptyloop com unlocker 声称没有句柄锁定可执
  • 如何检查nodejs中的标头?

    这是运行良好的实际代码 但我想检查我的标头是否很好地传输到我的 api var request require request var express require express var router express Router GE
  • 多人网络游戏中的同步?

    最近我一直在开发一个多人网络应用程序 我已经使用 Bonjour 服务和 NSStream 对象成功实现了客户端服务器模型 双向通信已成功完成 我面临的问题是 运行该应用程序的两个设备通过本地 wifi 连接 从客户端向服务器发送消息时存在
  • 如何从 DynamoDB 获取每个主分区键的最新数据?

    我在 dynamodb 中有一张表 它存储帐户统计信息 帐户统计数据可能每天会更新多次 所以表记录可能如下所示 account id record id views stars 3 2019 03 16 1 29 3 2 2019 03 1