通过转换为较低的字段连接两个远程表

join two remote tables by fields that are transformed tolower

我如何通过每个table(不同名称)中的一个字段加入两个远程tables(postgres),首先应该在数据库上转换tolower()

这是文档中的一个基本示例。此示例不需要 tolower() 即可工作,但您将如何添加它以使 namename2 的内容在连接之前全部小写?

library(tidyverse)
library(dbplyr)

band_db <- tbl_memdb(dplyr::band_members)
instrument_db <- tbl_memdb(dplyr::band_instruments) %>%
  rename("name2" = "name")

band_db %>% left_join(instrument_db, by=c("name" = "name2"))

看来 tolower 有一个 sql 翻译,因此您可以将它与 dbplyr 一起使用:

> library(dbplyr)
> library(dplyr)
> translate_sql(tolower("FirstName"))
<SQL> LOWER('FirstName')

因此按照答案中的方法:

band_db <- band_db %>%
  mutate(lower_names = tolower(names))
instrument_db <- instrument_db %>%
  mutate(lower_names = tolower(names))

output <- left_join(band_db, instrument_db, by = "lower_names")