天道酬勤,学无止境

madlib

如何在 PostgreSQL 中快速将二维数组取消嵌套到一维数组中?(How to unnest a 2d array into a 1d array quickly in PostgreSQL?)

问题 我有一个非常大的数组,我用 Apache Madlib 计算了它,我想对该二维数组中的每个单个数组应用一个操作。 我找到了可以帮助我从这个相关答案中解开它的代码。 然而,代码在这个非常大的二维数组(150,000+ 一维浮点数组)上的速度非常慢。 虽然unnest()只需几秒钟即可运行,即使等待几分钟后代码仍未完成。 当然,必须有一种更快的方法来将大型二维数组解嵌为较小的一维数组吗? 如果该解决方案使用 Apache Madlib,则加分点。 我确实在名为deconstruct_2d_array的文档中找到了一个线索,但是,当我尝试在矩阵上调用该函数时,它失败并出现以下错误: 错误:函数“deconstruct_2d_array(double precision[])”:类型转换无效。 内部复合类型比后端复合类型具有更多元素。 回答1 您在我的旧答案中找到的函数不适用于大数组。 我从来没有想过你的大小的数组,它可能应该是一个集合(一个表)。 尽管如此,这个 plpgsql 函数替换了引用答案中的函数。 需要 Postgres 9.1 或更高版本。 CREATE OR REPLACE FUNCTION unnest_2d_1d(ANYARRAY, OUT a ANYARRAY) RETURNS SETOF ANYARRAY AS $func$ BEGIN FOREACH a

2021-06-26 23:38:03    分类:技术分享    sql   arrays   performance   postgresql   madlib

How to unnest a 2d array into a 1d array quickly in PostgreSQL?

I have a really large array that have I computed with Apache Madlib and I would like to apply an operation to each single array in that 2d array. I have found code that can help me unnest it from this related answer. However, the code is miserably slow on this really large 2d array (150,000+ 1d float arrays). While unnest() only takes a few seconds to run, even after waiting for several minutes the code has not completed. Surely, there must be a faster way to unnest the large 2d array into smaller 1d arrays? Bonus point if that solution uses Apache Madlib. I did find one lead buried in the

2021-04-30 18:18:09    分类:问答    sql   arrays   performance   postgresql   madlib