我有一种情况,编写 PL/pgSQL 函数解决方案既慢又麻烦,而且可能不可能,因为我需要许多 python 模块。这就是为什么我想选择 VAEX 或 DASK。
计划:将 SQL 表转储到文件中,然后应用 func。
伪代码:
def olap(ary,tbl_field):
return set(ary) & set(tbl_field)
然后对于 FILE 循环中的每一行并找到最高的重叠。
伪代码:
for row in FILE:
max_olap = select olap(row.fieldX::int[], F.fieldX::int[]) as score
from FILE as F
order by score desc limit 1
res.append(row.id, max_olap)
save2SQLTable(res) #or file first
#or better yet insert during the loop, unless it breaks parallization
即循环内循环。
我说的是约 100 万行。
olap()
功能仅用于说明。真正的乐趣要复杂得多,但仍然接受两个数组作为参数。
哪种工具更适合这种情况?
如何将 SQL 表转储到 numpy|panda|?什么格式适合可变数组字段?
我想使用并行化功能?
完成后,我必须将结果导入 SQL 表。
过程任何部分的任何示例。
到目前为止我发现了什么:
DASK 似乎有一些 func sql_to_table()。这有点令人困惑。看来我必须先在内存中创建 DF 然后保存到文件。
有点难以理解 .apply() 用户函数是如何工作的,似乎两个工具都支持它