This tutorial uses the Reduce method which allows to extract the minimum time stored in the SQlite3 database. The next step is to create a TH1F Histogram, which will be filled with the values stored in two different columns from the database. This procedure is simplified with a lambda expression that takes as parameters the values stored in the "Time" and "Version" columns.
void df027_SQliteDependencyOverVersion () {
auto rdfb =
ROOT::RDF::FromSqlite(
"http://root.cern/files/root_download_stats.sqlite",
"SELECT * FROM accesslog;");
auto minTimeStr = *rdfb.Reduce([](std::string
a, std::string
b) {
return std::min(
a,
b);},
"Time", std::string(
"Z"));
std::cout << "Minimum time is '" << minTimeStr << "'" << std::endl;
auto rdf = rdfb.Define(
"datime", [](
const std::string &time){
return TDatime(time.c_str()).
Convert();}, {
"Time"});
auto h614 = rdf.Filter([](
const std::string &
v){
return 0 ==
v.find(
"6.14");}, {
"Version"})
.Histo1D({"h614", "Download time for version 6.14", 16, minTime, now}, {"datime"});
auto h616 = rdf.Filter([](
const std::string &
v){
return 0 ==
v.find(
"6.16");}, {
"Version"})
.Histo1D({"h616", "Download time for version 6.16", 16, minTime, now}, {"datime"});
auto h618 = rdf.Filter([](
const std::string &
v){
return 0 ==
v.find(
"6.18");}, {
"Version"})
.Histo1D({"h618", "Download time for version 6.18", 16, minTime, now}, {"datime"});
auto histoList = {h614, h616, h618};
auto canvases = new std::vector<TCanvas*>(histoList.size());
auto histoIdx = 0U;
for (auto histo : histoList) {
canvases->at(histoIdx) =
new TCanvas();
histo->GetXaxis()->LabelsOption("v");
histo->GetXaxis()->SetTimeDisplay(1);
histo->GetXaxis()->SetLabelSize(0.02);
histo->GetXaxis()->SetNdivisions(512,
kFALSE);
histo->GetXaxis()->SetTimeFormat("%Y-%m-%d");
histo->DrawClone();
histoIdx++;
}
}
R__EXTERN TStyle * gStyle
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
UInt_t Convert(Bool_t toGMT=kFALSE) const
Convert fDatime from TDatime format to the standard time_t format.
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
void SetTimeOffset(Double_t toffset)
Change the time offset for time plotting.
RDataFrame FromSqlite(std::string_view fileName, std::string_view query)
Factory method to create a SQlite RDataFrame.