我正在尝试从R中的HANA数据库导入一个非常大的数据集.RJDBC程序包的一个问题是所有带字符的列都被加载为字符列类型。在我们的情况下,将列作为因子加载会更有效,因为只有少数唯一值。是否可以在RJDBC调用中定义col类的某个位置以及执行col类转换的位置?如果转换为因子在HANA中执行会很好,因为它会减少必须传输到R的GB的数量。 示例代码:
dbFetch(dbSendQuery(conn = hana_connection, statement = 'select CHAR_COL FROM TABLE_NAME'))
在文档https://www.rforge.net/RJDBC/上,他们讨论的是所需的DBML语句。
答案 0 :(得分:0)
这真的是RJDBC的问题。 使用RODBC读取字符值作为因素工作正常(并且易于实现)。
ch<-odbcConnect("S12")
fact<-sqlQuery (ch, 'SELECT TOP 50 \'x\'||DIM10 as CHARCOL from FACT order by DIM10 asc')
str(fact)
odbcClose(ch)
str(fact)
'data.frame': 50 obs. of 1 variable:
$ CHARCOL: Factor w/ 1 level "x0": 1 1 1 1 1 1 1 1 1 1 ...
除此之外,它通常不是将大量数据从HANA转换为R的最佳方法。相反,在移动数据之前,最好应用所有必需的转换和过滤器。