xquery - XQuery:过滤大量数据
问题描述
我确实有一个包含 150k 条目的 xml 文件(大约 3gb)。示例条目:
<entry>
.... lots of data here ....
<customer-id>1</customer-id>
</entry>
这些条目中的每一个都有一个特定的客户 ID。我必须根据黑名单(3k id 的序列)fe 过滤数据集
let $blacklist-customers := ('0',
'1',
'2',
'3',
....
'3000')
我目前正在检查每个条目中的客户 ID 是否包含在黑名单中,如下所示:
for $entry in //entry
let $customer-id:= $entry//customer-id
let $inblacklist := $blacklist = //$customer-id
return if (not($inblacklist)) then $entry else ()
如果不包括在内,它将被退回。
按照这种方法,在大约 2 分钟的处理后,我确实得到了主内存不足的错误。
我试图调整代码,以便我先分组,并且只询问每个组是否包含在黑名单中。但是我仍然会以这种方式得到主内存不足的错误。
for $entry in //entry
let $customer-id:= $entry//customer-id
group by $customer-id
let $inblacklist := $blacklist = //$customer-id
return if (not($inblacklist)) then $entry else ()
处理发生在basex中。主内存不足错误的原因是什么?解决此问题的最佳方法是什么?如果我遵循第二种方法,对数据进行分组是否会减少所需的迭代次数?
解决方案
推荐阅读
- python - Selenium Python一次处理多个webdriver
- javascript - 使用特定对象动态插入字符串
- sql - 计算 Redshift 中文本出现的次数
- unit-testing - 如何使用相互依赖的接口方法模拟结构
- java - 继续在 Android 的 Firebase 数据库中的现有数组中插入新数据
- python - OOP,Python:如何(在架构上正确)实现不同的文本文件解析器?
- html - Canvas、Iframe 和 Div 的 Z-index 问题
- html - 使用 Angular 日期管道在 ngModel 中格式化日期时间
- c - 为什么我不能重新分配一个完全初始化的数组?
- maven - 如何使用 GitHub Actions 安装由 GitHub Packages 托管的包