首页 > 解决方案 > R dbplyr SQL 日期过滤器问题

问题描述

我已使用此处显示的代码连接到 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)

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

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

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

标签: rsql-serverdbplyr

解决方案


fact_transaction_line在您的示例代码中,两者data都是远程表。这样做的一个重要后果是,您只能通过某些 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).

推荐阅读