You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

356 lines
31 KiB

<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tools to Transform and Query Data with 'Apache' 'Drill' ('JDBC') • sergeant.caffeinated</title>
<!-- jquery --><script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script><!-- Font Awesome icons --><link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js" integrity="sha384-cV+rhyOuRHc9Ub/91rihWcGmMmCXDeksTtCihMupQHSsi8GIIRDG0ThDc3HGQFJ3" crossorigin="anonymous"></script><!-- sticky kit --><script src="https://cdnjs.cloudflare.com/ajax/libs/sticky-kit/1.1.3/sticky-kit.min.js" integrity="sha256-c4Rlo1ZozqTPE2RLuvbusY3+SU1pQaJC0TjuhygMipw=" crossorigin="anonymous"></script><!-- pkgdown --><link href="pkgdown.css" rel="stylesheet">
<script src="pkgdown.js"></script><meta property="og:title" content="Tools to Transform and Query Data with 'Apache' 'Drill' ('JDBC')">
<meta property="og:description" content="'Apache Drill' is a low-latency distributed query engine designed to enable
data exploration and 'analytics' on both relational and non-relational 'datastores',
scaling to petabytes of data. Methods are provided that enable working with 'Apache'
'Drill' instances via the 'JDBC' 'DBI' and 'dplyr'/'dbplyr' idioms.">
<meta name="twitter:card" content="summary">
<!-- mathjax --><script src="https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container template-article">
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand">
<a class="navbar-link" href="index.html">sergeant.caffeinated</a>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Released package">0.1.0</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>
<a href="index.html">
<span class="fa fa-home fa-lg"></span>
</a>
</li>
<li>
<a href="reference/index.html">Reference</a>
</li>
<li>
<a href="news/index.html">Changelog</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="https://github.com/hrbrmstr/sergeant-caffeinated">
<span class="fa fa-github fa-lg"></span>
</a>
</li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
<!--/.container -->
</div>
<!--/.navbar -->
</header><div class="row">
<div class="col-md-9 contents">
<!-- README.md is generated from README.Rmd. Please edit that file -->
<div id="sergeant-caffeinated" class="section level1">
<div class="page-header"><h1 class="hasAnchor">
<a href="#sergeant-caffeinated" class="anchor"></a>💂☕️ sergeant.caffeinated</h1></div>
<p>Tools to Transform and Query Data with ‘Apache’ ‘Drill’ (JDBC)</p>
<div id="note" class="section level2">
<h2 class="hasAnchor">
<a href="#note" class="anchor"></a>NOTE</h2>
<p>This is the Java/JDBC-interface to Apache Drill. For non-Java/JDBC, see the <code>sergeant</code> package (<a href="https://gitlab.com/hrbrmstr/sergeant/">GitLab</a>; <a href="https://github.com/hrbrmstr/sergeant/">GitHub</a>).</p>
</div>
<div id="description" class="section level2">
<h2 class="hasAnchor">
<a href="#description" class="anchor"></a>Description</h2>
<p>Drill + <code>sergeant</code> is (IMO) a streamlined alternative to Spark + <code>sparklyr</code> if you don’t need the ML components of Spark (i.e. just need to query “big data” sources, need to interface with parquet, need to combine disparate data source types — json, csv, parquet, rdbms - for aggregation, etc). Drill also has support for spatial queries.</p>
<p>Using Drill SQL queries that reference parquet files on a local linux or macOS workstation can often be more performant than doing the same data ingestion &amp; wrangling work with R (especially for large or disperate data sets). Drill can often help further streaming workflows that infolve wrangling many tiny JSON files on a daily basis.</p>
<p>Drill can be obtained from <a href="https://drill.apache.org/download/" class="uri">https://drill.apache.org/download/</a> (use “Direct File Download”). Drill can also be installed via <a href="https://drill.apache.org/docs/running-drill-on-docker/">Docker</a>. For local installs on Unix-like systems, a common/suggestion location for the Drill directory is <code>/usr/local/drill</code> as the install directory.</p>
<p>Drill embedded (started using the <code>$DRILL_BASE_DIR/bin/drill-embedded</code> script) is a super-easy way to get started playing with Drill on a single workstation and most of many workflows can “get by” using Drill this way.</p>
<p>The following functions are implemented:</p>
<p><strong><code>DBI</code></strong> (RJDBC)</p>
<ul>
<li>
<code>drill_jdbc</code>: Connect to Drill using JDBC, enabling use of said idioms. See <code>RJDBC</code> for more info.</li>
</ul>
<p>NOTE: The DRILL JDBC driver fully-qualified path must be placed in the <code>DRILL_JDBC_JAR</code> environment variable. This is best done via <code>~/.Renviron</code> for interactive work. i.e. <code>DRILL_JDBC_JAR=/usr/local/drill/jars/drill-jdbc-all-1.14.0.jar</code></p>
<p><strong><code>dplyr</code></strong>: (RJDBC)</p>
<ul>
<li>
<code>src_drill_jdbc</code>: Connect to Drill (using dplyr &amp; RJDBC) + supporting functions</li>
</ul>
</div>
<div id="installation" class="section level2">
<h2 class="hasAnchor">
<a href="#installation" class="anchor"></a>Installation</h2>
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" data-line-number="1">devtools<span class="op">::</span><span class="kw"><a href="http://www.rdocumentation.org/packages/devtools/topics/install_git">install_git</a></span>(<span class="st">"https://gitlab.com/hrbrmstr/sergeant-caffeinated"</span>)</a>
<a class="sourceLine" id="cb1-2" data-line-number="2"><span class="co"># OF</span></a>
<a class="sourceLine" id="cb1-3" data-line-number="3">devtools<span class="op">::</span><span class="kw"><a href="http://www.rdocumentation.org/packages/devtools/topics/install_github">install_github</a></span>(<span class="st">"hrbrmstr/sergeant-caffeinated"</span>)</a></code></pre></div>
</div>
<div id="usage" class="section level2">
<h2 class="hasAnchor">
<a href="#usage" class="anchor"></a>Usage</h2>
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" data-line-number="1"><span class="kw">library</span>(sergeant.caffeinated)</a>
<a class="sourceLine" id="cb2-2" data-line-number="2"><span class="kw">library</span>(tidyverse)</a>
<a class="sourceLine" id="cb2-3" data-line-number="3"></a>
<a class="sourceLine" id="cb2-4" data-line-number="4"><span class="co"># use localhost if running standalone on same system otherwise the host or IP of your Drill server</span></a>
<a class="sourceLine" id="cb2-5" data-line-number="5">ds &lt;-<span class="st"> </span><span class="kw"><a href="reference/drill_jdbc.html">src_drill_jdbc</a></span>(<span class="st">"localhost"</span>) <span class="co">#ds</span></a>
<a class="sourceLine" id="cb2-6" data-line-number="6">db &lt;-<span class="st"> </span><span class="kw"><a href="reference/sergeant-caffeinated-exports.html">tbl</a></span>(ds, <span class="st">"cp.`employee.json`"</span>) </a>
<a class="sourceLine" id="cb2-7" data-line-number="7"></a>
<a class="sourceLine" id="cb2-8" data-line-number="8"><span class="co"># without `collect()`:</span></a>
<a class="sourceLine" id="cb2-9" data-line-number="9"><span class="kw">count</span>(db, gender, marital_status)</a>
<a class="sourceLine" id="cb2-10" data-line-number="10"><span class="co">## # Source: lazy query [?? x 3]</span></a>
<a class="sourceLine" id="cb2-11" data-line-number="11"><span class="co">## # Database: DrillJDBCConnection</span></a>
<a class="sourceLine" id="cb2-12" data-line-number="12"><span class="co">## # Groups: gender</span></a>
<a class="sourceLine" id="cb2-13" data-line-number="13"><span class="co">## gender marital_status n</span></a>
<a class="sourceLine" id="cb2-14" data-line-number="14"><span class="co">## &lt;chr&gt; &lt;chr&gt; &lt;dbl&gt;</span></a>
<a class="sourceLine" id="cb2-15" data-line-number="15"><span class="co">## 1 F S 297.</span></a>
<a class="sourceLine" id="cb2-16" data-line-number="16"><span class="co">## 2 M M 278.</span></a>
<a class="sourceLine" id="cb2-17" data-line-number="17"><span class="co">## 3 M S 276.</span></a>
<a class="sourceLine" id="cb2-18" data-line-number="18"><span class="co">## 4 F M 304.</span></a>
<a class="sourceLine" id="cb2-19" data-line-number="19"></a>
<a class="sourceLine" id="cb2-20" data-line-number="20"><span class="kw">count</span>(db, gender, marital_status) <span class="op">%&gt;%</span><span class="st"> </span><span class="kw">collect</span>()</a>
<a class="sourceLine" id="cb2-21" data-line-number="21"><span class="co">## # A tibble: 4 x 3</span></a>
<a class="sourceLine" id="cb2-22" data-line-number="22"><span class="co">## # Groups: gender [2]</span></a>
<a class="sourceLine" id="cb2-23" data-line-number="23"><span class="co">## gender marital_status n</span></a>
<a class="sourceLine" id="cb2-24" data-line-number="24"><span class="co">## * &lt;chr&gt; &lt;chr&gt; &lt;dbl&gt;</span></a>
<a class="sourceLine" id="cb2-25" data-line-number="25"><span class="co">## 1 F S 297.</span></a>
<a class="sourceLine" id="cb2-26" data-line-number="26"><span class="co">## 2 M M 278.</span></a>
<a class="sourceLine" id="cb2-27" data-line-number="27"><span class="co">## 3 M S 276.</span></a>
<a class="sourceLine" id="cb2-28" data-line-number="28"><span class="co">## 4 F M 304.</span></a>
<a class="sourceLine" id="cb2-29" data-line-number="29"></a>
<a class="sourceLine" id="cb2-30" data-line-number="30"><span class="kw">group_by</span>(db, position_title) <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-31" data-line-number="31"><span class="st"> </span><span class="kw">count</span>(gender) -&gt;<span class="st"> </span>tmp2</a>
<a class="sourceLine" id="cb2-32" data-line-number="32"></a>
<a class="sourceLine" id="cb2-33" data-line-number="33"><span class="kw">group_by</span>(db, position_title) <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-34" data-line-number="34"><span class="st"> </span><span class="kw">count</span>(gender) <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-35" data-line-number="35"><span class="st"> </span><span class="kw">ungroup</span>() <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-36" data-line-number="36"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">full_desc=</span><span class="kw">ifelse</span>(gender<span class="op">==</span><span class="st">"F"</span>, <span class="st">"Female"</span>, <span class="st">"Male"</span>)) <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-37" data-line-number="37"><span class="st"> </span><span class="kw">collect</span>() <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-38" data-line-number="38"><span class="st"> </span><span class="kw">select</span>(<span class="dt">Title=</span>position_title, <span class="dt">Gender=</span>full_desc, <span class="dt">Count=</span>n)</a>
<a class="sourceLine" id="cb2-39" data-line-number="39"><span class="co">## # A tibble: 30 x 3</span></a>
<a class="sourceLine" id="cb2-40" data-line-number="40"><span class="co">## Title Gender Count</span></a>
<a class="sourceLine" id="cb2-41" data-line-number="41"><span class="co">## * &lt;chr&gt; &lt;chr&gt; &lt;dbl&gt;</span></a>
<a class="sourceLine" id="cb2-42" data-line-number="42"><span class="co">## 1 President Female 1.</span></a>
<a class="sourceLine" id="cb2-43" data-line-number="43"><span class="co">## 2 VP Country Manager Male 3.</span></a>
<a class="sourceLine" id="cb2-44" data-line-number="44"><span class="co">## 3 VP Country Manager Female 3.</span></a>
<a class="sourceLine" id="cb2-45" data-line-number="45"><span class="co">## 4 VP Information Systems Female 1.</span></a>
<a class="sourceLine" id="cb2-46" data-line-number="46"><span class="co">## 5 VP Human Resources Female 1.</span></a>
<a class="sourceLine" id="cb2-47" data-line-number="47"><span class="co">## 6 Store Manager Female 13.</span></a>
<a class="sourceLine" id="cb2-48" data-line-number="48"><span class="co">## 7 VP Finance Male 1.</span></a>
<a class="sourceLine" id="cb2-49" data-line-number="49"><span class="co">## 8 Store Manager Male 11.</span></a>
<a class="sourceLine" id="cb2-50" data-line-number="50"><span class="co">## 9 HQ Marketing Female 2.</span></a>
<a class="sourceLine" id="cb2-51" data-line-number="51"><span class="co">## 10 HQ Information Systems Female 4.</span></a>
<a class="sourceLine" id="cb2-52" data-line-number="52"><span class="co">## # ... with 20 more rows</span></a>
<a class="sourceLine" id="cb2-53" data-line-number="53"></a>
<a class="sourceLine" id="cb2-54" data-line-number="54"><span class="kw">arrange</span>(db, <span class="kw">desc</span>(employee_id)) <span class="op">%&gt;%</span><span class="st"> </span><span class="kw">print</span>(<span class="dt">n=</span><span class="dv">20</span>)</a>
<a class="sourceLine" id="cb2-55" data-line-number="55"><span class="co">## # Source: table&lt;cp.`employee.json`&gt; [?? x 16]</span></a>
<a class="sourceLine" id="cb2-56" data-line-number="56"><span class="co">## # Database: DrillJDBCConnection</span></a>
<a class="sourceLine" id="cb2-57" data-line-number="57"><span class="co">## # Ordered by: desc(employee_id)</span></a>
<a class="sourceLine" id="cb2-58" data-line-number="58"><span class="co">## employee_id full_name first_name last_name position_id position_title store_id department_id birth_date hire_date </span></a>
<a class="sourceLine" id="cb2-59" data-line-number="59"><span class="co">## &lt;dbl&gt; &lt;chr&gt; &lt;chr&gt; &lt;chr&gt; &lt;dbl&gt; &lt;chr&gt; &lt;dbl&gt; &lt;dbl&gt; &lt;chr&gt; &lt;chr&gt; </span></a>
<a class="sourceLine" id="cb2-60" data-line-number="60"><span class="co">## 1 1156. Kris Stand Kris Stand 18. Store Tempora… 18. 18. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-61" data-line-number="61"><span class="co">## 2 1155. Vivian Bu… Vivian Burnham 18. Store Tempora… 18. 18. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-62" data-line-number="62"><span class="co">## 3 1154. Judy Dool… Judy Doolittle 18. Store Tempora… 18. 18. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-63" data-line-number="63"><span class="co">## 4 1153. Gail Pirn… Gail Pirnie 18. Store Tempora… 18. 18. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-64" data-line-number="64"><span class="co">## 5 1152. Barbara Y… Barbara Younce 17. Store Permane… 18. 17. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-65" data-line-number="65"><span class="co">## 6 1151. Burnis Bi… Burnis Biltoft 17. Store Permane… 18. 17. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-66" data-line-number="66"><span class="co">## 7 1150. Foster De… Foster Detwiler 17. Store Permane… 18. 17. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-67" data-line-number="67"><span class="co">## 8 1149. Bertha Ci… Bertha Ciruli 17. Store Permane… 18. 17. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-68" data-line-number="68"><span class="co">## 9 1148. Sharon Bi… Sharon Bishop 16. Store Tempora… 18. 16. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-69" data-line-number="69"><span class="co">## 10 1147. Jacquelin… Jacqueline Cutwright 16. Store Tempora… 18. 16. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-70" data-line-number="70"><span class="co">## 11 1146. Elizabeth… Elizabeth Anderson 16. Store Tempora… 18. 16. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-71" data-line-number="71"><span class="co">## 12 1145. Michael S… Michael Swartwood 16. Store Tempora… 18. 16. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-72" data-line-number="72"><span class="co">## 13 1144. Shirley C… Shirley Curtsinger 15. Store Permane… 18. 15. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-73" data-line-number="73"><span class="co">## 14 1143. Ana Quick Ana Quick 15. Store Permane… 18. 15. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-74" data-line-number="74"><span class="co">## 15 1142. Hazel Sou… Hazel Souza 15. Store Permane… 18. 15. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-75" data-line-number="75"><span class="co">## 16 1141. James Com… James Compagno 15. Store Permane… 18. 15. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-76" data-line-number="76"><span class="co">## 17 1140. Mona Jara… Mona Jaramillo 13. Store Shift S… 18. 11. 1961-09-24 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-77" data-line-number="77"><span class="co">## 18 1139. Jeanette … Jeanette Belsey 12. Store Assista… 18. 11. 1972-05-12 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-78" data-line-number="78"><span class="co">## 19 1138. James Eic… James Eichorn 18. Store Tempora… 12. 18. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-79" data-line-number="79"><span class="co">## 20 1137. Heather G… Heather Geiermann 18. Store Tempora… 12. 18. 1914-02-02 1998-01-0…</span></a>
<a class="sourceLine" id="cb2-80" data-line-number="80"><span class="co">## # ... with more rows, and 6 more variables: salary &lt;dbl&gt;, supervisor_id &lt;dbl&gt;, education_level &lt;chr&gt;,</span></a>
<a class="sourceLine" id="cb2-81" data-line-number="81"><span class="co">## # marital_status &lt;chr&gt;, gender &lt;chr&gt;, management_role &lt;chr&gt;</span></a>
<a class="sourceLine" id="cb2-82" data-line-number="82"></a>
<a class="sourceLine" id="cb2-83" data-line-number="83"><span class="kw">mutate</span>(db, <span class="dt">position_title=</span><span class="kw">tolower</span>(position_title)) <span class="op">%&gt;%</span></a>
<a class="sourceLine" id="cb2-84" data-line-number="84"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">salary=</span><span class="kw">as.numeric</span>(salary)) <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-85" data-line-number="85"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">gender=</span><span class="kw">ifelse</span>(gender<span class="op">==</span><span class="st">"F"</span>, <span class="st">"Female"</span>, <span class="st">"Male"</span>)) <span class="op">%&gt;%</span></a>
<a class="sourceLine" id="cb2-86" data-line-number="86"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">marital_status=</span><span class="kw">ifelse</span>(marital_status<span class="op">==</span><span class="st">"S"</span>, <span class="st">"Single"</span>, <span class="st">"Married"</span>)) <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-87" data-line-number="87"><span class="st"> </span><span class="kw">group_by</span>(supervisor_id) <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-88" data-line-number="88"><span class="st"> </span><span class="kw">summarise</span>(<span class="dt">underlings_count=</span><span class="kw">n</span>()) <span class="op">%&gt;%</span><span class="st"> </span></a>
<a class="sourceLine" id="cb2-89" data-line-number="89"><span class="st"> </span><span class="kw">collect</span>()</a>
<a class="sourceLine" id="cb2-90" data-line-number="90"><span class="co">## # A tibble: 112 x 2</span></a>
<a class="sourceLine" id="cb2-91" data-line-number="91"><span class="co">## supervisor_id underlings_count</span></a>
<a class="sourceLine" id="cb2-92" data-line-number="92"><span class="co">## * &lt;dbl&gt; &lt;dbl&gt;</span></a>
<a class="sourceLine" id="cb2-93" data-line-number="93"><span class="co">## 1 0. 1.</span></a>
<a class="sourceLine" id="cb2-94" data-line-number="94"><span class="co">## 2 1. 7.</span></a>
<a class="sourceLine" id="cb2-95" data-line-number="95"><span class="co">## 3 5. 9.</span></a>
<a class="sourceLine" id="cb2-96" data-line-number="96"><span class="co">## 4 4. 2.</span></a>
<a class="sourceLine" id="cb2-97" data-line-number="97"><span class="co">## 5 2. 3.</span></a>
<a class="sourceLine" id="cb2-98" data-line-number="98"><span class="co">## 6 20. 2.</span></a>
<a class="sourceLine" id="cb2-99" data-line-number="99"><span class="co">## 7 21. 4.</span></a>
<a class="sourceLine" id="cb2-100" data-line-number="100"><span class="co">## 8 22. 7.</span></a>
<a class="sourceLine" id="cb2-101" data-line-number="101"><span class="co">## 9 6. 4.</span></a>
<a class="sourceLine" id="cb2-102" data-line-number="102"><span class="co">## 10 36. 2.</span></a>
<a class="sourceLine" id="cb2-103" data-line-number="103"><span class="co">## # ... with 102 more rows</span></a></code></pre></div>
<p>``` ### Test Results</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" data-line-number="1"><span class="kw">library</span>(sergeant.caffeinated)</a>
<a class="sourceLine" id="cb3-2" data-line-number="2"><span class="kw">library</span>(testthat)</a>
<a class="sourceLine" id="cb3-3" data-line-number="3"><span class="co">## </span></a>
<a class="sourceLine" id="cb3-4" data-line-number="4"><span class="co">## Attaching package: 'testthat'</span></a>
<a class="sourceLine" id="cb3-5" data-line-number="5"><span class="co">## The following object is masked from 'package:dplyr':</span></a>
<a class="sourceLine" id="cb3-6" data-line-number="6"><span class="co">## </span></a>
<a class="sourceLine" id="cb3-7" data-line-number="7"><span class="co">## matches</span></a>
<a class="sourceLine" id="cb3-8" data-line-number="8"><span class="co">## The following object is masked from 'package:purrr':</span></a>
<a class="sourceLine" id="cb3-9" data-line-number="9"><span class="co">## </span></a>
<a class="sourceLine" id="cb3-10" data-line-number="10"><span class="co">## is_null</span></a>
<a class="sourceLine" id="cb3-11" data-line-number="11"></a>
<a class="sourceLine" id="cb3-12" data-line-number="12"><span class="kw">date</span>()</a>
<a class="sourceLine" id="cb3-13" data-line-number="13"><span class="co">## [1] "Sun Oct 14 09:31:43 2018"</span></a>
<a class="sourceLine" id="cb3-14" data-line-number="14"></a>
<a class="sourceLine" id="cb3-15" data-line-number="15">devtools<span class="op">::</span><span class="kw"><a href="http://www.rdocumentation.org/packages/devtools/topics/test">test</a></span>()</a>
<a class="sourceLine" id="cb3-16" data-line-number="16"><span class="co">## Loading sergeant.caffeinated</span></a>
<a class="sourceLine" id="cb3-17" data-line-number="17"><span class="co">## Testing sergeant.caffeinated</span></a>
<a class="sourceLine" id="cb3-18" data-line-number="18"><span class="co">## ✔ | OK F W S | Context</span></a>
<a class="sourceLine" id="cb3-19" data-line-number="19"><span class="co">## </span></a>
<a class="sourceLine" id="cb3-20" data-line-number="20"><span class="op">|</span><span class="st"> </span><span class="dv">0</span> <span class="op">|</span><span class="st"> </span>JDBC</a>
<a class="sourceLine" id="cb3-21" data-line-number="21"><span class="op">|</span><span class="st"> </span><span class="dv">1</span> <span class="op">|</span><span class="st"> </span>JDBC</a>
<a class="sourceLine" id="cb3-22" data-line-number="22"><span class="op">|</span><span class="st"> </span><span class="dv">2</span> <span class="op">|</span><span class="st"> </span>JDBC</a>
<a class="sourceLine" id="cb3-23" data-line-number="23"><span class="op">|</span><span class="st"> </span><span class="dv">3</span> <span class="op">|</span><span class="st"> </span>JDBC</a>
<a class="sourceLine" id="cb3-24" data-line-number="24"><span class="op">|</span><span class="st"> </span><span class="dv">3</span> <span class="op">|</span><span class="st"> </span>JDBC [<span class="fl">0.3</span> s]</a>
<a class="sourceLine" id="cb3-25" data-line-number="25"><span class="co">## </span></a>
<a class="sourceLine" id="cb3-26" data-line-number="26"><span class="co">## ══ Results ════════════════════════════════════════════════════════════════</span></a>
<a class="sourceLine" id="cb3-27" data-line-number="27"><span class="co">## Duration: 0.3 s</span></a>
<a class="sourceLine" id="cb3-28" data-line-number="28"><span class="co">## </span></a>
<a class="sourceLine" id="cb3-29" data-line-number="29"><span class="co">## OK: 3</span></a>
<a class="sourceLine" id="cb3-30" data-line-number="30"><span class="co">## Failed: 0</span></a>
<a class="sourceLine" id="cb3-31" data-line-number="31"><span class="co">## Warnings: 0</span></a>
<a class="sourceLine" id="cb3-32" data-line-number="32"><span class="co">## Skipped: 0</span></a></code></pre></div>
</div>
<div id="sergeant-metrics" class="section level2">
<h2 class="hasAnchor">
<a href="#sergeant-metrics" class="anchor"></a>sergeant Metrics</h2>
<table class="table">
<thead><tr class="header">
<th align="left">Lang</th>
<th align="right"># Files</th>
<th align="right">(%)</th>
<th align="right">LoC</th>
<th align="right">(%)</th>
<th align="right">Blank lines</th>
<th align="right">(%)</th>
<th align="right"># Lines</th>
<th align="right">(%)</th>
</tr></thead>
<tbody>
<tr class="odd">
<td align="left">R</td>
<td align="right">7</td>
<td align="right">0.88</td>
<td align="right">302</td>
<td align="right">0.9</td>
<td align="right">78</td>
<td align="right">0.68</td>
<td align="right">164</td>
<td align="right">0.77</td>
</tr>
<tr class="even">
<td align="left">Rmd</td>
<td align="right">1</td>
<td align="right">0.12</td>
<td align="right">35</td>
<td align="right">0.1</td>
<td align="right">37</td>
<td align="right">0.32</td>
<td align="right">48</td>
<td align="right">0.23</td>
</tr>
</tbody>
</table>
</div>
<div id="code-of-conduct" class="section level2">
<h2 class="hasAnchor">
<a href="#code-of-conduct" class="anchor"></a>Code of Conduct</h2>
<p>Please note that this project is released with a <a href="CONDUCT.html">Contributor Code of Conduct</a>. By participating in this project you agree to abide by its terms.</p>
</div>
</div>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
<div class="links">
<h2>Links</h2>
<ul class="list-unstyled">
<li>Browse source code at <br><a href="https://github.com/hrbrmstr/sergeant-caffeinated">https://​github.com/​hrbrmstr/​sergeant-caffeinated</a>
</li>
<li>Report a bug at <br><a href="https://github.com/hrbrmstr/sergeant-caffeinated/issues">https://​github.com/​hrbrmstr/​sergeant-caffeinated/​issues</a>
</li>
</ul>
</div>
<div class="license">
<h2>License</h2>
<ul class="list-unstyled">
<li>
<a href="https://opensource.org/licenses/mit-license.php">MIT</a> + file <a href="LICENSE-text.html">LICENSE</a>
</li>
</ul>
</div>
<div class="developers">
<h2>Developers</h2>
<ul class="list-unstyled">
<li>Bob Rudis <br><small class="roles"> Author, maintainer </small> <a href="https://orcid.org/0000-0001-5670-2640" target="orcid.widget"><img src="https://members.orcid.org/sites/default/files/vector_iD_icon.svg" class="orcid" height="16"></a> </li>
</ul>
</div>
<div class="dev-status">
<h2>Dev status</h2>
<ul class="list-unstyled">
<li><a href="https://doi.org/10.5281/zenodo.1248912"><img src="https://zenodo.org/badge/DOI/10.5281/zenodo.1248912.svg" alt="DOI"></a></li>
<li><a href="https://travis-ci.org/hrbrmstr/sergeant-caffeinated"><img src="https://travis-ci.org/hrbrmstr/sergeant-caffeinated.svg?branch=master" alt="Travis-CI Build Status"></a></li>
<li><a href="https://codecov.io/gh/hrbrmstr/sergeant-caffeinated"><img src="https://codecov.io/gh/hrbrmstr/sergeant-caffeinated/branch/master/graph/badge.svg" alt="Coverage Status"></a></li>
<li><a href="https://cran.r-project.org/package=sergeant-caffeinated"><img src="http://www.r-pkg.org/badges/version/sergeant-caffeinated" alt="CRAN_Status_Badge"></a></li>
</ul>
</div>
</div>
</div>
<footer><div class="copyright">
<p>Developed by Bob Rudis.</p>
</div>
<div class="pkgdown">
<p>Site built with <a href="http://pkgdown.r-lib.org/">pkgdown</a>.</p>
</div>
</footer>
</div>
</body>
</html>