通过转换为较低的字段连接两个远程表
join two remote tables by fields that are transformed tolower
我如何通过每个table(不同名称)中的一个字段加入两个远程tables(postgres),首先应该在数据库上转换tolower()
?
这是文档中的一个基本示例。此示例不需要 tolower()
即可工作,但您将如何添加它以使 name
和 name2
的内容在连接之前全部小写?
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")
我如何通过每个table(不同名称)中的一个字段加入两个远程tables(postgres),首先应该在数据库上转换tolower()
?
这是文档中的一个基本示例。此示例不需要 tolower()
即可工作,但您将如何添加它以使 name
和 name2
的内容在连接之前全部小写?
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")