R dbplyr SQL日期过滤器问题

时间:2020-06-19 11:54:55

标签: r sql-server dbplyr

我已使用此处显示的代码连接到SQL Server数据库,然后尝试运行查询以收集按日期过滤的数据,该数据在表中以YYYYMMDD格式保存为整数

con <- DBI::dbConnect(odbc::odbc(), driver = "SQL Server", server = "***")
fact_transaction_line <- tbl(con,in_schema('***', '***'))

data <- fact_transaction_line %>% 
  filter(key_date_trade == 20200618)

这存储为查询,但是当我使用瞥见来查看数据时失败,并出现以下错误

“ dbplyr_031”
在哪里(“ key_date_trade” = 20200618.0)'

为什么这不起作用,我是否有更好的方法来格式化查询以获取此数据?

1 个答案:

答案 0 :(得分:0)

示例代码中的fact_transaction_linedata都是远程表。这的一个重要后果是,您仅限于与某些dplyr命令进行交互。 glimpse可能不是远程表支持的命令。

您可以做些什么(包括@Bruno的建议):

  1. 使用head查看远程数据的前几行。
  2. 如果收到错误,请尝试show_query(data)查看远程表的基础SQL查询。检查此查询是否正确。
  3. 使用remote_table%>% ungroup() %>% summarise(num = n())检查远程表的大小。如果远程表足够小以适合您的本地R内存,则local_table = collect(remote_table)会将表复制到R内存中。
  4. 组合选项1和3:local_table = data %>% head(100) %>% collect()会将远程表的前100行加载到R中。然后您可以glimpse(local_table)