概述

    dplyr作为数据库接口

    dplyr包简化了数据转换。它提供了一组一致的函数(称为动词),可以连续和交换地使用这些函数,以迭代地理解数据。

    dplyr能够直接与数据库交互通过翻译dplyr动词转换为SQL查询。这个方便的特性允许你直接与r中的数据库“对话”。这种方法的其他优点是:

    1. 对所有数据运行数据探索例程,而不是将部分数据导入R。

    2. 使用SQL引擎运行数据转换。实际上,计算被推到了数据库中。

    3. 只将目标数据集收集到R中。

    4. 所有的代码都在R中。因为dplyr用于与数据库通信,不需要在语言或工具之间交替执行数据探索。

    连接到数据库

    这种方法的核心是DBI包中。这个包的作用是“中间件”以允许用户或其他包与数据库的连接。它提供了一组一致的函数,而不管所访问的数据库类型是什么。的dplyr包取决于DBI用于与数据库通信的包。

    有一些包支持开源数据库和r之间的直接连接,目前,这样的包存在于以下数据库:MySQL、SQLite、PostgreSQL和bigquery

    大多数商业数据库,如Oracle和Microsoft SQL Server,都提供了允许您将工具连接到数据库的ODBC驱动程序。即使有允许您使用ODBC驱动程序的R包,连接也很可能不兼容DBI.新odbc包通过提供一个DBI任何ODBC驱动程序连接的后端。

    如果您有兴趣创建自己的连接包DBI到数据库,请审查文章DBI的后端

    SQL的翻译dplyr

    一个叫做dbplyr包含特定于供应商的SQL的翻译dplyr使用。已知支持的数据库列表可在我们的卡塔尔世界杯欧洲预选赛赛程表数据库页面。

    您感兴趣的数据库没有列在这里吗?你仍然可以使用DBI而且odbc连接和发送SQL查询。如果您想提供翻译,请参阅SQL翻译在这个网站的页面。

    例子

    用于R中的数据的相同dplyr语法也适用于数据库中的数据。在下面的例子中,数据来自nycflights13包被加载到SQLite数据库中,然后从R中查询。查询的结果被收集到R中,并使用ggplot2进行可视化。如果您使用企业数据仓库—如Microsoft SQL Server或Snowflake的数据云—过程是相同的。

    库(DBI)库(dplyr)库(ggplot2) # SQLite数据库con <- dbConnect(RSQLite::SQLite(), ":memory:") copy_to(con, nycflights13::flights, " flights ") # ODBC数据库(需要实时数据库连接)#con <- dbConnect(ODBC:: ODBC (), "SQL Server") #con <- dbConnect(ODBC:: ODBC (), "Snowflake") #查询,收集结果,并可视化tbl(con, " flights ") %>% filter(distance > 75) %>% group_by(origin, hour) %>% summarise(delay = mean(dep_delay, na. com) #rm = TRUE)) %>% collect() %>% ggplot(aes(小时,延迟,颜色=起源))+ geom_line()