<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Druid">
<meta name="keywords" content="druid,kafka,database,analytics,streaming,real-time,real time,apache,open source">
<meta name="author" content="Apache Software Foundation">

<title>Druid | SQL</title>

<link rel="alternate" type="application/atom+xml" href="/feed">
<link rel="shortcut icon" href="/img/favicon.png">

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">

<link href='//fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700,300italic|Open+Sans:300italic,400italic,600italic,400,300,600,700' rel='stylesheet' type='text/css'>

<link rel="stylesheet" href="/css/bootstrap-pure.css?v=1.1">
<link rel="stylesheet" href="/css/base.css?v=1.1">
<link rel="stylesheet" href="/css/header.css?v=1.1">
<link rel="stylesheet" href="/css/footer.css?v=1.1">
<link rel="stylesheet" href="/css/syntax.css?v=1.1">
<link rel="stylesheet" href="/css/docs.css?v=1.1">

<script>
  (function() {
    var cx = '000162378814775985090:molvbm0vggm';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//cse.google.com/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>


  </head>

  <body>
    <!-- Start page_header include -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<div class="top-navigator">
  <div class="container">
    <div class="left-cont">
      <a class="logo" href="/"><span class="druid-logo"></span></a>
    </div>
    <div class="right-cont">
      <ul class="links">
        <li class=""><a href="/technology">Technology</a></li>
        <li class=""><a href="/use-cases">Use Cases</a></li>
        <li class=""><a href="/druid-powered">Powered By</a></li>
        <li class=""><a href="/docs/latest/design/">Docs</a></li>
        <li class=""><a href="/community/">Community</a></li>
        <li class="header-dropdown">
          <a>Apache</a>
          <div class="header-dropdown-menu">
            <a href="https://www.apache.org/" target="_blank">Foundation</a>
            <a href="https://www.apache.org/events/current-event" target="_blank">Events</a>
            <a href="https://www.apache.org/licenses/" target="_blank">License</a>
            <a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a>
            <a href="https://www.apache.org/security/" target="_blank">Security</a>
            <a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a>
          </div>
        </li>
        <li class=" button-link"><a href="/downloads.html">Download</a></li>
      </ul>
    </div>
  </div>
  <div class="action-button menu-icon">
    <span class="fa fa-bars"></span> MENU
  </div>
  <div class="action-button menu-icon-close">
    <span class="fa fa-times"></span> MENU
  </div>
</div>

<script type="text/javascript">
  var $menu = $('.right-cont');
  var $menuIcon = $('.menu-icon');
  var $menuIconClose = $('.menu-icon-close');

  function showMenu() {
    $menu.fadeIn(100);
    $menuIcon.fadeOut(100);
    $menuIconClose.fadeIn(100);
  }

  $menuIcon.click(showMenu);

  function hideMenu() {
    $menu.fadeOut(100);
    $menuIconClose.fadeOut(100);
    $menuIcon.fadeIn(100);
  }

  $menuIconClose.click(hideMenu);

  $(window).resize(function() {
    if ($(window).width() >= 840) {
      $menu.fadeIn(100);
      $menuIcon.fadeOut(100);
      $menuIconClose.fadeOut(100);
    }
    else {
      $menu.fadeOut(100);
      $menuIcon.fadeIn(100);
      $menuIconClose.fadeOut(100);
    }
  });
</script>

<!-- Stop page_header include -->


    <div class="container doc-container">
      
      

      
      <p> Looking for the <a href="/docs/0.23.0/">latest stable documentation</a>?</p>
      

      <div class="row">
        <div class="col-md-9 doc-content">
          <p>
            <a class="btn btn-default btn-xs visible-xs-inline-block visible-sm-inline-block" href="#toc">Table of Contents</a>
          </p>
          <!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<h1 id="sql">SQL</h1>

<div class="note caution">
Built-in SQL is an <a href="../development/experimental.html">experimental</a> feature. The API described here is
subject to change.
</div>

<p>Druid SQL is a built-in SQL layer and an alternative to Druid&#39;s native JSON-based query language, and is powered by a
parser and planner based on <a href="https://calcite.apache.org/">Apache Calcite</a>. Druid SQL translates SQL into native Druid
queries on the query broker (the first node you query), which are then passed down to data nodes as native Druid
queries. Other than the (slight) overhead of translating SQL on the broker, there isn&#39;t an additional performance
penalty versus native queries.</p>

<p>To enable Druid SQL, make sure you have set <code>druid.sql.enable = true</code> either in your common.runtime.properties or your
broker&#39;s runtime.properties.</p>

<h2 id="query-syntax">Query syntax</h2>

<p>Each Druid datasource appears as a table in the &quot;druid&quot; schema. This is also the default schema, so Druid datasources
can be referenced as either <code>druid.dataSourceName</code> or simply <code>dataSourceName</code>.</p>

<p>Identifiers like datasource and column names can optionally be quoted using double quotes. To escape a double quote
inside an identifier, use another double quote, like <code>&quot;My &quot;&quot;very own&quot;&quot; identifier&quot;</code>. All identifiers are case-sensitive
and no implicit case conversions are performed.</p>

<p>Literal strings should be quoted with single quotes, like <code>&#39;foo&#39;</code>. Literal strings with Unicode escapes can be written
like <code>U&amp;&#39;fo\00F6&#39;</code>, where character codes in hex are prefixed by a backslash. Literal numbers can be written in forms
like <code>100</code> (denoting an integer), <code>100.0</code> (denoting a floating point value), or <code>1.0e5</code> (scientific notation). Literal
timestamps can be written like <code>TIMESTAMP &#39;2000-01-01 00:00:00&#39;</code>. Literal intervals, used for time arithmetic, can be
written like <code>INTERVAL &#39;1&#39; HOUR</code>, <code>INTERVAL &#39;1 02:03&#39; DAY TO MINUTE</code>, <code>INTERVAL &#39;1-2&#39; YEAR TO MONTH</code>, and so on.</p>

<p>Druid SQL supports SELECT queries with the following structure:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text"><span></span>[ EXPLAIN PLAN FOR ]
[ WITH tableName [ ( column1, column2, ... ) ] AS ( query ) ]
SELECT [ ALL | DISTINCT ] { * | exprs }
FROM table
[ WHERE expr ]
[ GROUP BY exprs ]
[ HAVING expr ]
[ ORDER BY expr [ ASC | DESC ], expr [ ASC | DESC ], ... ]
[ LIMIT limit ]
[ UNION ALL &lt;another query&gt; ]
</code></pre></div>
<p>The FROM clause refers to either a Druid datasource, like <code>druid.foo</code>, an <a href="#retrieving-metadata">INFORMATION_SCHEMA table</a>, a
subquery, or a common-table-expression provided in the WITH clause. If the FROM clause references a subquery or a
common-table-expression, and both levels of queries are aggregations and they cannot be combined into a single level of
aggregation, the overall query will be executed as a <a href="groupbyquery.html#nested-groupbys">nested GroupBy</a>.</p>

<p>The WHERE clause refers to columns in the FROM table, and will be translated to <a href="filters.html">native filters</a>. The
WHERE clause can also reference a subquery, like <code>WHERE col1 IN (SELECT foo FROM ...)</code>. Queries like this are executed
as <a href="#query-execution">semi-joins</a>, described below.</p>

<p>The GROUP BY clause refers to columns in the FROM table. Using GROUP BY, DISTINCT, or any aggregation functions will
trigger an aggregation query using one of Druid&#39;s <a href="#query-execution">three native aggregation query types</a>. GROUP BY
can refer to an expression or a select clause ordinal position (like <code>GROUP BY 2</code> to group by the second selected
column).</p>

<p>The HAVING clause refers to columns that are present after execution of GROUP BY. It can be used to filter on either
grouping expressions or aggregated values. It can only be used together with GROUP BY.</p>

<p>The ORDER BY clause refers to columns that are present after execution of GROUP BY. It can be used to order the results
based on either grouping expressions or aggregated values. ORDER BY can refer to an expression or a select clause
ordinal position (like <code>ORDER BY 2</code> to order by the second selected column). For non-aggregation queries, ORDER BY
can only order by the <code>__time</code> column. For aggregation queries, ORDER BY can order by any column.</p>

<p>The LIMIT clause can be used to limit the number of rows returned. It can be used with any query type. It is pushed down
to data nodes for queries that run with the native TopN query type, but not the native GroupBy query type. Future
versions of Druid will support pushing down limits using the native GroupBy query type as well. If you notice that
adding a limit doesn&#39;t change performance very much, then it&#39;s likely that Druid didn&#39;t push down the limit for your
query.</p>

<p>The &quot;UNION ALL&quot; operator can be used to fuse multiple queries together. Their results will be concatenated, and each
query will run separately, back to back (not in parallel). Druid does not currently support &quot;UNION&quot; without &quot;ALL&quot;.</p>

<p>Add &quot;EXPLAIN PLAN FOR&quot; to the beginning of any query to see how it would be run as a native Druid query. In this case,
the query will not actually be executed.</p>

<h3 id="aggregation-functions">Aggregation functions</h3>

<p>Aggregation functions can appear in the SELECT clause of any query. Any aggregator can be filtered using syntax like
<code>AGG(expr) FILTER(WHERE whereExpr)</code>. Filtered aggregators will only aggregate rows that match their filter. It&#39;s
possible for two aggregators in the same SQL query to have different filters.</p>

<p>Only the COUNT aggregation can accept DISTINCT.</p>

<table><thead>
<tr>
<th>Function</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td><code>COUNT(*)</code></td>
<td>Counts the number of rows.</td>
</tr>
<tr>
<td><code>COUNT(DISTINCT expr)</code></td>
<td>Counts distinct values of expr, which can be string, numeric, or hyperUnique. By default this is approximate, using a variant of <a href="http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf">HyperLogLog</a>. To get exact counts set &quot;useApproximateCountDistinct&quot; to &quot;false&quot;. If you do this, expr must be string or numeric, since exact counts are not possible using hyperUnique columns. See also <code>APPROX_COUNT_DISTINCT(expr)</code>. In exact mode, only one distinct count per query is permitted.</td>
</tr>
<tr>
<td><code>SUM(expr)</code></td>
<td>Sums numbers.</td>
</tr>
<tr>
<td><code>MIN(expr)</code></td>
<td>Takes the minimum of numbers.</td>
</tr>
<tr>
<td><code>MAX(expr)</code></td>
<td>Takes the maximum of numbers.</td>
</tr>
<tr>
<td><code>AVG(expr)</code></td>
<td>Averages numbers.</td>
</tr>
<tr>
<td><code>APPROX_COUNT_DISTINCT(expr)</code></td>
<td>Counts distinct values of expr, which can be a regular column or a hyperUnique column. This is always approximate, regardless of the value of &quot;useApproximateCountDistinct&quot;. See also <code>COUNT(DISTINCT expr)</code>.</td>
</tr>
<tr>
<td><code>APPROX_QUANTILE(expr, probability, [resolution])</code></td>
<td>Computes approximate quantiles on numeric or approxHistogram exprs. The &quot;probability&quot; should be between 0 and 1 (exclusive). The &quot;resolution&quot; is the number of centroids to use for the computation. Higher resolutions will give more precise results but also have higher overhead. If not provided, the default resolution is 50. The <a href="../development/extensions-core/approximate-histograms.html">approximate histogram extension</a> must be loaded to use this function.</td>
</tr>
</tbody></table>

<h3 id="numeric-functions">Numeric functions</h3>

<p>Numeric functions will return 64 bit integers or 64 bit floats, depending on their inputs.</p>

<table><thead>
<tr>
<th>Function</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td><code>ABS(expr)</code></td>
<td>Absolute value.</td>
</tr>
<tr>
<td><code>CEIL(expr)</code></td>
<td>Ceiling.</td>
</tr>
<tr>
<td><code>EXP(expr)</code></td>
<td>e to the power of expr.</td>
</tr>
<tr>
<td><code>FLOOR(expr)</code></td>
<td>Floor.</td>
</tr>
<tr>
<td><code>LN(expr)</code></td>
<td>Logarithm (base e).</td>
</tr>
<tr>
<td><code>LOG10(expr)</code></td>
<td>Logarithm (base 10).</td>
</tr>
<tr>
<td><code>POWER(expr, power)</code></td>
<td>expr to a power.</td>
</tr>
<tr>
<td><code>SQRT(expr)</code></td>
<td>Square root.</td>
</tr>
<tr>
<td><code>TRUNCATE(expr[, digits])</code></td>
<td>Truncate expr to a specific number of decimal digits. If digits is negative, then this truncates that many places to the left of the decimal point. Digits defaults to zero if not specified.</td>
</tr>
<tr>
<td><code>TRUNC(expr[, digits])</code></td>
<td>Synonym for <code>TRUNCATE</code>.</td>
</tr>
<tr>
<td><code>x + y</code></td>
<td>Addition.</td>
</tr>
<tr>
<td><code>x - y</code></td>
<td>Subtraction.</td>
</tr>
<tr>
<td><code>x * y</code></td>
<td>Multiplication.</td>
</tr>
<tr>
<td><code>x / y</code></td>
<td>Division.</td>
</tr>
<tr>
<td><code>MOD(x, y)</code></td>
<td>Modulo (remainder of x divided by y).</td>
</tr>
</tbody></table>

<h3 id="string-functions">String functions</h3>

<p>String functions accept strings, and return a type appropriate to the function.</p>

<table><thead>
<tr>
<th>Function</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td>`x \</td>
<td>\</td>
</tr>
<tr>
<td><code>CONCAT(expr, expr...)</code></td>
<td>Concats a list of expressions.</td>
</tr>
<tr>
<td><code>TEXTCAT(expr, expr)</code></td>
<td>Two argument version of CONCAT.</td>
</tr>
<tr>
<td><code>LENGTH(expr)</code></td>
<td>Length of expr in UTF-16 code units.</td>
</tr>
<tr>
<td><code>CHAR_LENGTH(expr)</code></td>
<td>Synonym for <code>LENGTH</code>.</td>
</tr>
<tr>
<td><code>CHARACTER_LENGTH(expr)</code></td>
<td>Synonym for <code>LENGTH</code>.</td>
</tr>
<tr>
<td><code>STRLEN(expr)</code></td>
<td>Synonym for <code>LENGTH</code>.</td>
</tr>
<tr>
<td><code>LOOKUP(expr, lookupName)</code></td>
<td>Look up expr in a registered <a href="lookups.html">query-time lookup table</a>.</td>
</tr>
<tr>
<td><code>LOWER(expr)</code></td>
<td>Returns expr in all lowercase.</td>
</tr>
<tr>
<td><code>REGEXP_EXTRACT(expr, pattern, [index])</code></td>
<td>Apply regular expression pattern and extract a capture group, or null if there is no match. If index is unspecified or zero, returns the substring that matched the pattern.</td>
</tr>
<tr>
<td><code>REPLACE(expr, pattern, replacement)</code></td>
<td>Replaces pattern with replacement in expr, and returns the result.</td>
</tr>
<tr>
<td><code>STRPOS(haystack, needle)</code></td>
<td>Returns the index of needle within haystack, starting from 1. If the needle is not found, returns 0.</td>
</tr>
<tr>
<td><code>SUBSTRING(expr, index, [length])</code></td>
<td>Returns a substring of expr starting at index, with a max length, both measured in UTF-16 code units.</td>
</tr>
<tr>
<td><code>SUBSTR(expr, index, [length])</code></td>
<td>Synonym for SUBSTRING.</td>
</tr>
<tr>
<td>`TRIM([BOTH \</td>
<td>LEADING \</td>
</tr>
<tr>
<td><code>BTRIM(expr[, chars])</code></td>
<td>Alternate form of <code>TRIM(BOTH &lt;chars&gt; FROM &lt;expr&gt;</code>).</td>
</tr>
<tr>
<td><code>LTRIM(expr[, chars])</code></td>
<td>Alternate form of <code>TRIM(LEADING &lt;chars&gt; FROM &lt;expr&gt;</code>).</td>
</tr>
<tr>
<td><code>RTRIM(expr[, chars])</code></td>
<td>Alternate form of <code>TRIM(TRAILING &lt;chars&gt; FROM &lt;expr&gt;</code>).</td>
</tr>
<tr>
<td><code>UPPER(expr)</code></td>
<td>Returns expr in all uppercase.</td>
</tr>
</tbody></table>

<h3 id="time-functions">Time functions</h3>

<p>Time functions can be used with Druid&#39;s <code>__time</code> column, with any column storing millisecond timestamps through use
of the <code>MILLIS_TO_TIMESTAMP</code> function, or with any column storing string timestamps through use of the <code>TIME_PARSE</code>
function. By default, time operations use the UTC time zone. You can change the time zone by setting the connection
context parameter &quot;sqlTimeZone&quot; to the name of another time zone, like &quot;America/Los_Angeles&quot;, or to an offset like
&quot;-08:00&quot;. If you need to mix multiple time zones in the same query, or if you need to use a time zone other than
the connection time zone, some functions also accept time zones as parameters. These parameters always take precedence
over the connection time zone.</p>

<table><thead>
<tr>
<th>Function</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td><code>CURRENT_TIMESTAMP</code></td>
<td>Current timestamp in the connection&#39;s time zone.</td>
</tr>
<tr>
<td><code>CURRENT_DATE</code></td>
<td>Current date in the connection&#39;s time zone.</td>
</tr>
<tr>
<td><code>DATE_TRUNC(&lt;unit&gt;, &lt;timestamp_expr&gt;)</code></td>
<td>Rounds down a timestamp, returning it as a new timestamp. Unit can be &#39;milliseconds&#39;, &#39;second&#39;, &#39;minute&#39;, &#39;hour&#39;, &#39;day&#39;, &#39;week&#39;, &#39;month&#39;, &#39;quarter&#39;, &#39;year&#39;, &#39;decade&#39;, &#39;century&#39;, or &#39;millenium&#39;.</td>
</tr>
<tr>
<td><code>TIME_FLOOR(&lt;timestamp_expr&gt;, &lt;period&gt;, [&lt;origin&gt;, [&lt;timezone&gt;]])</code></td>
<td>Rounds down a timestamp, returning it as a new timestamp. Period can be any ISO8601 period, like P3M (quarters) or PT12H (half-days). The time zone, if provided, should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;. This function is similar to <code>FLOOR</code> but is more flexible.</td>
</tr>
<tr>
<td><code>TIME_SHIFT(&lt;timestamp_expr&gt;, &lt;period&gt;, &lt;step&gt;, [&lt;timezone&gt;])</code></td>
<td>Shifts a timestamp by a period (step times), returning it as a new timestamp. Period can be any ISO8601 period. Step may be negative. The time zone, if provided, should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;.</td>
</tr>
<tr>
<td><code>TIME_EXTRACT(&lt;timestamp_expr&gt;, [&lt;unit&gt;, [&lt;timezone&gt;]])</code></td>
<td>Extracts a time part from expr, returning it as a number. Unit can be EPOCH, SECOND, MINUTE, HOUR, DAY (day of month), DOW (day of week), DOY (day of year), WEEK (week of <a href="https://en.wikipedia.org/wiki/ISO_week_date">week year</a>), MONTH (1 through 12), QUARTER (1 through 4), or YEAR. The time zone, if provided, should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;. This function is similar to <code>EXTRACT</code> but is more flexible. Unit and time zone must be literals, and must be provided quoted, like <code>TIME_EXTRACT(__time, &#39;HOUR&#39;)</code> or <code>TIME_EXTRACT(__time, &#39;HOUR&#39;, &#39;America/Los_Angeles&#39;)</code>.</td>
</tr>
<tr>
<td><code>TIME_PARSE(&lt;string_expr&gt;, [&lt;pattern&gt;, [&lt;timezone&gt;]])</code></td>
<td>Parses a string into a timestamp using a given <a href="http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html">Joda DateTimeFormat pattern</a>, or ISO8601 (e.g. <code>2000-01-02T03:04:05Z</code>) if the pattern is not provided. The time zone, if provided, should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;, and will be used as the time zone for strings that do not include a time zone offset. Pattern and time zone must be literals. Strings that cannot be parsed as timestamps will be returned as NULL.</td>
</tr>
<tr>
<td><code>TIME_FORMAT(&lt;timestamp_expr&gt;, [&lt;pattern&gt;, [&lt;timezone&gt;]])</code></td>
<td>Formats a timestamp as a string with a given <a href="http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html">Joda DateTimeFormat pattern</a>, or ISO8601 (e.g. <code>2000-01-02T03:04:05Z</code>) if the pattern is not provided. The time zone, if provided, should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;. Pattern and time zone must be literals.</td>
</tr>
<tr>
<td><code>MILLIS_TO_TIMESTAMP(millis_expr)</code></td>
<td>Converts a number of milliseconds since the epoch into a timestamp.</td>
</tr>
<tr>
<td><code>TIMESTAMP_TO_MILLIS(timestamp_expr)</code></td>
<td>Converts a timestamp into a number of milliseconds since the epoch.</td>
</tr>
<tr>
<td><code>EXTRACT(&lt;unit&gt; FROM timestamp_expr)</code></td>
<td>Extracts a time part from expr, returning it as a number. Unit can be EPOCH, SECOND, MINUTE, HOUR, DAY (day of month), DOW (day of week), DOY (day of year), WEEK (week of year), MONTH, QUARTER, or YEAR. Units must be provided unquoted, like <code>EXTRACT(HOUR FROM __time)</code>.</td>
</tr>
<tr>
<td><code>FLOOR(timestamp_expr TO &lt;unit&gt;)</code></td>
<td>Rounds down a timestamp, returning it as a new timestamp. Unit can be SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR.</td>
</tr>
<tr>
<td><code>CEIL(timestamp_expr TO &lt;unit&gt;)</code></td>
<td>Rounds up a timestamp, returning it as a new timestamp. Unit can be SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR.</td>
</tr>
<tr>
<td><code>TIMESTAMPADD(&lt;unit&gt;, &lt;count&gt;, &lt;timestamp&gt;)</code></td>
<td>Equivalent to <code>timestamp + count * INTERVAL &#39;1&#39; UNIT</code>.</td>
</tr>
<tr>
<td>`timestamp_expr { + \</td>
<td>- } <interval_expr>`</td>
</tr>
</tbody></table>

<h3 id="comparison-operators">Comparison operators</h3>

<table><thead>
<tr>
<th>Function</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td><code>x = y</code></td>
<td>Equals.</td>
</tr>
<tr>
<td><code>x &lt;&gt; y</code></td>
<td>Not-equals.</td>
</tr>
<tr>
<td><code>x &gt; y</code></td>
<td>Greater than.</td>
</tr>
<tr>
<td><code>x &gt;= y</code></td>
<td>Greater than or equal to.</td>
</tr>
<tr>
<td><code>x &lt; y</code></td>
<td>Less than.</td>
</tr>
<tr>
<td><code>x &lt;= y</code></td>
<td>Less than or equal to.</td>
</tr>
<tr>
<td><code>x BETWEEN y AND z</code></td>
<td>Equivalent to <code>x &gt;= y AND x &lt;= z</code>.</td>
</tr>
<tr>
<td><code>x NOT BETWEEN y AND z</code></td>
<td>Equivalent to <code>x &lt; y OR x &gt; z</code>.</td>
</tr>
<tr>
<td><code>x LIKE pattern [ESCAPE esc]</code></td>
<td>True if x matches a SQL LIKE pattern (with an optional escape).</td>
</tr>
<tr>
<td><code>x NOT LIKE pattern [ESCAPE esc]</code></td>
<td>True if x does not match a SQL LIKE pattern (with an optional escape).</td>
</tr>
<tr>
<td><code>x IS NULL</code></td>
<td>True if x is NULL or empty string.</td>
</tr>
<tr>
<td><code>x IS NOT NULL</code></td>
<td>True if x is neither NULL nor empty string.</td>
</tr>
<tr>
<td><code>x IS TRUE</code></td>
<td>True if x is true.</td>
</tr>
<tr>
<td><code>x IS NOT TRUE</code></td>
<td>True if x is not true.</td>
</tr>
<tr>
<td><code>x IS FALSE</code></td>
<td>True if x is false.</td>
</tr>
<tr>
<td><code>x IS NOT FALSE</code></td>
<td>True if x is not false.</td>
</tr>
<tr>
<td><code>x IN (values)</code></td>
<td>True if x is one of the listed values.</td>
</tr>
<tr>
<td><code>x NOT IN (values)</code></td>
<td>True if x is not one of the listed values.</td>
</tr>
<tr>
<td><code>x IN (subquery)</code></td>
<td>True if x is returned by the subquery. See <a href="#syntax-and-execution">Syntax and execution</a> above for details about how Druid SQL handles <code>IN (subquery)</code>.</td>
</tr>
<tr>
<td><code>x NOT IN (subquery)</code></td>
<td>True if x is not returned by the subquery. See <a href="#syntax-and-execution">Syntax and execution</a> for details about how Druid SQL handles <code>IN (subquery)</code>.</td>
</tr>
<tr>
<td><code>x AND y</code></td>
<td>Boolean AND.</td>
</tr>
<tr>
<td><code>x OR y</code></td>
<td>Boolean OR.</td>
</tr>
<tr>
<td><code>NOT x</code></td>
<td>Boolean NOT.</td>
</tr>
</tbody></table>

<h3 id="other-functions">Other functions</h3>

<table><thead>
<tr>
<th>Function</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td><code>CAST(value AS TYPE)</code></td>
<td>Cast value to another type. See <a href="#data-types-and-casts">Data types and casts</a> for details about how Druid SQL handles CAST.</td>
</tr>
<tr>
<td><code>CASE expr WHEN value1 THEN result1 \[ WHEN value2 THEN result2 ... \] \[ ELSE resultN \] END</code></td>
<td>Simple CASE.</td>
</tr>
<tr>
<td><code>CASE WHEN boolean_expr1 THEN result1 \[ WHEN boolean_expr2 THEN result2 ... \] \[ ELSE resultN \] END</code></td>
<td>Searched CASE.</td>
</tr>
<tr>
<td><code>NULLIF(value1, value2)</code></td>
<td>Returns NULL if value1 and value2 match, else returns value1.</td>
</tr>
<tr>
<td><code>COALESCE(value1, value2, ...)</code></td>
<td>Returns the first value that is neither NULL nor empty string.</td>
</tr>
</tbody></table>

<h3 id="unsupported-features">Unsupported features</h3>

<p>Druid does not support all SQL features, including:</p>

<ul>
<li>OVER clauses, and analytic functions such as <code>LAG</code> and <code>LEAD</code>.</li>
<li>JOIN clauses, other than semi-joins as described above.</li>
<li>OFFSET clauses.</li>
<li>DDL and DML.</li>
</ul>

<p>Additionally, some Druid features are not supported by the SQL language. Some unsupported Druid features include:</p>

<ul>
<li><a href="multi-value-dimensions.html">Multi-value dimensions</a>.</li>
<li><a href="../development/extensions-core/datasketches-extension.html">DataSketches aggregators</a>.</li>
<li><a href="../development/geo.html">Spatial filters</a>.</li>
<li><a href="querying.html#query-cancellation">Query cancellation</a>.</li>
</ul>

<h2 id="data-types-and-casts">Data types and casts</h2>

<p>Druid natively supports five basic column types: &quot;long&quot; (64 bit signed int), &quot;float&quot; (32 bit float), &quot;double&quot; (64 bit
float) &quot;string&quot; (UTF-8 encoded strings), and &quot;complex&quot; (catch-all for more exotic data types like hyperUnique and
approxHistogram columns). Timestamps (including the <code>__time</code> column) are stored as longs, with the value being the
number of milliseconds since 1 January 1970 UTC.</p>

<p>At runtime, Druid may widen 32-bit floats to 64-bit for certain operators, like SUM aggregators. The reverse will not
happen: 64-bit floats are not be narrowed to 32-bit.</p>

<p>Druid generally treats NULLs and empty strings interchangeably, rather than according to the SQL standard. As such,
Druid SQL only has partial support for NULLs. For example, the expressions <code>col IS NULL</code> and <code>col = &#39;&#39;</code> are equivalent,
and both will evaluate to true if <code>col</code> contains an empty string. Similarly, the expression <code>COALESCE(col1, col2)</code> will
return <code>col2</code> if <code>col1</code> is an empty string. While the <code>COUNT(*)</code> aggregator counts all rows, the <code>COUNT(expr)</code>
aggregator will count the number of rows where expr is neither null nor the empty string. String columns in Druid are
NULLable. Numeric columns are NOT NULL; if you query a numeric column that is not present in all segments of your Druid
datasource, then it will be treated as zero for rows from those segments.</p>

<p>For mathematical operations, Druid SQL will use integer math if all operands involved in an expression are integers.
Otherwise, Druid will switch to floating point math. You can force this to happen by casting one of your operands
to FLOAT.</p>

<p>The following table describes how SQL types map onto Druid types during query runtime. Casts between two SQL types
that have the same Druid runtime type will have no effect, other than exceptions noted in the table. Casts between two
SQL types that have different Druid runtime types will generate a runtime cast in Druid. If a value cannot be properly
cast to another value, as in <code>CAST(&#39;foo&#39; AS BIGINT)</code>, the runtime will substitute a default value. NULL values cast
to non-nullable types will also be substitued with a default value (for example, nulls cast to numbers will be
converted to zeroes).</p>

<table><thead>
<tr>
<th>SQL type</th>
<th>Druid runtime type</th>
<th>Default value</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td>CHAR</td>
<td>STRING</td>
<td><code>&#39;&#39;</code></td>
<td></td>
</tr>
<tr>
<td>VARCHAR</td>
<td>STRING</td>
<td><code>&#39;&#39;</code></td>
<td>Druid STRING columns are reported as VARCHAR</td>
</tr>
<tr>
<td>DECIMAL</td>
<td>DOUBLE</td>
<td><code>0.0</code></td>
<td>DECIMAL uses floating point, not fixed point math</td>
</tr>
<tr>
<td>FLOAT</td>
<td>FLOAT</td>
<td><code>0.0</code></td>
<td>Druid FLOAT columns are reported as FLOAT</td>
</tr>
<tr>
<td>REAL</td>
<td>DOUBLE</td>
<td><code>0.0</code></td>
<td></td>
</tr>
<tr>
<td>DOUBLE</td>
<td>DOUBLE</td>
<td><code>0.0</code></td>
<td>Druid DOUBLE columns are reported as DOUBLE</td>
</tr>
<tr>
<td>BOOLEAN</td>
<td>LONG</td>
<td><code>false</code></td>
<td></td>
</tr>
<tr>
<td>TINYINT</td>
<td>LONG</td>
<td><code>0</code></td>
<td></td>
</tr>
<tr>
<td>SMALLINT</td>
<td>LONG</td>
<td><code>0</code></td>
<td></td>
</tr>
<tr>
<td>INTEGER</td>
<td>LONG</td>
<td><code>0</code></td>
<td></td>
</tr>
<tr>
<td>BIGINT</td>
<td>LONG</td>
<td><code>0</code></td>
<td>Druid LONG columns (except <code>__time</code>) are reported as BIGINT</td>
</tr>
<tr>
<td>TIMESTAMP</td>
<td>LONG</td>
<td><code>0</code>, meaning 1970-01-01 00:00:00 UTC</td>
<td>Druid&#39;s <code>__time</code> column is reported as TIMESTAMP. Casts between string and timestamp types assume standard SQL formatting, e.g. <code>2000-01-02 03:04:05</code>, <em>not</em> ISO8601 formatting. For handling other formats, use one of the <a href="#time-functions">time functions</a></td>
</tr>
<tr>
<td>DATE</td>
<td>LONG</td>
<td><code>0</code>, meaning 1970-01-01</td>
<td>Casting TIMESTAMP to DATE rounds down the timestamp to the nearest day. Casts between string and date types assume standard SQL formatting, e.g. <code>2000-01-02</code>. For handling other formats, use one of the <a href="#time-functions">time functions</a></td>
</tr>
<tr>
<td>OTHER</td>
<td>COMPLEX</td>
<td>none</td>
<td>May represent various Druid column types such as hyperUnique, approxHistogram, etc</td>
</tr>
</tbody></table>

<h2 id="query-execution">Query execution</h2>

<p>Queries without aggregations will use Druid&#39;s <a href="scan-query.html">Scan</a> or <a href="select-query.html">Select</a> native query types.
Scan is used whenever possible, as it is generally higher performance and more efficient than Select. However, Select
is used in one case: when the query includes an <code>ORDER BY __time</code>, since Scan does not have a sorting feature.</p>

<p>Aggregation queries (using GROUP BY, DISTINCT, or any aggregation functions) will use one of Druid&#39;s three native
aggregation query types. Two (Timeseries and TopN) are specialized for specific types of aggregations, whereas the other
(GroupBy) is general-purpose.</p>

<ul>
<li><p><a href="timeseriesquery.html">Timeseries</a> is used for queries that GROUP BY <code>FLOOR(__time TO &lt;unit&gt;)</code> or <code>TIME_FLOOR(__time,
period)</code>, have no other grouping expressions, no HAVING or LIMIT clauses, no nesting, and either no ORDER BY, or an
ORDER BY that orders by same expression as present in GROUP BY. It also uses Timeseries for &quot;grand total&quot; queries that
have aggregation functions but no GROUP BY. This query type takes advantage of the fact that Druid segments are sorted
by time.</p></li>
<li><p><a href="topnquery.html">TopN</a> is used by default for queries that group by a single expression, do have ORDER BY and LIMIT
clauses, do not have HAVING clauses, and are not nested. However, the TopN query type will deliver approximate ranking
and results in some cases; if you want to avoid this, set &quot;useApproximateTopN&quot; to &quot;false&quot;. TopN results are always
computed in memory. See the TopN documentation for more details.</p></li>
<li><p><a href="groupbyquery.html">GroupBy</a> is used for all other aggregations, including any nested aggregation queries. Druid&#39;s
GroupBy is a traditional aggregation engine: it delivers exact results and rankings and supports a wide variety of
features. GroupBy aggregates in memory if it can, but it may spill to disk if it doesn&#39;t have enough memory to complete
your query. Results are streamed back from data nodes through the broker if you ORDER BY the same expressions in your
GROUP BY clause, or if you don&#39;t have an ORDER BY at all. If your query has an ORDER BY referencing expressions that
don&#39;t appear in the GROUP BY clause (like aggregation functions) then the broker will materialize a list of results in
memory, up to a max of your LIMIT, if any. See the GroupBy documentation for details about tuning performance and memory
use.</p></li>
</ul>

<p>If your query does nested aggregations (an aggregation subquery in your FROM clause) then Druid will execute it as a
<a href="groupbyquery.html#nested-groupbys">nested GroupBy</a>. In nested GroupBys, the innermost aggregation is distributed, but
all outer aggregations beyond that take place locally on the query broker.</p>

<p>Semi-join queries containing WHERE clauses like <code>col IN (SELECT expr FROM ...)</code> are executed with a special process. The
broker will first translate the subquery into a GroupBy to find distinct values of <code>expr</code>. Then, the broker will rewrite
the subquery to a literal filter, like <code>col IN (val1, val2, ...)</code> and run the outer query. The configuration parameter
druid.sql.planner.maxSemiJoinRowsInMemory controls the maximum number of values that will be materialized for this kind
of plan.</p>

<p>For all native query types, filters on the <code>__time</code> column will be translated into top-level query &quot;intervals&quot; whenever
possible, which allows Druid to use its global time index to quickly prune the set of data that must be scanned. In
addition, Druid will use indexes local to each data node to further speed up WHERE evaluation. This can typically be
done for filters that involve boolean combinations of references to and functions of single columns, like
<code>WHERE col1 = &#39;a&#39; AND col2 = &#39;b&#39;</code>, but not <code>WHERE col1 = col2</code>.</p>

<h3 id="approximate-algorithms">Approximate algorithms</h3>

<p>Druid SQL will use approximate algorithms in some situations:</p>

<ul>
<li>The <code>COUNT(DISTINCT col)</code> aggregation functions by default uses a variant of
<a href="http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf">HyperLogLog</a>, a fast approximate distinct counting
algorithm. Druid SQL will switch to exact distinct counts if you set &quot;useApproximateCountDistinct&quot; to &quot;false&quot;, either
through query context or through broker configuration.</li>
<li>GROUP BY queries over a single column with ORDER BY and LIMIT may be executed using the TopN engine, which uses an
approximate algorithm. Druid SQL will switch to an exact grouping algorithm if you set &quot;useApproximateTopN&quot; to &quot;false&quot;,
either through query context or through broker configuration.</li>
<li>The APPROX_COUNT_DISTINCT and APPROX_QUANTILE aggregation functions always use approximate algorithms, regardless
of configuration.</li>
</ul>

<h2 id="client-apis">Client APIs</h2>

<h3 id="json-over-http">JSON over HTTP</h3>

<p>You can make Druid SQL queries using JSON over HTTP by posting to the endpoint <code>/druid/v2/sql/</code>. The request should
be a JSON object with a &quot;query&quot; field, like <code>{&quot;query&quot; : &quot;SELECT COUNT(*) FROM data_source WHERE foo = &#39;bar&#39;&quot;}</code>.</p>

<p>You can use <em>curl</em> to send SQL queries from the command-line:</p>
<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span></span>$ cat query.json
<span class="o">{</span><span class="s2">&quot;query&quot;</span>:<span class="s2">&quot;SELECT COUNT(*) AS TheCount FROM data_source&quot;</span><span class="o">}</span>

$ curl -XPOST -H<span class="s1">&#39;Content-Type: application/json&#39;</span> http://BROKER:8082/druid/v2/sql/ -d @query.json
<span class="o">[{</span><span class="s2">&quot;TheCount&quot;</span>:24433<span class="o">}]</span>
</code></pre></div>
<p>There are a variety of <a href="#connection-context">connection context parameters</a> you can provide by adding a &quot;context&quot; map,
like:</p>
<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
  <span class="nt">&quot;query&quot;</span> <span class="p">:</span> <span class="s2">&quot;SELECT COUNT(*) FROM data_source WHERE foo = &#39;bar&#39; AND __time &gt; TIMESTAMP &#39;2000-01-01 00:00:00&#39;&quot;</span><span class="p">,</span>
  <span class="nt">&quot;context&quot;</span> <span class="p">:</span> <span class="p">{</span>
    <span class="nt">&quot;sqlTimeZone&quot;</span> <span class="p">:</span> <span class="s2">&quot;America/Los_Angeles&quot;</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
<p>Metadata is available over the HTTP API by querying <a href="#retrieving-metadata">system tables</a>.</p>

<h4 id="responses">Responses</h4>

<p>Druid SQL supports a variety of result formats. You can specify these by adding a &quot;resultFormat&quot; parameter, like:</p>
<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
  <span class="nt">&quot;query&quot;</span> <span class="p">:</span> <span class="s2">&quot;SELECT COUNT(*) FROM data_source WHERE foo = &#39;bar&#39; AND __time &gt; TIMESTAMP &#39;2000-01-01 00:00:00&#39;&quot;</span><span class="p">,</span>
  <span class="nt">&quot;resultFormat&quot;</span> <span class="p">:</span> <span class="s2">&quot;object&quot;</span>
<span class="p">}</span>
</code></pre></div>
<p>The supported result formats are:</p>

<table><thead>
<tr>
<th>Format</th>
<th>Description</th>
<th>Content-Type</th>
</tr>
</thead><tbody>
<tr>
<td><code>object</code></td>
<td>The default, a JSON array of JSON objects. Each object&#39;s field names match the columns returned by the SQL query, and are provided in the same order as the SQL query.</td>
<td>application/json</td>
</tr>
<tr>
<td><code>array</code></td>
<td>JSON array of JSON arrays. Each inner array has elements matching the columns returned by the SQL query, in order.</td>
<td>application/json</td>
</tr>
<tr>
<td><code>objectLines</code></td>
<td>Like &quot;object&quot;, but the JSON objects are separated by newlines instead of being wrapped in a JSON array. This can make it easier to parse the entire response set as a stream, if you do not have ready access to a streaming JSON parser. To make it possible to detect a truncated response, this format includes a trailer of one blank line.</td>
<td>text/plain</td>
</tr>
<tr>
<td><code>arrayLines</code></td>
<td>Like &quot;array&quot;, but the JSON arrays are separated by newlines instead of being wrapped in a JSON array. This can make it easier to parse the entire response set as a stream, if you do not have ready access to a streaming JSON parser. To make it possible to detect a truncated response, this format includes a trailer of one blank line.</td>
<td>text/plain</td>
</tr>
<tr>
<td><code>csv</code></td>
<td>Comma-separated values, with one row per line. Individual field values may be escaped by being surrounded in double quotes. If double quotes appear in a field value, they will be escaped by replacing them with double-double-quotes like <code>&quot;&quot;this&quot;&quot;</code>. To make it possible to detect a truncated response, this format includes a trailer of one blank line.</td>
<td>text/csv</td>
</tr>
</tbody></table>

<p>You can additionally request a header by setting &quot;header&quot; to true in your request, like:</p>
<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
  <span class="nt">&quot;query&quot;</span> <span class="p">:</span> <span class="s2">&quot;SELECT COUNT(*) FROM data_source WHERE foo = &#39;bar&#39; AND __time &gt; TIMESTAMP &#39;2000-01-01 00:00:00&#39;&quot;</span><span class="p">,</span>
  <span class="nt">&quot;resultFormat&quot;</span> <span class="p">:</span> <span class="s2">&quot;arrayLines&quot;</span><span class="p">,</span>
  <span class="nt">&quot;header&quot;</span> <span class="p">:</span> <span class="kc">true</span>
<span class="p">}</span>
</code></pre></div>
<p>In this case, the first result returned will be a header. For the <code>csv</code>, <code>array</code>, and <code>arrayLines</code> formats, the header
will be a list of column names. For the <code>object</code> and <code>objectLines</code> formats, the header will be an object where the
keys are column names, and the values are null.</p>

<p>Errors that occur before the response body is sent will be reported in JSON, with an HTTP 500 status code, in the
same format as <a href="../querying/querying.html#query-errors">native Druid query errors</a>. If an error occurs while the response body is
being sent, at that point it is too late to change the HTTP status code or report a JSON error, so the response will
simply end midstream and an error will be logged by the Druid server that was handling your request.</p>

<p>As a caller, it is important that you properly handle response truncation. This is easy for the &quot;object&quot; and &quot;array&quot;
formats, since truncated responses will be invalid JSON. For the line-oriented formats, you should check the
trailer they all include: one blank line at the end of the result set. If you detect a truncated response, either
through a JSON parsing error or through a missing trailing newline, you should assume the response was not fully
delivered due to an error.</p>

<h3 id="jdbc">JDBC</h3>

<p>You can make Druid SQL queries using the <a href="https://calcite.apache.org/avatica/downloads/">Avatica JDBC driver</a>. Once
you&#39;ve downloaded the Avatica client jar, add it to your classpath and use the connect string
<code>jdbc:avatica:remote:url=http://BROKER:8082/druid/v2/sql/avatica/</code>.</p>

<p>Example code:</p>
<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span><span class="c1">// Connect to /druid/v2/sql/avatica/ on your broker.</span>
<span class="n">String</span> <span class="n">url</span> <span class="o">=</span> <span class="s">&quot;jdbc:avatica:remote:url=http://localhost:8082/druid/v2/sql/avatica/&quot;</span><span class="o">;</span>

<span class="c1">// Set any connection context parameters you need here (see &quot;Connection context&quot; below).</span>
<span class="c1">// Or leave empty for default behavior.</span>
<span class="n">Properties</span> <span class="n">connectionProperties</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span>

<span class="k">try</span> <span class="o">(</span><span class="n">Connection</span> <span class="n">connection</span> <span class="o">=</span> <span class="n">DriverManager</span><span class="o">.</span><span class="na">getConnection</span><span class="o">(</span><span class="n">url</span><span class="o">,</span> <span class="n">connectionProperties</span><span class="o">))</span> <span class="o">{</span>
  <span class="k">try</span> <span class="o">(</span>
      <span class="kd">final</span> <span class="n">Statement</span> <span class="n">statement</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="na">createStatement</span><span class="o">();</span>
      <span class="kd">final</span> <span class="n">ResultSet</span> <span class="n">resultSet</span> <span class="o">=</span> <span class="n">statement</span><span class="o">.</span><span class="na">executeQuery</span><span class="o">(</span><span class="n">query</span><span class="o">)</span>
  <span class="o">)</span> <span class="o">{</span>
    <span class="k">while</span> <span class="o">(</span><span class="n">resultSet</span><span class="o">.</span><span class="na">next</span><span class="o">())</span> <span class="o">{</span>
      <span class="c1">// Do something</span>
    <span class="o">}</span>
  <span class="o">}</span>
<span class="o">}</span>
</code></pre></div>
<p>Table metadata is available over JDBC using <code>connection.getMetaData()</code> or by querying the
<a href="#retrieving-metadata">&quot;INFORMATION_SCHEMA&quot; tables</a>. Parameterized queries (using <code>?</code> or other placeholders) don&#39;t work properly,
so avoid those.</p>

<h4 id="connection-stickiness">Connection stickiness</h4>

<p>Druid&#39;s JDBC server does not share connection state between brokers. This means that if you&#39;re using JDBC and have
multiple Druid brokers, you should either connect to a specific broker, or use a load balancer with sticky sessions
enabled. The Druid Router node provides connection stickiness when balancing JDBC requests, and can be used to achieve
the necessary stickiness even with a normal non-sticky load balancer. Please see the
<a href="../development/router.html">Router</a> documentation for more details.</p>

<p>Note that the non-JDBC <a href="#json-over-http">JSON over HTTP</a> API is stateless and does not require stickiness.</p>

<h3 id="connection-context">Connection context</h3>

<p>Druid SQL supports setting connection parameters on the client. The parameters in the table below affect SQL planning.
All other context parameters you provide will be attached to Druid queries and can affect how they run. See
<a href="query-context.html">Query context</a> for details on the possible options.</p>

<p>Connection context can be specified as JDBC connection properties or as a &quot;context&quot; object in the JSON API.</p>

<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
<th>Default value</th>
</tr>
</thead><tbody>
<tr>
<td><code>sqlTimeZone</code></td>
<td>Sets the time zone for this connection, which will affect how time functions and timestamp literals behave. Should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;.</td>
<td>druid.sql.planner.sqlTimeZone on the broker (default: UTC)</td>
</tr>
<tr>
<td><code>useApproximateCountDistinct</code></td>
<td>Whether to use an approximate cardinalty algorithm for <code>COUNT(DISTINCT foo)</code>.</td>
<td>druid.sql.planner.useApproximateCountDistinct on the broker (default: true)</td>
</tr>
<tr>
<td><code>useApproximateTopN</code></td>
<td>Whether to use approximate <a href="topnquery.html">TopN queries</a> when a SQL query could be expressed as such. If false, exact <a href="groupbyquery.html">GroupBy queries</a> will be used instead.</td>
<td>druid.sql.planner.useApproximateTopN on the broker (default: true)</td>
</tr>
<tr>
<td><code>useFallback</code></td>
<td>Whether to evaluate operations on the broker when they cannot be expressed as Druid queries. This option is not recommended for production since it can generate unscalable query plans. If false, SQL queries that cannot be translated to Druid queries will fail.</td>
<td>druid.sql.planner.useFallback on the broker (default: false)</td>
</tr>
</tbody></table>

<h3 id="retrieving-metadata">Retrieving metadata</h3>

<p>Druid brokers infer table and column metadata for each dataSource from segments loaded in the cluster, and use this to
plan SQL queries. This metadata is cached on broker startup and also updated periodically in the background through
<a href="segmentmetadataquery.html">SegmentMetadata queries</a>. Background metadata refreshing is triggered by
segments entering and exiting the cluster, and can also be throttled through configuration.</p>

<p>Druid exposes system information through special system tables. There are two such schemas available: Information Schema and Sys Schema.
Information schema provides details about table and column types. The &quot;sys&quot; schema provides information about Druid internals like segments/tasks/servers.</p>

<h2 id="information-schema">INFORMATION SCHEMA</h2>

<p>You can access table and column metadata through JDBC using <code>connection.getMetaData()</code>, or through the
INFORMATION_SCHEMA tables described below. For example, to retrieve metadata for the Druid
datasource &quot;foo&quot;, use the query:</p>
<div class="highlight"><pre><code class="language-sql" data-lang="sql"><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">INFORMATION_SCHEMA</span><span class="p">.</span><span class="n">COLUMNS</span> <span class="k">WHERE</span> <span class="n">TABLE_SCHEMA</span> <span class="o">=</span> <span class="s1">&#39;druid&#39;</span> <span class="k">AND</span> <span class="k">TABLE_NAME</span> <span class="o">=</span> <span class="s1">&#39;foo&#39;</span>
</code></pre></div>
<h3 id="schemata-table">SCHEMATA table</h3>

<table><thead>
<tr>
<th>Column</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td>CATALOG_NAME</td>
<td>Unused</td>
</tr>
<tr>
<td>SCHEMA_NAME</td>
<td></td>
</tr>
<tr>
<td>SCHEMA_OWNER</td>
<td>Unused</td>
</tr>
<tr>
<td>DEFAULT_CHARACTER_SET_CATALOG</td>
<td>Unused</td>
</tr>
<tr>
<td>DEFAULT_CHARACTER_SET_SCHEMA</td>
<td>Unused</td>
</tr>
<tr>
<td>DEFAULT_CHARACTER_SET_NAME</td>
<td>Unused</td>
</tr>
<tr>
<td>SQL_PATH</td>
<td>Unused</td>
</tr>
</tbody></table>

<h3 id="tables-table">TABLES table</h3>

<table><thead>
<tr>
<th>Column</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td>TABLE_CATALOG</td>
<td>Unused</td>
</tr>
<tr>
<td>TABLE_SCHEMA</td>
<td></td>
</tr>
<tr>
<td>TABLE_NAME</td>
<td></td>
</tr>
<tr>
<td>TABLE_TYPE</td>
<td>&quot;TABLE&quot; or &quot;SYSTEM_TABLE&quot;</td>
</tr>
</tbody></table>

<h3 id="columns-table">COLUMNS table</h3>

<table><thead>
<tr>
<th>Column</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td>TABLE_CATALOG</td>
<td>Unused</td>
</tr>
<tr>
<td>TABLE_SCHEMA</td>
<td></td>
</tr>
<tr>
<td>TABLE_NAME</td>
<td></td>
</tr>
<tr>
<td>COLUMN_NAME</td>
<td></td>
</tr>
<tr>
<td>ORDINAL_POSITION</td>
<td></td>
</tr>
<tr>
<td>COLUMN_DEFAULT</td>
<td>Unused</td>
</tr>
<tr>
<td>IS_NULLABLE</td>
<td></td>
</tr>
<tr>
<td>DATA_TYPE</td>
<td></td>
</tr>
<tr>
<td>CHARACTER_MAXIMUM_LENGTH</td>
<td>Unused</td>
</tr>
<tr>
<td>CHARACTER_OCTET_LENGTH</td>
<td>Unused</td>
</tr>
<tr>
<td>NUMERIC_PRECISION</td>
<td></td>
</tr>
<tr>
<td>NUMERIC_PRECISION_RADIX</td>
<td></td>
</tr>
<tr>
<td>NUMERIC_SCALE</td>
<td></td>
</tr>
<tr>
<td>DATETIME_PRECISION</td>
<td></td>
</tr>
<tr>
<td>CHARACTER_SET_NAME</td>
<td></td>
</tr>
<tr>
<td>COLLATION_NAME</td>
<td></td>
</tr>
<tr>
<td>JDBC_TYPE</td>
<td>Type code from java.sql.Types (Druid extension)</td>
</tr>
</tbody></table>

<h2 id="system-schema">SYSTEM SCHEMA</h2>

<p>The &quot;sys&quot; schema provides visibility into Druid segments, servers and tasks.
For example to retrieve all segments for datasource &quot;wikipedia&quot;, use the query:
<code>sql
SELECT * FROM sys.segments WHERE datasource = &#39;wikipedia&#39;
</code></p>

<h3 id="segments-table">SEGMENTS table</h3>

<p>Segments table provides details on all Druid segments, whether they are published yet or not.</p>

<table><thead>
<tr>
<th>Column</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td>segment_id</td>
<td>Unique segment identifier</td>
</tr>
<tr>
<td>datasource</td>
<td>Name of datasource</td>
</tr>
<tr>
<td>start</td>
<td>Interval start time (in ISO 8601 format)</td>
</tr>
<tr>
<td>end</td>
<td>Interval end time (in ISO 8601 format)</td>
</tr>
<tr>
<td>size</td>
<td>Size of segment in bytes</td>
</tr>
<tr>
<td>version</td>
<td>Version string (generally an ISO8601 timestamp corresponding to when the segment set was first started). Higher version means the more recently created segment. Version comparing is based on string comparison.</td>
</tr>
<tr>
<td>partition_num</td>
<td>Partition number (an integer, unique within a datasource+interval+version; may not necessarily be contiguous)</td>
</tr>
<tr>
<td>num_replicas</td>
<td>Number of replicas of this segment currently being served</td>
</tr>
<tr>
<td>num_rows</td>
<td>Number of rows in current segment, this value could be null if unkown to broker at query time</td>
</tr>
<tr>
<td>is_published</td>
<td>Boolean is represented as long type where 1 = true, 0 = false. 1 represents this segment has been published to the metadata store</td>
</tr>
<tr>
<td>is_available</td>
<td>Boolean is represented as long type where 1 = true, 0 = false. 1 if this segment is currently being served by any server(historical or realtime)</td>
</tr>
<tr>
<td>is_realtime</td>
<td>Boolean is represented as long type where 1 = true, 0 = false. 1 if this segment is being served on any type of realtime tasks</td>
</tr>
<tr>
<td>payload</td>
<td>JSON-serialized data segment payload</td>
</tr>
</tbody></table>

<h3 id="servers-table">SERVERS table</h3>

<p>Servers table lists all data servers(any server that hosts a segment). It includes both historicals and peons.</p>

<table><thead>
<tr>
<th>Column</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td>server</td>
<td>Server name in the form host:port</td>
</tr>
<tr>
<td>host</td>
<td>Hostname of the server</td>
</tr>
<tr>
<td>plaintext_port</td>
<td>Unsecured port of the server, or -1 if plaintext traffic is disabled</td>
</tr>
<tr>
<td>tls_port</td>
<td>TLS port of the server, or -1 if TLS is disabled</td>
</tr>
<tr>
<td>server_type</td>
<td>Type of Druid service. Possible values include: historical, realtime and indexer_executor(peon).</td>
</tr>
<tr>
<td>tier</td>
<td>Distribution tier see <a href="#../configuration/index.html#Historical-General-Configuration">druid.server.tier</a></td>
</tr>
<tr>
<td>current_size</td>
<td>Current size of segments in bytes on this server</td>
</tr>
<tr>
<td>max_size</td>
<td>Max size in bytes this server recommends to assign to segments see <a href="#../configuration/index.html#Historical-General-Configuration">druid.server.maxSize</a></td>
</tr>
</tbody></table>

<p>To retrieve information about all servers, use the query:
<code>sql
SELECT * FROM sys.servers;
</code></p>

<h3 id="server_segments-table">SERVER_SEGMENTS table</h3>

<p>SERVER_SEGMENTS is used to join servers with segments table</p>

<table><thead>
<tr>
<th>Column</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td>server</td>
<td>Server name in format host:port (Primary key of <a href="#SERVERS-table">servers table</a>)</td>
</tr>
<tr>
<td>segment_id</td>
<td>Segment identifier (Primary key of <a href="#SEGMENTS-table">segments table</a>)</td>
</tr>
</tbody></table>

<p>JOIN between &quot;servers&quot; and &quot;segments&quot; can be used to query the number of segments for a specific datasource, 
grouped by server, example query:
<code>sql
SELECT count(segments.segment_id) as num_segments from sys.segments as segments 
INNER JOIN sys.server_segments as server_segments 
ON segments.segment_id  = server_segments.segment_id 
INNER JOIN sys.servers as servers 
ON servers.server = server_segments.server
WHERE segments.datasource = &#39;wikipedia&#39; 
GROUP BY servers.server;
</code></p>

<h3 id="tasks-table">TASKS table</h3>

<p>The tasks table provides information about active and recently-completed indexing tasks. For more information 
check out <a href="#../ingestion/tasks.html">ingestion tasks</a></p>

<table><thead>
<tr>
<th>Column</th>
<th>Notes</th>
</tr>
</thead><tbody>
<tr>
<td>task_id</td>
<td>Unique task identifier</td>
</tr>
<tr>
<td>type</td>
<td>Task type, for example this value is &quot;index&quot; for indexing tasks. See <a href="../ingestion/tasks.md">tasks-overview</a></td>
</tr>
<tr>
<td>datasource</td>
<td>Datasource name being indexed</td>
</tr>
<tr>
<td>created_time</td>
<td>Timestamp in ISO8601 format corresponding to when the ingestion task was created. Note that this value is populated for completed and waiting tasks. For running and pending tasks this value is set to 1970-01-01T00:00:00Z</td>
</tr>
<tr>
<td>queue_insertion_time</td>
<td>Timestamp in ISO8601 format corresponding to when this task was added to the queue on the overlord</td>
</tr>
<tr>
<td>status</td>
<td>Status of a task can be RUNNING, FAILED, SUCCESS</td>
</tr>
<tr>
<td>runner_status</td>
<td>Runner status of a completed task would be NONE, for in-progress tasks this can be RUNNING, WAITING, PENDING</td>
</tr>
<tr>
<td>duration</td>
<td>Time it took to finish the task in milliseconds, this value is present only for completed tasks</td>
</tr>
<tr>
<td>location</td>
<td>Server name where this task is running in the format host:port, this information is present only for RUNNING tasks</td>
</tr>
<tr>
<td>host</td>
<td>Hostname of the server where task is running</td>
</tr>
<tr>
<td>plaintext_port</td>
<td>Unsecured port of the server, or -1 if plaintext traffic is disabled</td>
</tr>
<tr>
<td>tls_port</td>
<td>TLS port of the server, or -1 if TLS is disabled</td>
</tr>
<tr>
<td>error_msg</td>
<td>Detailed error message in case of FAILED tasks</td>
</tr>
</tbody></table>

<p>For example, to retrieve tasks information filtered by status, use the query
<code>sql
SELECT * FROM sys.tasks where status=&#39;FAILED&#39;;
</code></p>

<h2 id="server-configuration">Server configuration</h2>

<p>The Druid SQL server is configured through the following properties on the broker.</p>

<table><thead>
<tr>
<th>Property</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead><tbody>
<tr>
<td><code>druid.sql.enable</code></td>
<td>Whether to enable SQL at all, including background metadata fetching. If false, this overrides all other SQL-related properties and disables SQL metadata, serving, and planning completely.</td>
<td>false</td>
</tr>
<tr>
<td><code>druid.sql.avatica.enable</code></td>
<td>Whether to enable JDBC querying at <code>/druid/v2/sql/avatica/</code>.</td>
<td>true</td>
</tr>
<tr>
<td><code>druid.sql.avatica.maxConnections</code></td>
<td>Maximum number of open connections for the Avatica server. These are not HTTP connections, but are logical client connections that may span multiple HTTP connections.</td>
<td>50</td>
</tr>
<tr>
<td><code>druid.sql.avatica.maxRowsPerFrame</code></td>
<td>Maximum number of rows to return in a single JDBC frame. Setting this property to -1 indicates that no row limit should be applied. Clients can optionally specify a row limit in their requests; if a client specifies a row limit, the lesser value of the client-provided limit and <code>maxRowsPerFrame</code> will be used.</td>
<td>5,000</td>
</tr>
<tr>
<td><code>druid.sql.avatica.maxStatementsPerConnection</code></td>
<td>Maximum number of simultaneous open statements per Avatica client connection.</td>
<td>1</td>
</tr>
<tr>
<td><code>druid.sql.avatica.connectionIdleTimeout</code></td>
<td>Avatica client connection idle timeout.</td>
<td>PT5M</td>
</tr>
<tr>
<td><code>druid.sql.http.enable</code></td>
<td>Whether to enable JSON over HTTP querying at <code>/druid/v2/sql/</code>.</td>
<td>true</td>
</tr>
<tr>
<td><code>druid.sql.planner.maxQueryCount</code></td>
<td>Maximum number of queries to issue, including nested queries. Set to 1 to disable sub-queries, or set to 0 for unlimited.</td>
<td>8</td>
</tr>
<tr>
<td><code>druid.sql.planner.maxSemiJoinRowsInMemory</code></td>
<td>Maximum number of rows to keep in memory for executing two-stage semi-join queries like <code>SELECT * FROM Employee WHERE DeptName IN (SELECT DeptName FROM Dept)</code>.</td>
<td>100000</td>
</tr>
<tr>
<td><code>druid.sql.planner.maxTopNLimit</code></td>
<td>Maximum threshold for a <a href="../querying/topnquery.html">TopN query</a>. Higher limits will be planned as <a href="../querying/groupbyquery.html">GroupBy queries</a> instead.</td>
<td>100000</td>
</tr>
<tr>
<td><code>druid.sql.planner.metadataRefreshPeriod</code></td>
<td>Throttle for metadata refreshes.</td>
<td>PT1M</td>
</tr>
<tr>
<td><code>druid.sql.planner.selectPageSize</code></td>
<td>Page size threshold for <a href="../querying/select-query.html">Select queries</a>. Select queries for larger resultsets will be issued back-to-back using pagination.</td>
<td>1000</td>
</tr>
<tr>
<td><code>druid.sql.planner.useApproximateCountDistinct</code></td>
<td>Whether to use an approximate cardinalty algorithm for <code>COUNT(DISTINCT foo)</code>.</td>
<td>true</td>
</tr>
<tr>
<td><code>druid.sql.planner.useApproximateTopN</code></td>
<td>Whether to use approximate <a href="../querying/topnquery.html">TopN queries</a> when a SQL query could be expressed as such. If false, exact <a href="../querying/groupbyquery.html">GroupBy queries</a> will be used instead.</td>
<td>true</td>
</tr>
<tr>
<td><code>druid.sql.planner.useFallback</code></td>
<td>Whether to evaluate operations on the broker when they cannot be expressed as Druid queries. This option is not recommended for production since it can generate unscalable query plans. If false, SQL queries that cannot be translated to Druid queries will fail.</td>
<td>false</td>
</tr>
<tr>
<td><code>druid.sql.planner.requireTimeCondition</code></td>
<td>Whether to require SQL to have filter conditions on __time column so that all generated native queries will have user specified intervals. If true, all queries wihout filter condition on __time column will fail</td>
<td>false</td>
</tr>
<tr>
<td><code>druid.sql.planner.sqlTimeZone</code></td>
<td>Sets the default time zone for the server, which will affect how time functions and timestamp literals behave. Should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;.</td>
<td>UTC</td>
</tr>
</tbody></table>

        </div>
        <div class="col-md-3">
          <div class="searchbox">
            <gcse:searchbox-only></gcse:searchbox-only>
          </div>
          <div id="toc" class="nav toc hidden-print">
          </div>
        </div>
      </div>
    </div>

    <!-- Start page_footer include -->
<footer class="druid-footer">
<div class="container">
  <div class="text-center">
    <p>
    <a href="/technology">Technology</a>&ensp;·&ensp;
    <a href="/use-cases">Use Cases</a>&ensp;·&ensp;
    <a href="/druid-powered">Powered by Druid</a>&ensp;·&ensp;
    <a href="/docs/latest/">Docs</a>&ensp;·&ensp;
    <a href="/community/">Community</a>&ensp;·&ensp;
    <a href="/downloads.html">Download</a>&ensp;·&ensp;
    <a href="/faq">FAQ</a>
    </p>
  </div>
  <div class="text-center">
    <a title="Join the user group" href="https://groups.google.com/forum/#!forum/druid-user" target="_blank"><span class="fa fa-comments"></span></a>&ensp;·&ensp;
    <a title="Follow Druid" href="https://twitter.com/druidio" target="_blank"><span class="fab fa-twitter"></span></a>&ensp;·&ensp;
    <a title="GitHub" href="https://github.com/apache/druid" target="_blank"><span class="fab fa-github"></span></a>
  </div>
  <div class="text-center license">
    Copyright © 2020 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a>.<br>
    Except where otherwise noted, licensed under <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.<br>
    Apache Druid, Druid, and the Druid logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
  </div>
</div>
</footer>

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'UA-131010415-1');
</script>
<script>
  function trackDownload(type, url) {
    ga('send', 'event', 'download', type, url);
  }
</script>
<script src="//code.jquery.com/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="/assets/js/druid.js"></script>
<!-- stop page_footer include -->


    <script>
    $(function() {
      $(".toc").load("/docs/0.13.0-incubating/toc.html");

      // There is no way to tell when .gsc-input will be async loaded into the page so just try to set a placeholder until it works
      var tries = 0;
      var timer = setInterval(function() {
        tries++;
        if (tries > 300) clearInterval(timer);
        var searchInput = $('input.gsc-input');
        if (searchInput.length) {
          searchInput.attr('placeholder', 'Search');
          clearInterval(timer);
        }
      }, 100);
    });
    </script>
  </body>
</html>
