Setup

library(DBI)
library(tidyverse)
library(dbplot)
conf <- config::get()
con <- dbConnect(odbc::odbc(),
                 Driver = "SQLServer",
                 Database = conf$database,
                 Port = conf$port,
                 Server = conf$server,
                 UID = conf$UID,
                 PWD = conf$PWD)
airports <- tbl(con, "airports")
flights <- tbl(con, "flights2")

Histogram

dbplot_histogram(airports, alt, binwidth = 700) + 
  labs(title = "Airports Altitude") +
  theme_minimal()

Compute bins

db_compute_bins(airports, alt)
db_bin(x)
(((max(x, na.rm = TRUE) - min(x, na.rm = TRUE))/(30)) * ifelse((as.integer(floor(((x) - 
    min(x, na.rm = TRUE))/((max(x, na.rm = TRUE) - min(x, na.rm = TRUE))/(30))))) == 
    (30), (as.integer(floor(((x) - min(x, na.rm = TRUE))/((max(x, 
    na.rm = TRUE) - min(x, na.rm = TRUE))/(30))))) - 1, (as.integer(floor(((x) - 
    min(x, na.rm = TRUE))/((max(x, na.rm = TRUE) - min(x, na.rm = TRUE))/(30))))))) + 
    min(x, na.rm = TRUE)

Raster

dbplot_raster(flights, lon, lat) +
  labs(title = "Arrivals") +
  theme_minimal()

Line plot

dbplot_line(flights, month, mean(arr_delay)) +
  labs(title = "Arrival delays by month") +
  theme_minimal()
Missing values are always removed in SQL.
Use `AVG(x, na.rm = TRUE)` to silence this warning

Barplot

dbplot_bar(flights, origin, mean(dep_delay)) +
  labs(title = "Departure delays by airport") +
  theme_minimal() +
  coord_flip()
Missing values are always removed in SQL.
Use `AVG(x, na.rm = TRUE)` to silence this warning

LS0tCnRpdGxlOiAiRGF0YWJhc2UgcGxvdHMgd2l0aCBkYnBsb3QiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjIFNldHVwCgpgYGB7cn0KbGlicmFyeShEQkkpCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGRicGxvdCkKY29uZiA8LSBjb25maWc6OmdldCgpCmNvbiA8LSBkYkNvbm5lY3Qob2RiYzo6b2RiYygpLAogICAgICAgICAgICAgICAgIERyaXZlciA9ICJTUUxTZXJ2ZXIiLAogICAgICAgICAgICAgICAgIERhdGFiYXNlID0gY29uZiRkYXRhYmFzZSwKICAgICAgICAgICAgICAgICBQb3J0ID0gY29uZiRwb3J0LAogICAgICAgICAgICAgICAgIFNlcnZlciA9IGNvbmYkc2VydmVyLAogICAgICAgICAgICAgICAgIFVJRCA9IGNvbmYkVUlELAogICAgICAgICAgICAgICAgIFBXRCA9IGNvbmYkUFdEKQphaXJwb3J0cyA8LSB0YmwoY29uLCAiYWlycG9ydHMiKQpmbGlnaHRzIDwtIHRibChjb24sICJmbGlnaHRzMiIpCmBgYAoKIyMgSGlzdG9ncmFtCgpgYGB7cn0KZGJwbG90X2hpc3RvZ3JhbShhaXJwb3J0cywgYWx0LCBiaW53aWR0aCA9IDcwMCkgKyAKICBsYWJzKHRpdGxlID0gIkFpcnBvcnRzIEFsdGl0dWRlIikgKwogIHRoZW1lX21pbmltYWwoKQpgYGAKCiMjIENvbXB1dGUgYmlucwoKYGBge3J9CmRiX2NvbXB1dGVfYmlucyhhaXJwb3J0cywgYWx0KQpkYl9iaW4oeCkKYGBgCgojIyBSYXN0ZXIKCmBgYHtyfQpkYnBsb3RfcmFzdGVyKGZsaWdodHMsIGxvbiwgbGF0KSArCiAgbGFicyh0aXRsZSA9ICJBcnJpdmFscyIpICsKICB0aGVtZV9taW5pbWFsKCkKYGBgCgojIyBMaW5lIHBsb3QKCmBgYHtyfQpkYnBsb3RfbGluZShmbGlnaHRzLCBtb250aCwgbWVhbihhcnJfZGVsYXkpKSArCiAgbGFicyh0aXRsZSA9ICJBcnJpdmFsIGRlbGF5cyBieSBtb250aCIpICsKICB0aGVtZV9taW5pbWFsKCkKYGBgCgojIyBCYXJwbG90CgpgYGB7cn0KZGJwbG90X2JhcihmbGlnaHRzLCBvcmlnaW4sIG1lYW4oZGVwX2RlbGF5KSkgKwogIGxhYnModGl0bGUgPSAiRGVwYXJ0dXJlIGRlbGF5cyBieSBhaXJwb3J0IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgY29vcmRfZmxpcCgpCmBgYAo=