我有一个 sql 函数,比如说theFunction(item_id)
. 它接受一个项目 id 并计算一个值作为它的返回值。我从数据库中读取了一个表,并且我想通过这个函数计算一个新值以附加到每一行,给定特定于 taht 行的 item_id。哪个设计块会使用以下 SQL(如果没有错的话)来做这件事。
select thsFunction(item_id);
我假设该块将每行的 item_id 作为变量提供给我。
SQL 函数在数据库中一次运行所有行的效率可能要高得多,而不是从 PDI 对数据库进行单独调用以执行该函数。因此,如果性能完全是一个相关问题,我建议采用完全不同的策略:
UPDATE my_temp_table set target_col = theFunction(item_id)
”的 SQL 命令。这当然假设您没有太多其他线程正在进行,但是如果您的转换是简单且线性的 - 或者至少如果它可以在这个特定步骤中使其成为单线性 - 它可能会拆分它在此 SQL 调用之前和之后分为两部分。
您可以使用另一个表格输入步骤,并让它接受先前步骤中的字段并为每一行执行(两个配置选项都在步骤窗口的底部)。
请注意,这是一个相当缓慢的实现。每个查询都是单独执行的,因此每一行都需要往返于数据库。
或者,您可以使用 Row SQL 脚本。我相信它允许您一次将所有 SQL 语句传递到数据库。