You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Exasol UDF无法访问输入表列名,是否有可行解决方案?

问题:Exasol UDF中如何获取输入表的真实列名?

我需要编写一个Exasol UDF,用于计算带有不同参数的评分模型,同时要支持指定模型公式,例如:Treat ~ Sex + Age + Income。但实际测试发现,UDF内部无法访问输入表的真实列名——尽管Exasol官方文档指出可以通过exa$meta$input_columns[]获取包含{name, type, sql_type, precision, scale, length}信息的数组,但实际返回的列名是连续数字编号(如"0"、"1"),而非传入的真实列名。

可复现代码

--/
CREATE OR REPLACE R SET SCRIPT TEST_SCHEMA.TEST_COLUMNNAMES(...)  EMITS(COLNAMES CHAR(2000)) AS 

    run <- function(ctx) {
     
     ctx$next_row(NA) 
     numCols <- exa$meta$input_column_count
     inCols <- exa$meta$input_columns[1:numCols]
     
      ctx$emit(inCols)
    }
/

SELECT TEST_SCHEMA.TEST_COLUMNNAMES(CLUSTER_NAME, MEASURE_TIME, EVENT_TYPE, DBMS_VERSION, NODES, DB_RAM_SIZE, PARAMETERS) FROM EXA_STATISTICS.EXA_SYSTEM_EVENTS limit 10;

执行结果

COLNAMES
list(name = "0", type = "character", sql_type = "VARCHAR(128) UTF8", precision = NA, scale = NA, length = 128)
list(name = "1", type = "POSIXt", sql_type = "TIMESTAMP", precision = NA, scale = NA, length = NA)
list(name = "2", type = "character", sql_type = "VARCHAR(30) UTF8", precision = NA, scale = NA, length = 30)
list(name = "3", type = "character", sql_type = "VARCHAR(30) UTF8", precision = NA, scale = NA, length = 30)
list(name = "4", type = "integer", sql_type = "DECIMAL(4,0)", precision = 4, scale = 0, length = NA)
list(name = "5", type = "numeric", sql_type = "DECIMAL(10,1)", precision = 10, scale = 1, length = NA)
list(name = "6", type = "character", sql_type = "VARCHAR(100000) UTF8", precision = NA, scale = NA, length = 100000)

请问是否存在方法可以在UDF(包括R、Python、Java等其他脚本语言)中访问输入表的真实列名?


内容的提问来源于stack exchange,提问作者MarkusN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:14:54