0

我正在尝试从 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 语句。

4

1 回答 1

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 的最佳方法。相反,最好在移动数据之前应用所有必需的转换和过滤器。

于 2017-08-02T08:28:35.977 回答