Created
September 23, 2022 14:23
-
-
Save jlacko/88c4c1270b3a06d41d2b45c59de5e202 to your computer and use it in GitHub Desktop.
Připojení vzdálené databáze + spuštění SQL kódu v prostředí RMarkdownu
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
title: "Příklad volání SQL z prostředí RStudia" | |
output: html_document | |
date: "`r Sys.Date()`" | |
--- | |
Prvním krokem je připojení k databázi v chunku typu R; zde dataset financial z https://relational.fit.cvut.cz/dataset/Financial | |
Funkce připojovacího chunku je aktivovat připojení k databázi (podle instrukcí na stránkách FIT). Chunk je typu R. | |
```{r pripojit} | |
# package, které potřebuju... | |
required_packages <- c("DBI", "RMariaDB") | |
# package, které mám... | |
installed_packages <- installed.packages() | |
# ergo rozdíl stahnu z CRANu | |
install.packages(setdiff(required_packages, installed_packages)) | |
# vlastní aktivace připojení | |
library(DBI) | |
con <- dbConnect(RMariaDB::MariaDB(), | |
host = "relational.fit.cvut.cz", | |
port = 3306, | |
username = "guest", | |
password = "relational") | |
``` | |
Druhým krokem je vlastní zavolání dotazu v chunku typu SQL; chunk vyžaduje aktivní databázové připojení `con` (z předchozího chunku). | |
Zajímavou variací je využití volání `output.var` v hlavičce chunku; tato podporuje uložení výstupu chunku do proměnné typu data.frame pro další využití technikami erka v některém z dalších chunků / více viz. https://bookdown.org/yihui/rmarkdown/language-engines.html#sql | |
```{sql vlastni-dotaz, connection = con} | |
select | |
max(date) posledni_transakce, | |
count(distinct account_id) aktivnich_uctu | |
from | |
financial.trans | |
; | |
``` | |
Po ukončení práce je zdvořilé ukončit připojení k vzdálené databázi. | |
```{r odpojit} | |
dbDisconnect(conn = con) | |
``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment