问题标签 [table-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
78 浏览

javascript - 如何在雪花中的 java 脚本 UDTF 中使用 DDL 语句

我正在尝试使用 DDL 语句,例如从 java 脚本 UDTF 中的表中选择列。我能够在普通 UDTF 中实现如下

从表中选择*(returntable());- 现在这会返回一个表格作为输出。

但是因为我需要执行一些功能,例如条件 if、case 语句、变量、动态创建临时表以及各种典型的业务需求,这就是我想编写 javascript UDTF 的原因。我能够完成所有这些功能,但无法在其中编写 final select * from table,以便在经过一些转换后将我的表作为输出返回。

所以,为了简单起见,我正在尝试实现这样的目标

有人可以帮我解决这个问题。

0 投票
1 回答
115 浏览

sql - 可以创建一个返回多列的函数吗?

SQL 是否具有在表函数之外返回多列的函数的概念?这是一个例子:

我希望该SPLIT_NAME函数产生两列,一列用于第一列,另一列用于最后,因此输出将是:

我知道这可以通过以下方式完成:

或者可能使用表函数,例如:

但是,想知道 SQL 是否有任何可以产生多个输出的标量函数,因为我认为join如果加入像十亿行这样的东西(希望)函数本身可能只是内联。

注意:Postgres 或 SQL Server 都可以。

0 投票
2 回答
45 浏览

postgresql - 如何编写一个将这种形式的数据转换为所需结果的数据透视表?

我有一张看起来像这样的桌子

我试图得到一个看起来像这样的结果,

ID 名称1 名称2 名称3
1 名称1.1 名称1.2 名称1.3
2 名称2.1 名称2.2
3 名称3.1
0 投票
1 回答
46 浏览

stored-procedures - Bigquery - 参数化存储过程中的表和列

考虑一个为不同生产设施捕获传感器数据的企业。每个设施,我们创建一个聚合查询,将值平均到 5 分钟的时间段。此查询存在于一长串 with 子句中,并将数据写入表(称为aggregation_table)。

现在我的问题是:目前我们有 n 个查询运行,它们运行完全相同的逻辑,唯一不同的是表名(有时是列名,但现在让我们忽略它)。

我不想管理 n 个基本相同的不同脚本,而是想将它放在一个能够像这样工作的存储过程中:

CALL aggregation_query(facility_name) -> 为该设施解析不同的表,然后在不同的 with 子句中使用它们

最重要的是,我不想有这么长的一组子句来给我最终结果,我想将它们分成可参数化的逻辑块,例如,如果我为设施 A 调用上述存储过程,我希望能够在这些不同的函数中传递/使用这个表名,输出可以在下一个语句中重复使用(就像你对 with 子句所做的那样)。

关于我为什么要将其分成可重用块的另一个论点是因为我们在此聚合查询上有许多“派生”,例如用于管理历史数据、更正数据或将传感器数据置于另一个聚合级别。随着这些变得过于复杂,管理它们要容易得多,而不必每次都复制粘贴和调整它们。

在当前设置中,知道我仅有权使用普通 BigQuery 可能很有用,因为我的团队不允许访问 CI/CD/调度和存储库。(这意味着我无法通过部署 n 个不同版本的过程和功能的 CI/CD 来解决问题)

所以最后,我想只使用 bigquery 得到这样的结果:

我希望有人可以在标准 SQL / Bigquery 中制作一个关于我如何做到这一点的片段,所以基本上:

  • 接受字符串变量并能够将其用作表的存储过程(在上述方法中部分解决,但不确定是否有更好的方法)

  • (table) 函数,该函数也能够接受这个 table_name 参数并返回一个可以在下一个 with 子句中使用的表(或者写入临时表)

0 投票
1 回答
42 浏览

postgresql - PostgreSQL中多行的交叉表

嗨,我想知道如何在表格中使用交叉表来制作数据透视表,例如:

用户身份 行动 时间
1 一个 2022-01-01 12:30
1 b 2022-01-01 12:40
1 b 2022-01-01 12:50
1 C 2022-01-01 13:00
1 C 2022-01-01 13:10
1 C 2022-01-01 13:20
2 b 2022-01-01 13:11
2 C 2022-01-01 13:21

预期结果应如下所示:

用户身份 一个 b C
1 2022-01-01 12:30 2022-01-01 12:40 2022-01-01 13:00
1 无效的 2022-01-01 12:50 2022-01-01 13:10
1 无效的 无效的 2022-01-01 13:20
2 无效的 2022-01-01 13:11 2022-01-01 13:21

在几个教程之后,他们给了我这个结果:

用户身份 一个 b C
1 2022-01-01 12:30 2022-01-01 12:40 2022-01-01 13:00
2 无效的 2022-01-01 13:11 2022-01-01 13:21

但是,您可以注意到,单行结果会丢失大量数据。请问有人有什么想法吗?提前致谢

0 投票
2 回答
41 浏览

oracle - 如何从接受输入到选择查询的函数中返回数千个 ID

如何使用 oracle 19.0 中的流水线表函数来实现这一点,使用带有批量收集的限制子句来减少内存使用量并提高性能?

如果不是流水线函数,我们还能使用什么?

0 投票
1 回答
29 浏览

anylogic - AnyLogic:是否可以在 AnyLogic 中将两个 TableFunction 分别链接多个/求和/减法/...?

我有两个 TableFunctions f1: arguments1 -> values1 和 f2: arguments2 -> values2 通过它们的 arguments[] 和 values[] 数组给出。我想将它们链接到一个新的 TableFunction g,以便: g 的参数应为:arguments1 + 0.5 * arguments2 g 的值应为:min{values1, values2}。

有没有办法通过代码实现它?我试图这样做,但是,我总是遇到一个问题,即在形成笛卡尔积时,会出现重复。

0 投票
1 回答
26 浏览

sql - 雪花表和生成器函数没有给出预期的结果

我尝试创建一个简单的 SQL 来跟踪 query_history 的使用,但是在使用tableandgenerator函数(x下面命名的 CTE)创建我的时间段时遇到了麻烦。

使用我的时间段限制 query_history 时,我根本没有得到任何结果,所以过了一会儿,我硬编码了一个 SQL 以给出相同的结果(y下面命名的 CTE),这很好。

为什么不x工作?据我所知xy产生相同的结果?

要测试示例首先按原样运行代码,这不会产生任何结果。然后注释该行x as timeslots并取消注释该行y as timeslots,这将给出所需的结果。

(我知道代码不是最优的,这只是为了说明问题)

0 投票
0 回答
13 浏览

javascript - 特定索引处的雪花 UDTF 更新数组

我对 JS 非常陌生,尤其是在雪花中,我正在尝试实现一个非常简单的事情——我想根据每一行的索引更新一个数组。

这是我的代码:

我收到的结果是:

而我希望能够根据索引更新数组,因此收到以下数组: