当前位置: 首页 > 知识库问答 >
问题:

如何正确使用日期过滤器aws Dynamodb boto3

寿翰飞
2023-03-14

我想在dynamodb中检索表中的项。然后,我将把这个数据添加到大查询中表的最后一个数据下面。

client = boto3.client('dynamodb')
table = dynamodb.Table('table')
response = table.scan(FilterExpression=Attr('created_at').gt(max_date_of_the_table_in_big_query))

#first part
data = response['Items']

#second part
while response.get('LastEvaluatedKey'):
    response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'])
    data.extend(response['Items'])

df=pd.DataFrame(data)
df=df[['query','created_at','result_count','id','isfuzy']]

# load df to big query
.....

日期过滤器工作正常,但在while循环会话(第二部分)中,代码检索所有项。在第一部分之后,我有100行。但是在这个代码之后

while response.get('LastEvaluatedKey'):
    response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'])
    data.extend(response['Items'])

我有50万行。我只能使用第一部分。但我知道有1 mb的限制,这就是我使用第二部分的原因。如何获取给定日期范围内的数据

共有1个答案

景鹏云
2023-03-14

您的第一次扫描API调用有一个FilterExpression集,它应用了您的数据过滤器:

response = table.scan(FilterExpression=Attr('created_at').gt(max_date_of_the_table_in_big_query))

但是,第二次扫描API调用没有一组,因此没有过滤您的数据:

response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'])

将FilterExpression应用于两个调用:

while response.get('LastEvaluatedKey'):
    response = table.scan(
       ExclusiveStartKey=response['LastEvaluatedKey'], 
       FilterExpression=Attr('created_at').gt(max_date_of_the_table_in_big_query)    
    )
    data.extend(response['Items'])
 类似资料:
  • 本文向大家介绍vue使用过滤器格式化日期,包括了vue使用过滤器格式化日期的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue使用过滤器格式化日期的具体代码,供大家参考,具体内容如下 案例要求 案例讲解 1、查看未过滤格式化的日期格式 2、设置模板函数format 接收日期值和日期格式 3、按照日期格式对日期进行拼接并返回值 4、将拼接好的日期显示在页面上 最终案例效果 代码 设置

  • 问题内容: 我有一个以毫秒为单位的UTC日期,我将该日期传递给Angular的日期过滤器以进行人工格式化。 很棒,除了在UTC中,而且日期过滤器认为它在当地时间。 我怎样才能告诉Angular这是UTC? 谢谢。 问题答案: 类似的问题在这里 我将重新发布我的回复并提出合并建议: 输出UTC似乎引起了一些混乱-人们似乎倾向于使用moment.js。 从此答案中借用,您可以执行以下操作(即,使用带有

  • 问题内容: 我想知道您的想法: 在会话期间,我必须获得与系统的所有连接。为了使这一过程自动化,我决定使用current_date%,因为current_date不是字符串,而是一个函数,因此该方法不起作用。 所以我的问题是,是否有人可以帮助我进行查询以获取当日所有连接的数量。 提前致谢! 我糟糕的代码: 问题答案: 最好的方法(从性能的角度来看)是使用如下逻辑: 并非所有数据库都支持日期的ISO

  • 问题内容: 这是模型: 我想在两个日期之间进行过滤,例如选择间隔18-30年的所有用户。 如何用SQLAlchemy实现它? 我想: 我知道这是不正确的,但是该怎么做正确呢? 问题答案: 实际上,除了错字之外,您的查询是正确的:您的过滤器排除了所有记录:您应该更改for ,反之亦然: 您也可以使用:

  • 目前,我已经知道如何从(时间戳)日期字段中筛选日期范围。这是一个简单的问题: 但是,当你对基于时间的范围感兴趣时,如何过滤日期,比如gte:“8:00:00”和lte:“10:00:00”?这有可能吗? 换句话说,我的要求是:如何让所有事件在本月(15-11-01/15-11-30)发生,但只能在上午8:00到10:00之间发生?