【问题标题】:R dbplyr SQL date filter issueR dbplyr SQL 日期过滤器问题
【发布时间】:2020-06-19 11:54:55
【问题描述】:

我已使用此处显示的代码连接到 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”
WHERE ("key_date_trade" = 20200618.0)'

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

【问题讨论】:

  • 你试过collect功能吗?它将收集您的查询结果,您也可以使用show_query 查看幕后发生的事情

标签: r sql-server dbplyr


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2015-09-11
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多