Logo ROOT  
Reference Guide
df027_SQliteDependencyOverVersion.C File Reference

Detailed Description

Plot the ROOT downloads based on the version reading a remote sqlite3 file.

View in nbviewer Open in SWAN 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::MakeSqliteDataFrame("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;
double minTime = TDatime(minTimeStr.c_str()).Convert();
double now = TDatime().Convert();
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"});
// Add here a newer version!
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++;
}
}
Date
August 2018
Author
Alexandra-Maria Dobrescu

Definition in file df027_SQliteDependencyOverVersion.C.

ROOT::RDF::MakeSqliteDataFrame
RDataFrame MakeSqliteDataFrame(std::string_view fileName, std::string_view query)
Factory method to create a SQlite RDataFrame.
Definition: RSqliteDS.cxx:545
v
@ v
Definition: rootcling_impl.cxx:3635
b
#define b(i)
Definition: RSha256.hxx:118
gStyle
R__EXTERN TStyle * gStyle
Definition: TStyle.h:412
a
auto * a
Definition: textangle.C:12
kFALSE
const Bool_t kFALSE
Definition: RtypesCore.h:92
TStyle::SetOptStat
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
Definition: TStyle.cxx:1592
TStyle::SetTimeOffset
void SetTimeOffset(Double_t toffset)
Change the time offset for time plotting.
Definition: TStyle.cxx:1803
TCanvas
Definition: TCanvas.h:23
TDatime
Definition: TDatime.h:37
TDatime::Convert
UInt_t Convert(Bool_t toGMT=kFALSE) const
Convert fDatime from TDatime format to the standard time_t format.
Definition: TDatime.cxx:182