<!DOCTYPE html>
Install the present package and use its core functions
remotes::install_github('inrae/diades.atlas')
library(dplyr)
library(DBI)
library(ggplot2)
library(RPostgres)
library(diades.atlas)
# pkgload::load_all()
You can use this package without opening the Shiny application
se <- new.env()
conn_eurodiad <- dbConnect(
  RPostgres::Postgres(), 
  dbname = 'eurodiad',
  host = '<your-host>',
  port = 5432,
  user = '<your-username>',
  password = rstudioapi::askForPassword("Database password"))
session$userData$con <-conn_eurodiad
# For ThinkR only
se <- new.env()
conn_eurodiad <- connect(session = se)
DBI::dbListTables(conn_eurodiad)
##  [1] "abundance_level"         
##  [2] "basin"                   
##  [3] "basin_outlet"            
##  [4] "casestudy_basin"         
##  [5] "category"                
##  [6] "cices"                   
##  [7] "climatic_model"          
##  [8] "hydiadparameter"         
##  [9] "ices_area"               
## [10] "ices_grass"              
## [11] "ices_rectangle"          
## [12] "iucn_classification"     
## [13] "iucn_level"              
## [14] "lang85_85"               
## [15] "species"                 
## [16] "species_rectangle"       
## [17] "v_abundance"             
## [18] "v_maxvalue_es"           
## [19] "v_hybrid_model"          
## [20] "v_hybrid_model_mavg"     
## [21] "v_ices_geom"             
## [22] "v_occurence"             
## [23] "v_species_ices_occurence"
## [24] "abundance"               
## [25] "casestudy"               
## [26] "ecosystemic_services"    
## [27] "esvalue"                 
## [28] "hybrid_model_result"     
## [29] "locale"                  
## [30] "outlet_distance"         
## [31] "species_division"        
## [32] "species_iucn"            
## [33] "subcategory"             
## [34] "v_basin"                 
## [35] "v_ecosystemic_services"  
## [36] "v_iucn"
It is recommended to use tbl() instead of dbGetQuery() to connect to a table in the database.tbl() does not download the table, it only connect to the database and let it run the query. This means that if you run a filter() or a mutate() after that, the database executes it, not R, which is more efficient.
 However, at some point, some of your {tidyverse} operations can not be realised or translated in SQL, hence, you need to download the resulting dataset using collect(). Then you can continue as usual.
For instance.
dbGetQuery() download data in R
filter() is executed by R in your R session
# Create a function
get_data_dbi <- function(conn_eurodiad, species_id, scenario) {
  query <- "SELECT * FROM diadesatlas.v_hybrid_model"
  
  dbGetQuery(conn_eurodiad, query) %>%
    filter(species_id %in% !!species_id,
           climatic_scenario %in% !!scenario) 
}
# Use it
get_data_dbi(conn_eurodiad,
             species_id = c(6),
             scenario = 'rcp85')
##    hybrid_model_result_id basin_id species_id
## 1                 1395745        1          6
## 2                 1395746        1          6
## 3                 1395747        1          6
## 4                 1395748        1          6
## 5                 1395749        1          6
## 6                 1395750        1          6
## 7                 1395751        1          6
## 8                 1395752        1          6
## 9                 1395753        1          6
## 10                1395754        1          6
## 11                1395755        1          6
## 12                1395756        1          6
## 13                1395757        1          6
## 14                1395758        1          6
## 15                1395759        1          6
## 16                1395760        1          6
## 17                1395761        1          6
## 18                1395762        1          6
## 19                1395763        1          6
## 20                1395764        1          6
## 21                1395765        1          6
## 22                1395766        1          6
## 23                1395767        1          6
## 24                1395768        1          6
## 25                1395769        1          6
## 26                1395770        1          6
## 27                1395771        1          6
## 28                1395772        1          6
## 29                1395773        1          6
## 30                1395774        1          6
## 31                1395775        1          6
## 32                1395776        1          6
## 33                1395777        1          6
## 34                1395778        1          6
## 35                1395779        1          6
## 36                1395780        1          6
## 37                1395781        1          6
## 38                1395782        1          6
## 39                1395783        1          6
## 40                1395784        1          6
## 41                1395785        1          6
## 42                1395786        1          6
## 43                1395787        1          6
## 44                1395788        1          6
## 45                1395789        1          6
## 46                1395790        1          6
## 47                1395791        1          6
## 48                1395792        1          6
## 49                1395793        1          6
## 50                1395794        1          6
## 51                1395795        1          6
## 52                1395796        1          6
## 53                1395797        1          6
## 54                1395798        1          6
## 55                1395799        1          6
## 56                1395800        1          6
## 57                1395801        1          6
## 58                1395802        1          6
##    climatic_model_id year        nit        hsi
## 1                  2 1951 568.905820 0.24424759
## 2                  2 1952 485.922085 0.32226324
## 3                  2 1953 429.942259 0.19459266
## 4                  2 1954 383.999570 0.24571498
## 5                  2 1955 297.920901 0.08498220
## 6                  2 1956 208.892845 0.23510293
## 7                  2 1957 140.493131 0.32735810
## 8                  2 1958 100.724190 0.41504563
## 9                  2 1959  66.924378 0.24550794
## 10                 2 1960  36.807523 0.37964568
## 11                 2 1961  15.134462 0.27040872
## 12                 2 1962   5.429765 0.24577305
## 13                 2 1963   0.000000 0.22412295
## 14                 2 1964   0.000000 0.25041559
## 15                 2 1965   0.000000 0.32038514
## 16                 2 1966   0.000000 0.25260188
## 17                 2 1967   0.000000 0.36233798
## 18                 2 1968   0.000000 0.26426540
## 19                 2 1969   0.000000 0.32815258
## 20                 2 1970   0.000000 0.07997118
## 21                 2 1971   0.000000 0.32295007
## 22                 2 1972   0.000000 0.26076233
## 23                 2 1973   0.000000 0.32594177
## 24                 2 1974   0.000000 0.32919022
## 25                 2 1975   0.000000 0.33330411
## 26                 2 1976   0.000000 0.07650311
## 27                 2 1977   0.000000 0.12106809
## 28                 2 1978   0.000000 0.24494783
## 29                 2 1979   0.000000 0.26687631
## 30                 2 1980   0.000000 0.24788790
## 31                 2 1981   0.000000 0.25248367
## 32                 2 1982   0.000000 0.05853723
## 33                 2 1983   0.000000 0.43384268
## 34                 2 1984   0.000000 0.24605194
## 35                 2 1985   0.000000 0.32409335
## 36                 2 1986   0.000000 0.30049253
## 37                 2 1987   0.000000 0.31984017
## 38                 2 1988   0.000000 0.24944539
## 39                 2 1989   0.000000 0.26567151
## 40                 2 1990   0.000000 0.23825317
## 41                 2 1991   0.000000 0.32738422
## 42                 2 1992   0.000000 0.32538706
## 43                 2 1993   0.000000 0.31455448
## 44                 2 1994   0.000000 0.25445784
## 45                 2 1995   0.000000 0.32881698
## 46                 2 1996   0.000000 0.40264379
## 47                 2 1997   0.000000 0.32566102
## 48                 2 1998   0.000000 0.35783520
## 49                 2 1999   0.000000 0.37290455
## 50                 2 2000   0.000000 0.33744471
## 51                 2 2001   0.000000 0.26335707
## 52                 2 2002   0.000000 0.17640363
## 53                 2 2003   0.000000 0.35140068
## 54                 2 2004   0.000000 0.29239221
## 55                 2 2005   0.000000 0.18490081
## 56                 2 2006   0.000000 0.25068678
## 57                 2 2007   0.000000 0.25083582
## 58                 2 2008   0.000000 0.12043068
##    saturation_rate climatic_scenario
## 1      0.269749152             rcp85
## 2      0.174624776             rcp85
## 3      0.255878434             rcp85
## 4      0.180987713             rcp85
## 5      0.405997180             rcp85
## 6      0.102900033             rcp85
## 7      0.049702931             rcp85
## 8      0.028105281             rcp85
## 9      0.031569580             rcp85
## 10     0.011228148             rcp85
## 11     0.006481810             rcp85
## 12     0.002558567             rcp85
## 13     0.000000000             rcp85
## 14     0.000000000             rcp85
## 15     0.000000000             rcp85
## 16     0.000000000             rcp85
## 17     0.000000000             rcp85
## 18     0.000000000             rcp85
## 19     0.000000000             rcp85
## 20     0.000000000             rcp85
## 21     0.000000000             rcp85
## 22     0.000000000             rcp85
## 23     0.000000000             rcp85
## 24     0.000000000             rcp85
## 25     0.000000000             rcp85
## 26     0.000000000             rcp85
## 27     0.000000000             rcp85
## 28     0.000000000             rcp85
## 29     0.000000000             rcp85
## 30     0.000000000             rcp85
## 31     0.000000000             rcp85
## 32     0.000000000             rcp85
## 33     0.000000000             rcp85
## 34     0.000000000             rcp85
## 35     0.000000000             rcp85
## 36     0.000000000             rcp85
## 37     0.000000000             rcp85
## 38     0.000000000             rcp85
## 39     0.000000000             rcp85
## 40     0.000000000             rcp85
## 41     0.000000000             rcp85
## 42     0.000000000             rcp85
## 43     0.000000000             rcp85
## 44     0.000000000             rcp85
## 45     0.000000000             rcp85
## 46     0.000000000             rcp85
## 47     0.000000000             rcp85
## 48     0.000000000             rcp85
## 49     0.000000000             rcp85
## 50     0.000000000             rcp85
## 51     0.000000000             rcp85
## 52     0.000000000             rcp85
## 53     0.000000000             rcp85
## 54     0.000000000             rcp85
## 55     0.000000000             rcp85
## 56     0.000000000             rcp85
## 57     0.000000000             rcp85
## 58     0.000000000             rcp85
##    climatic_model_code oceanic_model
## 1              cnrmcm5      CNRM-CM5
## 2              cnrmcm5      CNRM-CM5
## 3              cnrmcm5      CNRM-CM5
## 4              cnrmcm5      CNRM-CM5
## 5              cnrmcm5      CNRM-CM5
## 6              cnrmcm5      CNRM-CM5
## 7              cnrmcm5      CNRM-CM5
## 8              cnrmcm5      CNRM-CM5
## 9              cnrmcm5      CNRM-CM5
## 10             cnrmcm5      CNRM-CM5
## 11             cnrmcm5      CNRM-CM5
## 12             cnrmcm5      CNRM-CM5
## 13             cnrmcm5      CNRM-CM5
## 14             cnrmcm5      CNRM-CM5
## 15             cnrmcm5      CNRM-CM5
## 16             cnrmcm5      CNRM-CM5
## 17             cnrmcm5      CNRM-CM5
## 18             cnrmcm5      CNRM-CM5
## 19             cnrmcm5      CNRM-CM5
## 20             cnrmcm5      CNRM-CM5
## 21             cnrmcm5      CNRM-CM5
## 22             cnrmcm5      CNRM-CM5
## 23             cnrmcm5      CNRM-CM5
## 24             cnrmcm5      CNRM-CM5
## 25             cnrmcm5      CNRM-CM5
## 26             cnrmcm5      CNRM-CM5
## 27             cnrmcm5      CNRM-CM5
## 28             cnrmcm5      CNRM-CM5
## 29             cnrmcm5      CNRM-CM5
## 30             cnrmcm5      CNRM-CM5
## 31             cnrmcm5      CNRM-CM5
## 32             cnrmcm5      CNRM-CM5
## 33             cnrmcm5      CNRM-CM5
## 34             cnrmcm5      CNRM-CM5
## 35             cnrmcm5      CNRM-CM5
## 36             cnrmcm5      CNRM-CM5
## 37             cnrmcm5      CNRM-CM5
## 38             cnrmcm5      CNRM-CM5
## 39             cnrmcm5      CNRM-CM5
## 40             cnrmcm5      CNRM-CM5
## 41             cnrmcm5      CNRM-CM5
## 42             cnrmcm5      CNRM-CM5
## 43             cnrmcm5      CNRM-CM5
## 44             cnrmcm5      CNRM-CM5
## 45             cnrmcm5      CNRM-CM5
## 46             cnrmcm5      CNRM-CM5
## 47             cnrmcm5      CNRM-CM5
## 48             cnrmcm5      CNRM-CM5
## 49             cnrmcm5      CNRM-CM5
## 50             cnrmcm5      CNRM-CM5
## 51             cnrmcm5      CNRM-CM5
## 52             cnrmcm5      CNRM-CM5
## 53             cnrmcm5      CNRM-CM5
## 54             cnrmcm5      CNRM-CM5
## 55             cnrmcm5      CNRM-CM5
## 56             cnrmcm5      CNRM-CM5
## 57             cnrmcm5      CNRM-CM5
## 58             cnrmcm5      CNRM-CM5
##        atmospheric_model climatic_model_hm basin_name
## 1  CNRM-CERFACS-CNRM-CM5                cn         Aa
## 2  CNRM-CERFACS-CNRM-CM5                cn         Aa
## 3  CNRM-CERFACS-CNRM-CM5                cn         Aa
## 4  CNRM-CERFACS-CNRM-CM5                cn         Aa
## 5  CNRM-CERFACS-CNRM-CM5                cn         Aa
## 6  CNRM-CERFACS-CNRM-CM5                cn         Aa
## 7  CNRM-CERFACS-CNRM-CM5                cn         Aa
## 8  CNRM-CERFACS-CNRM-CM5                cn         Aa
## 9  CNRM-CERFACS-CNRM-CM5                cn         Aa
## 10 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 11 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 12 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 13 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 14 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 15 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 16 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 17 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 18 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 19 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 20 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 21 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 22 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 23 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 24 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 25 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 26 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 27 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 28 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 29 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 30 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 31 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 32 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 33 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 34 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 35 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 36 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 37 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 38 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 39 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 40 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 41 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 42 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 43 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 44 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 45 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 46 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 47 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 48 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 49 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 50 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 51 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 52 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 53 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 54 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 55 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 56 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 57 CNRM-CERFACS-CNRM-CM5                cn         Aa
## 58 CNRM-CERFACS-CNRM-CM5                cn         Aa
##     fish_name  latin_name simplified_name
## 1  Allis shad Alosa alosa        A. alosa
## 2  Allis shad Alosa alosa        A. alosa
## 3  Allis shad Alosa alosa        A. alosa
## 4  Allis shad Alosa alosa        A. alosa
## 5  Allis shad Alosa alosa        A. alosa
## 6  Allis shad Alosa alosa        A. alosa
## 7  Allis shad Alosa alosa        A. alosa
## 8  Allis shad Alosa alosa        A. alosa
## 9  Allis shad Alosa alosa        A. alosa
## 10 Allis shad Alosa alosa        A. alosa
## 11 Allis shad Alosa alosa        A. alosa
## 12 Allis shad Alosa alosa        A. alosa
## 13 Allis shad Alosa alosa        A. alosa
## 14 Allis shad Alosa alosa        A. alosa
## 15 Allis shad Alosa alosa        A. alosa
## 16 Allis shad Alosa alosa        A. alosa
## 17 Allis shad Alosa alosa        A. alosa
## 18 Allis shad Alosa alosa        A. alosa
## 19 Allis shad Alosa alosa        A. alosa
## 20 Allis shad Alosa alosa        A. alosa
## 21 Allis shad Alosa alosa        A. alosa
## 22 Allis shad Alosa alosa        A. alosa
## 23 Allis shad Alosa alosa        A. alosa
## 24 Allis shad Alosa alosa        A. alosa
## 25 Allis shad Alosa alosa        A. alosa
## 26 Allis shad Alosa alosa        A. alosa
## 27 Allis shad Alosa alosa        A. alosa
## 28 Allis shad Alosa alosa        A. alosa
## 29 Allis shad Alosa alosa        A. alosa
## 30 Allis shad Alosa alosa        A. alosa
## 31 Allis shad Alosa alosa        A. alosa
## 32 Allis shad Alosa alosa        A. alosa
## 33 Allis shad Alosa alosa        A. alosa
## 34 Allis shad Alosa alosa        A. alosa
## 35 Allis shad Alosa alosa        A. alosa
## 36 Allis shad Alosa alosa        A. alosa
## 37 Allis shad Alosa alosa        A. alosa
## 38 Allis shad Alosa alosa        A. alosa
## 39 Allis shad Alosa alosa        A. alosa
## 40 Allis shad Alosa alosa        A. alosa
## 41 Allis shad Alosa alosa        A. alosa
## 42 Allis shad Alosa alosa        A. alosa
## 43 Allis shad Alosa alosa        A. alosa
## 44 Allis shad Alosa alosa        A. alosa
## 45 Allis shad Alosa alosa        A. alosa
## 46 Allis shad Alosa alosa        A. alosa
## 47 Allis shad Alosa alosa        A. alosa
## 48 Allis shad Alosa alosa        A. alosa
## 49 Allis shad Alosa alosa        A. alosa
## 50 Allis shad Alosa alosa        A. alosa
## 51 Allis shad Alosa alosa        A. alosa
## 52 Allis shad Alosa alosa        A. alosa
## 53 Allis shad Alosa alosa        A. alosa
## 54 Allis shad Alosa alosa        A. alosa
## 55 Allis shad Alosa alosa        A. alosa
## 56 Allis shad Alosa alosa        A. alosa
## 57 Allis shad Alosa alosa        A. alosa
## 58 Allis shad Alosa alosa        A. alosa
##  [ reached 'max' / getOption("max.print") -- omitted 120542 rows ]
tbl() only connects to the table, only a glimpse of the data is presented
filter() is run by the SQL database
get_data_tbl <- function(conn_eurodiad, species_id, scenario) {
  tbl(conn_eurodiad, "v_hybrid_model") %>% 
    filter(species_id %in% !!species_id,
           climatic_scenario %in% !!scenario) 
}
# Use it
get_data_tbl(conn_eurodiad,
             species_id = c(6),
             scenario = 'rcp85')
## # Source:   lazy query [?? x 17]
## # Database: postgres
## #   [diadesatlas_owner@localhost:5432/diades]
##    hybrid_model_result_id basin_id species_id climatic_model_…
##                     <int>    <int>      <int>            <int>
##  1                1395745        1          6                2
##  2                1395746        1          6                2
##  3                1395747        1          6                2
##  4                1395748        1          6                2
##  5                1395749        1          6                2
##  6                1395750        1          6                2
##  7                1395751        1          6                2
##  8                1395752        1          6                2
##  9                1395753        1          6                2
## 10                1395754        1          6                2
## # … with more rows, and 13 more variables: year <int>,
## #   nit <dbl>, hsi <dbl>, saturation_rate <dbl>,
## #   climatic_scenario <chr>, climatic_model_code <chr>,
## #   oceanic_model <chr>, atmospheric_model <chr>,
## #   climatic_model_hm <chr>, basin_name <chr>,
## #   fish_name <chr>, latin_name <chr>,
## #   simplified_name <chr>
get_data_tbl_collect <- function(conn_eurodiad, species_id, scenario) {
  tbl(conn_eurodiad, "v_hybrid_model") %>% 
    filter(species_id %in% !!species_id,
           climatic_scenario %in% !!scenario) %>% 
    # From collect(), the full data is in the R session
    collect()
}
# Use it
get_data_tbl_collect(conn_eurodiad,
                     species_id = c(6),
                     scenario = 'rcp85') %>% 
  filter(basin_id == 1) %>% 
  ggplot(aes(x = year)) +
  geom_line(aes(y = hsi))
tbl()
get_data_tbl_query_collect <- function(conn_eurodiad, species_id, scenario) {
  query <- "SELECT * FROM diadesatlas.v_hybrid_model"
  
  tbl(conn_eurodiad, sql(query)) %>% 
    # Adds a filter to be run as SQL in the database
    filter(species_id %in% !!species_id,
           climatic_scenario %in% !!scenario) %>% 
    # From collect(), the full data is in the R session
    collect()
}
# Use it
get_data_tbl_query_collect(conn_eurodiad,
                           species_id = c(6),
                           scenario = 'rcp85') %>% 
  filter(basin_id == 1) %>% 
  ggplot(aes(x = year)) +
  geom_line(aes(y = hsi))
DBI::dbDisconnect(conn_eurodiad)