PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Przekaż funkcje SQL w funkcji filtra dplyr w bazie danych


dplyr -tylko" rozwiązaniem byłoby to

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

Pełny 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

Działa to, ponieważ wszystkie funkcje, których dplyr nie wie, jak to przetłumaczyć, zostaną przekazane dalej, patrz ?dbplyr::translate\_sql .

Napiwek dla @PaulRougieux za jego niedawny komentarztutaj



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj zapytania where w typie danych JSONB w Rails Postgres

  2. Akcje GitHub:Jak połączyć się z Postgresem w Akcji GitHub

  3. Jak nie wyświetlać hasła w postaci zwykłego tekstu podczas łączenia się z postgresem przez sqlalchemy, psycopg2?

  4. django.db.utils.OperationalError:nie można połączyć się z serwerem:Brak takiego pliku lub katalogu

  5. Jak ustawić poziom izolacji?