如何在 PostgreSQL 中快速将二维数组取消嵌套到一维数组中?

2023-12-09

我有一个使用 Apache Madlib 计算的非常大的数组,我想对该二维数组中的每个数组应用一个操作。

我找到了可以帮助我解除嵌套的代码这个相关答案。然而,在这个非常大的 2d 数组(150,000+ 1d float 数组)上,代码非常慢。尽管unnest()运行只需要几秒钟,即使等待了几分钟代码也还没有完成。

当然,必须有一种更快的方法将大型二维数组解除嵌套到较小的一维数组中?如果该解决方案使用 Apache Madlib,则加分。我确实在文档中发现了一条埋藏在名为deconstruct_2d_array但是,当我尝试在矩阵上调用该函数时,它失败并出现以下错误:

错误:函数“deconstruct_2d_array(双精度[])”:无效 类型转换。内部复合类型的元素多于 后端复合类型。


您在我的旧答案中找到的函数对于大数组来说不能很好地扩展。我从来没有想过你的数组大小,它可能应该是一个集合(一个表)。

尽管如此,这个 PL/pgSQL 函数可以替代参考答案。需要 Postgres 9.1 或更高版本。

CREATE OR REPLACE FUNCTION unnest_2d_1d(ANYARRAY, OUT a ANYARRAY)
  RETURNS SETOF ANYARRAY
  LANGUAGE plpgsql IMMUTABLE STRICT AS
$func$
BEGIN
   FOREACH a SLICE 1 IN ARRAY $1 LOOP
      RETURN NEXT;
   END LOOP;
END
$func$;

速度提高 40 倍在我对 Postgres 9.6 中的大型二维数组进行的测试中。

STRICT以避免 NULL 输入的异常(如评论者:IamIC):

错误:FOREACH 表达式不能为空

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

如何在 PostgreSQL 中快速将二维数组取消嵌套到一维数组中? 的相关文章

  • 如何使 Postgres Copy 忽略大 txt 文件的第一行

    我有一个相当大的 txt 文件 9gb 我想将此 txt 文件加载到 postgres 中 第一行是标题 后面是所有数据 如果我直接 postgres COPY 数据 标头将导致数据类型与我的 postgres 表不匹配的错误 因此我需要以
  • 对于 IN 列表中的缺失值返回 NULL

    我有一个这样的表 id val 1 abc 2 def 5 xyz 6 foo 8 bar 和一个像这样的查询 SELECT id val FROM tab WHERE id IN 1 2 3 4 5 返回 id val 1 abc 2 d
  • 将范围传递给 Excel 用户定义函数并将其分配给数组

    我在尝试着 通过两个范围 多行单列 Excel 2007 中的用户定义函数 然后将其分配给一个数组进行处理 谁能告诉我如何将这样的范围分配给数组 范围不是恒定的 因为我在不同的单元格中使用 UDF 来处理不同的数据 所以我不能使用 e g
  • JavaScript 中 + 运算符和 concat() 方法有什么区别

    The 加 运算符 and String concat 方法给出相同的结果 加 运算符 str1 str2 字符串 concat 方法 str1 concat str2 另外 它写在w3学校 http www w3schools com j
  • postgresql to_json() 函数转义所有双引号字符

    我编写了一个 plpgsql 脚本 它在字符串中生成一个 json 对象数组 但是在我使用 to json 方法将带有该字符串的变量传递给它之后 它返回一个带双引号的结果 并且每个双引号字符都被转义 但我需要原样的字符串 jsonResul
  • 如何使用 ActiveRecord 列出所有数据库

    我希望能够使用 ActiveRecord 列出所有数据库 因此 我需要在终端中使用与以下命令等效的 ActiveRecord psql host 192 168 0 100 port 5432 username postgres list
  • ORACLE SQL 中的 MAX()

    我有一个表 存储已完成的维护任务的记录列表以及完成的日期和时间 我正在尝试执行子查询来提取具有最新日期的每个任务的记录 我的SQL语句是 SELECT ENGINEERING COMPLIANCE EO AS EO ENGINEERING
  • 在 Actionscript-3 中优化 2D Flash 游戏的动态背景引擎

    编辑2 根据缺乏回复来判断 我开始怀疑我的问题是否足够清楚 请告诉我是否需要详细说明 注意 请参阅底部以获取代码更新 简短介绍 我正在用 ActionScript 编写一个二维 Flash 空间游戏 宇宙无限大 由于这个特性 背景必须动态渲
  • 使用数组创建单链表时的警告

    include
  • 字节数组到 Excel 工作簿

    我正在尝试将字节数组转换为 Excel 工作簿 当我这样做时 Response BinaryWrite renderedBytes 它工作正常并且文件符合预期 但是当我尝试用我在网上找到的这个来做到这一点时 private Object B
  • postgresql 中的咨询锁超时

    我正在从 ORACLE 迁移 目前我正在尝试移植此呼叫 lkstat DBMS LOCK REQUEST lkhndl DBMS LOCK X MODE lktimeout true 这个功能 http docs oracle com cd
  • 如何将 SQL 查询结果导出为 csv 样式格式的字符串,然后将其保存到 Oracle 中的 clob 中?

    我有以下问题 我有一个表 Source Data 实际上 有很多不同的源表 我需要将其中的一些数据导出到 Result Table 中 对于每个源表 我都有一些返回数据的 sql 并且需要将其转换为类似 csv 的字符串 例如 Source
  • 在 SQLite 数据库的特定位置插入一行

    我正在 SQLite Manager 中创建数据库 并且错误地忘记提及一行 现在 我想在中间手动添加一行 在其下方 其余的自动增量键应自动增加 1 我希望我的问题很清楚 Thanks 您不应该关心键值 只需在末尾附加行即可 如果您确实需要这
  • 是否可以将普通表与临时表进行左外连接?

    我创建 SQL Server 查询并有一个包含记录的普通表 另一方面有一个包含记录的临时表 该表不为空 并且所有字段都没有任何冲突 加入 可以连接这两个不同类型的表吗 SELECT NormalTable Entityname FROM N
  • 访问php数组内部[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个像这样的数组打印 array 2 systems gt array 5 1 gt string 1 1111 2
  • MySQL Workbench:如何将 mysql 数据库导出到 .sql 文件?

    我需要将 mysql 工作台中的数据库导出到文件 sql 该怎么办 在 MySql Workbench 版本 8 0 中 您只需按照以下步骤操作即可 Go to Server tab Go to 数据库导出 这会打开类似这样的东西 在中选择
  • 从关键字后的文本中提取字符串

    我想从 SQL 字段中关键字后面的文本中提取内容 我有一个名为Description在表中 该字段的内容是 asdasf 关键字 狗 aeee 关键字 猫 ffffaa 关键词 狼 我想提取并保存 关键字 之后的文本 在本例中dog cat
  • 如何在 Hibernate 中使用 SELECT 进行 INSERT

    我需要在休眠中实现以下请求 insert into my table max column values select max id from special table where 如何在休眠中使用注释来做到这一点 Special tab
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • Knex 中的表的别名

    我有一个 SQL 查询两次引用同一个表 并且我需要将该表别名为两个单独的别名 我不太清楚如何用 Knex 来编写它 有一个 单词 表和一个 用户 表 Words 表有两个外键 author id 和 winner id 引用 Users 表

随机推荐

  • Perl 相当于 (Postgresql BETWEEN 运算符?

    有这样的事吗 相当于a lt expr lt b 或者用 SQL 术语来说expr BETWEEN a AND b where expr只评估一次 或者只是要求这个变得愚蠢 在 Perl 中 有多种方法可以做到这一点 if a lt x a
  • 如何在设定的时间后自动保存并退出工作表? (Excel VBA)

    如果超过 5 分钟没有任何活动 是否有办法让打开的工作表自行关闭 举例来说 我在一张工作表上工作了一段时间 然后打开该工作表走开 20 分钟 网络上的某人需要访问该工作表 但无法访问 因为我正在其中 我希望这样在我离开办公桌超过 5 分钟后
  • 将函数从递归转换为迭代

    我写的这个函数非常慢 因为 php 不能很好地处理递归 我正在尝试将其转换为 while 循环 但我无法理解如何做到这一点 谁能给我一些建议吗 public function findRoute curLoc distanceSoFar e
  • 验证输入框中的用户输入

    当我运行以下代码片段并输入可接受的值时 我得到了所需的结果 do while len strselect 0 or strselect lt gt 1 or strselect lt gt 2 or strselect lt gt 3 st
  • 如何使用 node.js(Firefox 或 Chrome)在 Heroku 上运行 Selenium-Webdriver

    我想在 Heroku 上使用 Selenium 和 Firefox 或其他能够显示视频的浏览器 不幸的是 PhantomJS 不起作用 因为浏览器无法播放视频 我已经通过使用这些构建包在 Firefox 中进行了尝试 https githu
  • 如何使用 Python 中的 Plotly Express 向每个条形图添加可点击的链接?

    所以基本上 我希望用户在单击条形图中的条形时被定向到特定网站 但我不知道该怎么做 也找不到这方面的资源 您可以在以下位置使用 HTML注释 import pandas as pd import plotly express as px df
  • scipy.sparse.coo_matrix 如何快速找到全零列,填充 1 并标准化

    对于矩阵 我想找到全为零的列并用 1 填充 然后按列对矩阵进行归一化 我知道如何使用 np arrays 做到这一点 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 V 0 1 0 0 0
  • 检索作为 POST 响应提供的重定向 URL 中的 OAuth 代码

    这里是Python新手 所以我确信这是一个微不足道的挑战 使用 Requests 模块向 Instagram API 发出 POST 请求 以获得稍后在 OAuth 过程中用于获取访问令牌的代码 该代码通常在客户端访问 因为它在重定向 UR
  • 使用 pypng 将 24 位 PNG 文件转换为 8 位颜色索引图像

    我正在尝试编写一个 python 脚本 该脚本接受标准 24 位 png 并将其转换为 8 位 png 以实现更好的压缩 看起来 pypng 可以做到这一点 但我不太清楚如何使用它 图像处理对我来说是一个新领域 所以这可能看起来很愚蠢 我目
  • WF4.5 不编译并行 C# 工作流程

    我有一个 IIS 托管的 xamlx 工作流程 其中包含 c 表达式 我试图在并行版本控制中运行 我完全喜欢这篇文章 工作流服务的并行版本控制 工作流的新实例按预期工作 但是当我调用工作流的先前版本的实例时 它会引发错误 告诉我它尚未编译
  • 使用reactjs中的props更改更新状态值

    我有一个模式组件 应该在 setState 更改时调用 但由于某种原因它没有更新 在第一个文件中 我在渲染中设置以下内容
  • 致命错误:调用未定义的函数 mysql_connect() [重复]

    这个问题在这里已经有答案了 我收到此错误 Fatal error Call to undefined function mysql connect in var www html test1 php on line 8 对于以下代码
  • 如何缓存 angularjs 部分?

    在 angularjs 生产中缓存部分的最简单 现代的方法是什么 目前代码如下 routeProvider when error templateUrl partials error html controller ErrorCtrl 其中
  • Python 使用正则表达式解析 HTML

    我正在尝试浏览网站的 HTML 并解析它以查找班级的最大注册人数 我尝试检查 HTML 文件的每一行中的子字符串 但这会尝试解析错误的行 所以我现在使用正则表达式 我有 t t t t t t t td class odd 0 9 0 9
  • Django:注释每个对象的重复值数量的计数

    我有一个名为 Product 的模型 如下所示 产品可以具有相同的字段 bc sku class Product models Model bc sku models IntegerField null True blank True pr
  • 图书馆?静止的?动态的?还是框架?项目在另一个项目中

    我有一个现有的 iOS 应用程序 并且想要添加大量代码 这些代码是我作为另一个项目开发的 只是为了便于测试 新块基本上涉及将图像保存到各种共享服务等 因为共享代码需要大量测试和未来更新 所以我想知道将该代码块合并到我现有的应用程序中的最佳方
  • Code First 和 EF 5.0 不加载导航属性

    我正在尝试通过 Code First 和 EF 5 0 加载导航属性子对象加载为 null 下面是代码 Table ls roles public class Role Required Key public int RoleID get
  • 如何将 Double[] 转换为 double[]?

    我正在实现一个接口 其功能类似于可以包含某种类型的对象的表 该接口指定了以下功能 double getDoubles int columnIndex 让我困惑的是 在我的实现中 我将表数据存储在二维中Object array Object
  • 如何使用 Python 创建 Word 文档? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想使用 Python 创建 Word 文档 但是 我想尽可能多地重复使用现有的文档创建代码 我目前正在使用 XSLT 生成 HTML 文件以编程方
  • 如何在 PostgreSQL 中快速将二维数组取消嵌套到一维数组中?

    我有一个使用 Apache Madlib 计算的非常大的数组 我想对该二维数组中的每个数组应用一个操作 我找到了可以帮助我解除嵌套的代码这个相关答案 然而 在这个非常大的 2d 数组 150 000 1d float 数组 上 代码非常慢