First, load the necessary libraries
library(RPostgreSQL)
library(dplyr)
library(ggplot2)
And make sure you are connected to the database
Read 1 item
Query database
Make a data frame of all time series data in database. This is an SQL chunk and the name of the output data frame is defined in the chunk option.
SELECT datavalue, res.resultid, var.variablenamecv, units.unitsname, valuedatetime, sf.samplingfeaturecode, meth.methodcode, acts.begindatetime, acts.enddatetime
FROM odm2.timeseriesresultvalues tsrv
INNER JOIN odm2.results res ON tsrv.resultid = res.resultid
INNER JOIN odm2.variables var ON res.variableid = var.variableid
INNER JOIN odm2.featureactions fa ON res.featureactionid = fa.featureactionid
INNER JOIN odm2.samplingfeatures sf ON sf.samplingfeatureid = fa.samplingfeatureid
INNER JOIN odm2.actions acts ON acts.actionid = fa.actionid
INNER JOIN odm2.units units ON units.unitsid = res.unitsid
INNER JOIN odm2.methods meth ON meth.methodid = acts.methodid
See a summary of time series results in the database
ts_results %>%
group_by(resultid, variablenamecv, samplingfeaturecode,
methodcode, begindatetime, enddatetime) %>%
dplyr::summarise() %>%
knitr::kable()
4431 |
Wind direction |
QB |
SonicAnemometer |
2018-06-27 13:55:00 |
2018-06-30 16:55:00 |
4432 |
Wind speed |
QB |
SonicAnemometer |
2018-06-27 13:55:00 |
2018-06-30 16:55:00 |
4433 |
Wind gust speed |
QB |
SonicAnemometer |
2018-06-27 13:55:00 |
2018-06-30 16:55:00 |
4449 |
Wind direction |
QB |
SonicAnemometer |
2018-06-30 16:55:00 |
2018-07-22 15:15:00 |
4450 |
Wind speed |
QB |
SonicAnemometer |
2018-06-30 16:55:00 |
2018-07-22 15:15:00 |
4451 |
Wind gust speed |
QB |
SonicAnemometer |
2018-06-30 16:55:00 |
2018-07-22 15:15:00 |
Plot
ggplot(ts_results, aes(x = valuedatetime, y = datavalue, color = variablenamecv)) +
geom_line() +
facet_wrap(facets = vars(variablenamecv, samplingfeaturecode), scales = "free_y", ncol = 1) +
theme_bw() +
theme(legend.position = "none")
LS0tCnRpdGxlOiAiUXVlcnkgdGltZSBzZXJpZXMgZGF0YSIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKRmlyc3QsIGxvYWQgdGhlIG5lY2Vzc2FyeSBsaWJyYXJpZXMKCmBgYHtyLCBtZXNzYWdlPUZBTFNFfQpsaWJyYXJ5KFJQb3N0Z3JlU1FMKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmBgYAoKQW5kIG1ha2Ugc3VyZSB5b3UgYXJlIGNvbm5lY3RlZCB0byB0aGUgZGF0YWJhc2UKCmBgYHtyLCBlY2hvID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgfQpwYXNzd29yZCA8LSBzY2FuKCIucGdwYXNzIiwgd2hhdD0iIikKZGIgPC0gZGJDb25uZWN0KFBvc3RncmVTUUwoKSwgCiAgICAgICAgICAgICAgICBob3N0ID0gInNlc3luYy1wb3N0Z2lzMDEucmVzZWFyY2guc2VzeW5jLm9yZyIsCiAgICAgICAgICAgICAgICBkYm5hbWUgPSAiY2hvcHRhbmsiLCAKICAgICAgICAgICAgICAgIHVzZXIgPSAicGFsbWVyZ3JvdXAiLAogICAgICAgICAgICAgICAgcGFzc3dvcmQgPSBwYXNzd29yZCkKYGBgCgojIFF1ZXJ5IGRhdGFiYXNlIAoKTWFrZSBhIGRhdGEgZnJhbWUgb2YgYWxsIHRpbWUgc2VyaWVzIGRhdGEgaW4gZGF0YWJhc2UuIFRoaXMgaXMgYW4gU1FMIGNodW5rIGFuZCB0aGUgbmFtZSBvZiB0aGUgb3V0cHV0IGRhdGEgZnJhbWUgaXMgZGVmaW5lZCBpbiB0aGUgY2h1bmsgb3B0aW9uLiAKCmBgYHtzcWwsIGNvbm5lY3Rpb24gPSBkYiwgb3V0cHV0LnZhciA9ICJ0c19yZXN1bHRzIn0KU0VMRUNUIGRhdGF2YWx1ZSwgcmVzLnJlc3VsdGlkLCB2YXIudmFyaWFibGVuYW1lY3YsIHVuaXRzLnVuaXRzbmFtZSwgdmFsdWVkYXRldGltZSwgc2Yuc2FtcGxpbmdmZWF0dXJlY29kZSwgbWV0aC5tZXRob2Rjb2RlLCBhY3RzLmJlZ2luZGF0ZXRpbWUsIGFjdHMuZW5kZGF0ZXRpbWUKRlJPTSBvZG0yLnRpbWVzZXJpZXNyZXN1bHR2YWx1ZXMgdHNydgpJTk5FUiBKT0lOIG9kbTIucmVzdWx0cyByZXMgT04gdHNydi5yZXN1bHRpZCA9IHJlcy5yZXN1bHRpZApJTk5FUiBKT0lOIG9kbTIudmFyaWFibGVzIHZhciBPTiByZXMudmFyaWFibGVpZCA9IHZhci52YXJpYWJsZWlkCklOTkVSIEpPSU4gb2RtMi5mZWF0dXJlYWN0aW9ucyBmYSBPTiByZXMuZmVhdHVyZWFjdGlvbmlkID0gZmEuZmVhdHVyZWFjdGlvbmlkCklOTkVSIEpPSU4gb2RtMi5zYW1wbGluZ2ZlYXR1cmVzIHNmIE9OIHNmLnNhbXBsaW5nZmVhdHVyZWlkID0gZmEuc2FtcGxpbmdmZWF0dXJlaWQKSU5ORVIgSk9JTiBvZG0yLmFjdGlvbnMgYWN0cyBPTiBhY3RzLmFjdGlvbmlkID0gZmEuYWN0aW9uaWQKSU5ORVIgSk9JTiBvZG0yLnVuaXRzIHVuaXRzIE9OIHVuaXRzLnVuaXRzaWQgPSByZXMudW5pdHNpZApJTk5FUiBKT0lOIG9kbTIubWV0aG9kcyBtZXRoIE9OIG1ldGgubWV0aG9kaWQgPSBhY3RzLm1ldGhvZGlkCmBgYAoKU2VlIGEgc3VtbWFyeSBvZiB0aW1lIHNlcmllcyByZXN1bHRzIGluIHRoZSBkYXRhYmFzZQoKYGBge3IsIHJlc3VsdHM9J2FzaXMnfQp0c19yZXN1bHRzICU+JQogIGdyb3VwX2J5KHJlc3VsdGlkLCB2YXJpYWJsZW5hbWVjdiwgc2FtcGxpbmdmZWF0dXJlY29kZSwgCiAgICAgICAgICAgbWV0aG9kY29kZSwgYmVnaW5kYXRldGltZSwgZW5kZGF0ZXRpbWUpICU+JQogIGRwbHlyOjpzdW1tYXJpc2UoKSAlPiUKICBrbml0cjo6a2FibGUoKQpgYGAKClBsb3QKCmBgYHtyfQpnZ3Bsb3QodHNfcmVzdWx0cywgYWVzKHggPSB2YWx1ZWRhdGV0aW1lLCB5ID0gZGF0YXZhbHVlLCBjb2xvciA9IHZhcmlhYmxlbmFtZWN2KSkgKwogIGdlb21fbGluZSgpICsKICBmYWNldF93cmFwKGZhY2V0cyA9IHZhcnModmFyaWFibGVuYW1lY3YsIHNhbXBsaW5nZmVhdHVyZWNvZGUpLCBzY2FsZXMgPSAiZnJlZV95IiwgbmNvbCA9IDEpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoK