sql >> データベース >  >> RDS >> PostgreSQL

データベースのdplyrフィルター関数でSQL関数を渡します


    dplyr -唯一の」解決策はこれです

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

    完全な 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
    

    これは、dplyrが変換方法を知らない関数がそのまま渡されるため、機能します。を参照してください。 ?dbplyr::translate\_sql

    @PaulRougieux へのハットチップ 彼の最近のコメントこちら



    1. NodeJS、mysql接続を閉じません

    2. MariaDBの日付と時刻の関数(完全なリスト)

    3. 列にNULLが含まれるレコードを検索する方法

    4. テーブル名である変数から選択する方法nPostgre>=9.2