【问题标题】:Define column class when data is impoted using RJDBC in R在 R 中使用 RJDBC 导入数据时定义列类
【发布时间】:2017-07-31 08:24:22
【问题描述】:

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

【问题讨论】:

    标签: r import hana rjdbc dbml


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 2022-01-23
      • 2022-01-18
      • 2014-02-11
      • 2018-01-11
      • 2015-01-02
      • 1970-01-01
      相关资源
      最近更新 更多