sql >> Databáze >  >> RDS >> PostgreSQL

Předat funkce SQL ve funkci filtru dplyr na databázi


dplyr -pouze" řešení by bylo toto

tbl(my_con, "my_table") %>% 
  filter(batch_name %like% "batch_A_%") %>% 
  collect()

Úplné reprex :

suppressPackageStartupMessages({
  library(dplyr)
  library(dbplyr)
  library(RPostgreSQL)
})

my_con <- 
  dbConnect(
    PostgreSQL(),
    user     = "my_user",
    password = "my_password",
    host     = "my_host",
    dbname   = "my_db"
  )

my_table <- tribble(
  ~batch_name,    ~value,
  "batch_A_1",     1,
  "batch_A_2",     2,
  "batch_A_2",     3,
  "batch_B_1",     8,
  "batch_B_2",     9
)

copy_to(my_con, my_table)

tbl(my_con, "my_table") %>% 
  filter(batch_name %like% "batch_A_%") %>% 
  collect()
#> # A tibble: 3 x 2
#>   batch_name value
#> *      <chr> <dbl>
#> 1  batch_A_1     1
#> 2  batch_A_2     2
#> 3  batch_A_2     3

dbDisconnect(my_con)
#> [1] TRUE

Funguje to proto, že všechny funkce, které dplyr neumí přeložit, budou předány tak, jak jsou, viz ?dbplyr::translate\_sql .

Klobouk pro @PaulRougieux za jeho nedávný komentářzde



  1. Převést „datetime2“ na „čas“ v SQL Server (příklady T-SQL)

  2. Tabulka je specifikována dvakrát, jak jako cíl pro 'UPDATE', tak jako samostatný zdroj dat v mysql

  3. Připojte se k MySql db přes SSH v Netbeans

  4. Použití strtotime pro data před rokem 1970