<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-misc/math-expr">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Expressions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/misc/math-expr"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Expressions | Apache® Druid"><meta data-rh="true" name="description" content="&lt;!--"><meta data-rh="true" property="og:description" content="&lt;!--"><link data-rh="true" rel="icon" href="/img/favicon.png"><link data-rh="true" rel="canonical" href="https://druid.apache.org/docs/latest/misc/math-expr"><link data-rh="true" rel="alternate" href="https://druid.apache.org/docs/latest/misc/math-expr" hreflang="en"><link data-rh="true" rel="alternate" href="https://druid.apache.org/docs/latest/misc/math-expr" hreflang="x-default"><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>




<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.546f39eb.css">
<link rel="preload" href="/assets/js/runtime~main.19a75589.js" as="script">
<link rel="preload" href="/assets/js/main.20dca3d5.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/druid_nav.png" alt="Apache® Druid" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/druid_nav.png" alt="Apache® Druid" class="themedImage_ToTc themedImage--dark_i4oU"></div></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/technology">Technology</a><a class="navbar__item navbar__link" href="/use-cases">Use Cases</a><a class="navbar__item navbar__link" href="/druid-powered">Powered By</a><a class="navbar__item navbar__link" href="/docs/latest/design/">Docs</a><a class="navbar__item navbar__link" href="/community/">Community</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Apache®</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Foundation<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://apachecon.com/?ref=druid.apache.org" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><a class="navbar__item navbar__link" href="/downloads/">Download</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><main class="docMainContainer_gTbr docMainContainerEnhanced_Uz_u"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Expressions</h1></header><blockquote><p>Apache Druid supports two query languages: <a href="/docs/latest/querying/">native queries</a> and <a href="/docs/latest/querying/sql">Druid SQL</a>.
This document describes the native language. For information about functions available in SQL, refer to the
<a href="/docs/latest/querying/sql-scalar">SQL documentation</a>.</p></blockquote><p>Expressions are used in various places in the native query language, including
<a href="/docs/latest/querying/virtual-columns">virtual columns</a> and <a href="/docs/latest/querying/datasource#join">join conditions</a>. They are
also generated by most <a href="/docs/latest/querying/sql-scalar">Druid SQL functions</a> during the
<a href="/docs/latest/querying/sql-translation">query translation</a> process.</p><p>Expressions are also used at ingestion time inside <a href="/docs/latest/ingestion/ingestion-spec#transforms">transformations</a>.</p><p>This expression language supports the following operators (listed in decreasing order of precedence).</p><table><thead><tr><th>Operators</th><th>Description</th></tr></thead><tbody><tr><td>!, -</td><td>Unary NOT and Minus</td></tr><tr><td>^</td><td>Binary power op</td></tr><tr><td>*, /, %</td><td>Binary multiplicative</td></tr><tr><td>+, -</td><td>Binary additive</td></tr><tr><td>&lt;, &lt;=, &gt;, &gt;=, ==, !=</td><td>Binary Comparison</td></tr><tr><td>&amp;&amp;, <!-- -->|<!-- -->|</td><td>Binary Logical AND, OR</td></tr></tbody></table><p>Long, double, and string data types are supported. If a number contains a dot, it is interpreted as a double, otherwise it is interpreted as a long. That means, always add a &#x27;.&#x27; to your number if you want it interpreted as a double value. String literals should be quoted by single quotation marks.</p><p>Additionally, the expression language supports long, double, and string arrays. Array literals are created by wrapping square brackets around a list of scalar literals values delimited by a comma or space character. All values in an array literal must be the same type, however null values are accepted. Typed empty arrays may be defined by prefixing with their type in angle brackets: <code>&lt;STRING&gt;[]</code>, <code>&lt;DOUBLE&gt;[]</code>, or <code>&lt;LONG&gt;[]</code>.</p><p>Expressions can contain variables. Variable names may contain letters, digits, &#x27;<!-- -->_<!-- -->&#x27; and &#x27;$&#x27;. Variable names must not begin with a digit. To escape other special characters, you can quote it with double quotation marks.</p><p>For logical operators, a number is true if and only if it is positive (0 or negative value means false). For string type, it&#x27;s the evaluation result of &#x27;Boolean.valueOf(string)&#x27;.</p><p><a href="/docs/latest/querying/multi-value-dimensions">Multi-value string dimensions</a> are supported and may be treated as either scalar or array typed values, as follows:  </p><ul><li>When treated as a scalar type, the expression is automatically transformed so that the scalar operation is applied across all values of the multi-valued type, mimicking Druid&#x27;s native behavior. </li><li>Druid coerces values that result in arrays back into the native Druid string type for grouping and aggregation. Grouping on multi-value string dimensions in Druid groups by the individual values, not the &#x27;array&#x27;. This behavior produces results similar to an implicit SQL <code>UNNEST</code> operation. Alternatively, you can use the <code>array_to_string</code> function to perform the aggregation on a <em>stringified</em> version of the complete array and therefore preserve the complete row. To transform the stringified dimension back into the true native array type, use <code>string_to_array</code> in an expression post-aggregator.</li></ul><p>The following built-in functions are available.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="general-functions">General functions<a href="#general-functions" class="hash-link" aria-label="Direct link to General functions" title="Direct link to General functions">​</a></h2><table><thead><tr><th>name</th><th>description</th></tr></thead><tbody><tr><td>cast</td><td>cast(expr,LONG or DOUBLE or STRING or ARRAY&lt;LONG<!-- -->&gt;<!-- -->, or ARRAY&lt;DOUBLE<!-- -->&gt;<!-- --> or ARRAY&lt;STRING<!-- -->&gt;<!-- -->) returns expr with specified type. exception can be thrown. Scalar types may be cast to array types and will take the form of a single element list (null will still be null).</td></tr><tr><td>if</td><td>if(predicate,then,else) returns &#x27;then&#x27; if &#x27;predicate&#x27; evaluates to a positive number, otherwise it returns &#x27;else&#x27;</td></tr><tr><td>nvl</td><td>nvl(expr,expr-for-null) returns &#x27;expr-for-null&#x27; if &#x27;expr&#x27; is null (or empty string for string type)</td></tr><tr><td>like</td><td>like(expr, pattern<!-- -->[, escape]<!-- -->) is equivalent to SQL <code>expr LIKE pattern</code></td></tr><tr><td>case_searched</td><td>case_searched(expr1, result1, <!-- -->[<!-- -->[<!-- -->expr2, result2, ...<!-- -->]<!-- -->, else-result<!-- -->]<!-- -->) is similar to <code>CASE WHEN expr1 THEN result1 [ELSE else_result] END</code> in SQL</td></tr><tr><td>case_simple</td><td>case_simple(expr, value1, result1, <!-- -->[<!-- -->[<!-- -->value2, result2, ...<!-- -->]<!-- -->, else-result<!-- -->]<!-- -->) is similar to <code>CASE expr WHEN value THEN result [ELSE else_result] END</code> in SQL</td></tr><tr><td>isnull</td><td>isnull(expr) returns 1 if the value is null, else 0</td></tr><tr><td>notnull</td><td>notnull(expr) returns 1 if the value is not null, else 0</td></tr><tr><td>bloom_filter_test</td><td>bloom_filter_test(expr, filter) tests the value of &#x27;expr&#x27; against &#x27;filter&#x27;, a bloom filter serialized as a base64 string. See <a href="/docs/latest/development/extensions-core/bloom-filter">bloom filter extension</a> documentation for additional details.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="string-functions">String functions<a href="#string-functions" class="hash-link" aria-label="Direct link to String functions" title="Direct link to String functions">​</a></h2><table><thead><tr><th>name</th><th>description</th></tr></thead><tbody><tr><td>concat</td><td>concat(expr, expr...) concatenate a list of strings</td></tr><tr><td>format</td><td>format(pattern<!-- -->[, args...]<!-- -->) returns a string formatted in the manner of Java&#x27;s <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-" target="_blank" rel="noopener noreferrer">String.format</a>.</td></tr><tr><td>like</td><td>like(expr, pattern<!-- -->[, escape]<!-- -->) is equivalent to SQL <code>expr LIKE pattern</code></td></tr><tr><td>lookup</td><td>lookup(expr, lookup-name) looks up expr in a registered <a href="/docs/latest/querying/lookups">query-time lookup</a></td></tr><tr><td>parse_long</td><td>parse_long(string<!-- -->[, radix]<!-- -->) parses a string as a long with the given radix, or 10 (decimal) if a radix is not provided.</td></tr><tr><td>regexp_extract</td><td>regexp_extract(expr, pattern<!-- -->[, index]<!-- -->) applies a regular expression pattern and extracts a capture group index, or null if there is no match. If index is unspecified or zero, returns the substring that matched the pattern. The pattern may match anywhere inside <code>expr</code>; if you want to match the entire string instead, use the <code>^</code> and <code>$</code> markers at the start and end of your pattern.</td></tr><tr><td>regexp_like</td><td>regexp_like(expr, pattern) returns whether <code>expr</code> matches regular expression <code>pattern</code>. The pattern may match anywhere inside <code>expr</code>; if you want to match the entire string instead, use the <code>^</code> and <code>$</code> markers at the start and end of your pattern.</td></tr><tr><td>contains_string</td><td>contains_string(expr, string) returns whether <code>expr</code> contains <code>string</code> as a substring. This method is case-sensitive.</td></tr><tr><td>icontains_string</td><td>contains_string(expr, string) returns whether <code>expr</code> contains <code>string</code> as a substring. This method is case-insensitive.</td></tr><tr><td>replace</td><td>replace(expr, pattern, replacement) replaces pattern with replacement</td></tr><tr><td>substring</td><td>substring(expr, index, length) behaves like java.lang.String&#x27;s substring</td></tr><tr><td>right</td><td>right(expr, length) returns the rightmost length characters from a string</td></tr><tr><td>left</td><td>left(expr, length) returns the leftmost length characters from a string</td></tr><tr><td>strlen</td><td>strlen(expr) returns length of a string in UTF-16 code units</td></tr><tr><td>strpos</td><td>strpos(haystack, needle<!-- -->[, fromIndex]<!-- -->) returns the position of the needle within the haystack, with indexes starting from 0. The search will begin at fromIndex, or 0 if fromIndex is not specified. If the needle is not found then the function returns -1.</td></tr><tr><td>trim</td><td>trim(expr<!-- -->[, chars]<!-- -->) remove leading and trailing characters from <code>expr</code> if they are present in <code>chars</code>. <code>chars</code> defaults to &#x27; &#x27; (space) if not provided.</td></tr><tr><td>ltrim</td><td>ltrim(expr<!-- -->[, chars]<!-- -->) remove leading characters from <code>expr</code> if they are present in <code>chars</code>. <code>chars</code> defaults to &#x27; &#x27; (space) if not provided.</td></tr><tr><td>rtrim</td><td>rtrim(expr<!-- -->[, chars]<!-- -->) remove trailing characters from <code>expr</code> if they are present in <code>chars</code>. <code>chars</code> defaults to &#x27; &#x27; (space) if not provided.</td></tr><tr><td>lower</td><td>lower(expr) converts a string to lowercase</td></tr><tr><td>upper</td><td>upper(expr) converts a string to uppercase</td></tr><tr><td>reverse</td><td>reverse(expr) reverses a string</td></tr><tr><td>repeat</td><td>repeat(expr, N) repeats a string N times</td></tr><tr><td>lpad</td><td>lpad(expr, length, chars) returns a string of <code>length</code> from <code>expr</code> left-padded with <code>chars</code>. If <code>length</code> is shorter than the length of <code>expr</code>, the result is <code>expr</code> which is truncated to <code>length</code>. The result will be null if either <code>expr</code> or <code>chars</code> is null. If <code>chars</code> is an empty string, no padding is added, however <code>expr</code> may be trimmed if necessary.</td></tr><tr><td>rpad</td><td>rpad(expr, length, chars) returns a string of <code>length</code> from <code>expr</code> right-padded with <code>chars</code>. If <code>length</code> is shorter than the length of <code>expr</code>, the result is <code>expr</code> which is truncated to <code>length</code>. The result will be null if either <code>expr</code> or <code>chars</code> is null. If <code>chars</code> is an empty string, no padding is added, however <code>expr</code> may be trimmed if necessary.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="time-functions">Time functions<a href="#time-functions" class="hash-link" aria-label="Direct link to Time functions" title="Direct link to Time functions">​</a></h2><table><thead><tr><th>name</th><th>description</th></tr></thead><tbody><tr><td>timestamp</td><td>timestamp(expr<!-- -->[,format-string]<!-- -->) parses string expr into date then returns milliseconds from java epoch. without &#x27;format-string&#x27; it&#x27;s regarded as ISO datetime format</td></tr><tr><td>unix_timestamp</td><td>same with &#x27;timestamp&#x27; function but returns seconds instead</td></tr><tr><td>timestamp_ceil</td><td>timestamp_ceil(expr, period, <!-- -->[<!-- -->origin, <!-- -->[<!-- -->timezone<!-- -->]<!-- -->]<!-- -->) rounds up 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;.</td></tr><tr><td>timestamp_floor</td><td>timestamp_floor(expr, period, <!-- -->[<!-- -->origin, [timezone<!-- -->]<!-- -->]<!-- -->) 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;.</td></tr><tr><td>timestamp_shift</td><td>timestamp_shift(expr, period, step, <!-- -->[<!-- -->timezone<!-- -->]<!-- -->) 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>timestamp_extract</td><td>timestamp_extract(expr, unit, <!-- -->[<!-- -->timezone<!-- -->]<!-- -->) extracts a time part from expr, returning it as a number. Unit can be EPOCH (number of seconds since 1970-01-01 00:00:00 UTC), 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" target="_blank" rel="noopener noreferrer">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;</td></tr><tr><td>timestamp_parse</td><td>timestamp_parse(string expr, <!-- -->[<!-- -->pattern, [timezone<!-- -->]<!-- -->]<!-- -->) parses a string into a timestamp using a given <a href="http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat" target="_blank" rel="noopener noreferrer">Joda DateTimeFormat pattern</a>. If the pattern is not provided, this parses time strings in either ISO8601 or SQL format. 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 nulls.</td></tr><tr><td>timestamp_format</td><td>timestamp_format(expr, <!-- -->[<!-- -->pattern, <!-- -->[<!-- -->timezone<!-- -->]<!-- -->]<!-- -->) formats a timestamp as a string with a given <a href="http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat" target="_blank" rel="noopener noreferrer">Joda DateTimeFormat pattern</a>, or ISO8601 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></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="math-functions">Math functions<a href="#math-functions" class="hash-link" aria-label="Direct link to Math functions" title="Direct link to Math functions">​</a></h2><p>See javadoc of java.lang.Math for detailed explanation for each function.</p><table><thead><tr><th>name</th><th>description</th></tr></thead><tbody><tr><td>abs</td><td>abs(x) returns the absolute value of x</td></tr><tr><td>acos</td><td>acos(x) returns the arc cosine of x</td></tr><tr><td>asin</td><td>asin(x) returns the arc sine of x</td></tr><tr><td>atan</td><td>atan(x) returns the arc tangent of x</td></tr><tr><td>bitwiseAnd</td><td>bitwiseAnd(x,y) returns the result of x &amp; y. Double values will be implicitly cast to longs, use <code>bitwiseConvertDoubleToLongBits</code> to perform bitwise operations directly with doubles</td></tr><tr><td>bitwiseComplement</td><td>bitwiseComplement(x) returns the result of ~x. Double values will be implicitly cast to longs, use <code>bitwiseConvertDoubleToLongBits</code> to perform bitwise operations directly with doubles</td></tr><tr><td>bitwiseConvertDoubleToLongBits</td><td>bitwiseConvertDoubleToLongBits(x) converts the bits of an IEEE 754 floating-point double value to a long. If the input is not a double, it is implicitly cast to a double prior to conversion</td></tr><tr><td>bitwiseConvertLongBitsToDouble</td><td>bitwiseConvertLongBitsToDouble(x) converts a long to the IEEE 754 floating-point double specified by the bits stored in the long. If the input is not a long, it is implicitly cast to a long prior to conversion</td></tr><tr><td>bitwiseOr</td><td>bitwiseOr(x,y) returns the result of x <!-- -->[PIPE]<!-- --> y. Double values will be implicitly cast to longs, use <code>bitwiseConvertDoubleToLongBits</code> to perform bitwise operations directly with doubles</td></tr><tr><td>bitwiseShiftLeft</td><td>bitwiseShiftLeft(x,y) returns the result of x &lt;&lt; y. Double values will be implicitly cast to longs, use <code>bitwiseConvertDoubleToLongBits</code> to perform bitwise operations directly with doubles</td></tr><tr><td>bitwiseShiftRight</td><td>bitwiseShiftRight(x,y) returns the result of x &gt;&gt; y. Double values will be implicitly cast to longs, use <code>bitwiseConvertDoubleToLongBits</code> to perform bitwise operations directly with doubles</td></tr><tr><td>bitwiseXor</td><td>bitwiseXor(x,y) returns the result of x ^ y. Double values will be implicitly cast to longs, use <code>bitwiseConvertDoubleToLongBits</code> to perform bitwise operations directly with doubles</td></tr><tr><td>atan2</td><td>atan2(y, x) returns the angle theta from the conversion of rectangular coordinates (x, y) to polar * coordinates (r, theta)</td></tr><tr><td>cbrt</td><td>cbrt(x) returns the cube root of x</td></tr><tr><td>ceil</td><td>ceil(x) returns the smallest (closest to negative infinity) double value that is greater than or equal to x and is equal to a mathematical integer</td></tr><tr><td>copysign</td><td>copysign(x) returns the first floating-point argument with the sign of the second floating-point argument</td></tr><tr><td>cos</td><td>cos(x) returns the trigonometric cosine of x</td></tr><tr><td>cosh</td><td>cosh(x) returns the hyperbolic cosine of x</td></tr><tr><td>cot</td><td>cot(x) returns the trigonometric cotangent of an angle x</td></tr><tr><td>div</td><td>div(x,y) is integer division of x by y</td></tr><tr><td>exp</td><td>exp(x) returns Euler&#x27;s number raised to the power of x</td></tr><tr><td>expm1</td><td>expm1(x) returns e^x-1</td></tr><tr><td>floor</td><td>floor(x) returns the largest (closest to positive infinity) double value that is less than or equal to x and is equal to a mathematical integer</td></tr><tr><td>getExponent</td><td>getExponent(x) returns the unbiased exponent used in the representation of x</td></tr><tr><td>hypot</td><td>hypot(x, y) returns sqrt(x^2+y^2) without intermediate overflow or underflow</td></tr><tr><td>log</td><td>log(x) returns the natural logarithm of x</td></tr><tr><td>log10</td><td>log10(x) returns the base 10 logarithm of x</td></tr><tr><td>log1p</td><td>log1p(x) will the natural logarithm of x + 1</td></tr><tr><td>max</td><td>max(x, y) returns the greater of two values</td></tr><tr><td>min</td><td>min(x, y) returns the smaller of two values</td></tr><tr><td>nextafter</td><td>nextafter(x, y) returns the floating-point number adjacent to the x in the direction of the y</td></tr><tr><td>nextUp</td><td>nextUp(x) returns the floating-point value adjacent to x in the direction of positive infinity</td></tr><tr><td>pi</td><td>pi returns the constant value of the π</td></tr><tr><td>pow</td><td>pow(x, y) returns the value of the x raised to the power of y</td></tr><tr><td>remainder</td><td>remainder(x, y) returns the remainder operation on two arguments as prescribed by the IEEE 754 standard</td></tr><tr><td>rint</td><td>rint(x) returns value that is closest in value to x and is equal to a mathematical integer</td></tr><tr><td>round</td><td>round(x, y) returns the value of the x rounded to the y decimal places. While x can be an integer or floating-point number, y must be an integer. The type of the return value is specified by that of x. y defaults to 0 if omitted. When y is negative, x is rounded on the left side of the y decimal points. If x is <code>NaN</code>, x returns 0. If x is infinity, x will be converted to the nearest finite double.</td></tr><tr><td>safe_divide</td><td>safe_divide(x,y) returns the division of x by y if y is not equal to 0. In case y is 0 it returns 0 or <code>null</code> if <code>druid.generic.useDefaultValueForNull=false</code></td></tr><tr><td>scalb</td><td>scalb(d, sf) returns d * 2^sf rounded as if performed by a single correctly rounded floating-point multiply to a member of the double value set</td></tr><tr><td>signum</td><td>signum(x) returns the signum function of the argument x</td></tr><tr><td>sin</td><td>sin(x) returns the trigonometric sine of an angle x</td></tr><tr><td>sinh</td><td>sinh(x) returns the hyperbolic sine of x</td></tr><tr><td>sqrt</td><td>sqrt(x) returns the correctly rounded positive square root of x</td></tr><tr><td>tan</td><td>tan(x) returns the trigonometric tangent of an angle x</td></tr><tr><td>tanh</td><td>tanh(x) returns the hyperbolic tangent of x</td></tr><tr><td>todegrees</td><td>todegrees(x) converts an angle measured in radians to an approximately equivalent angle measured in degrees</td></tr><tr><td>toradians</td><td>toradians(x) converts an angle measured in degrees to an approximately equivalent angle measured in radians</td></tr><tr><td>ulp</td><td>ulp(x) returns the size of an ulp of the argument x</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="array-functions">Array functions<a href="#array-functions" class="hash-link" aria-label="Direct link to Array functions" title="Direct link to Array functions">​</a></h2><table><thead><tr><th>function</th><th>description</th></tr></thead><tbody><tr><td>array(expr1,expr ...)</td><td>constructs an array from the expression arguments, using the type of the first argument as the output array type</td></tr><tr><td>array_length(arr)</td><td>returns length of array expression</td></tr><tr><td>array_offset(arr,long)</td><td>returns the array element at the 0 based index supplied, or null for an out of range index</td></tr><tr><td>array_ordinal(arr,long)</td><td>returns the array element at the 1 based index supplied, or null for an out of range index</td></tr><tr><td>array_contains(arr,expr)</td><td>returns 1 if the array contains the element specified by expr, or contains all elements specified by expr if expr is an array, else 0</td></tr><tr><td>array_overlap(arr1,arr2)</td><td>returns 1 if arr1 and arr2 have any elements in common, else 0</td></tr><tr><td>array_offset_of(arr,expr)</td><td>returns the 0 based index of the first occurrence of expr in the array, or <code>-1</code> or <code>null</code> if <code>druid.generic.useDefaultValueForNull=false</code>if no matching elements exist in the array.</td></tr><tr><td>array_ordinal_of(arr,expr)</td><td>returns the 1 based index of the first occurrence of expr in the array, or <code>-1</code> or <code>null</code> if <code>druid.generic.useDefaultValueForNull=false</code> if no matching elements exist in the array.</td></tr><tr><td>array_prepend(expr,arr)</td><td>adds expr to arr at the beginning, the resulting array type determined by the type of the array</td></tr><tr><td>array_append(arr,expr)</td><td>appends expr to arr, the resulting array type determined by the type of the first array</td></tr><tr><td>array_concat(arr1,arr2)</td><td>concatenates 2 arrays, the resulting array type determined by the type of the first array</td></tr><tr><td>array_set_add(arr,expr)</td><td>adds expr to arr and converts the array to a new array composed of the unique set of elements. The resulting array type determined by the type of the array</td></tr><tr><td>array_set_add_all(arr1,arr2)</td><td>combines the unique set of elements of 2 arrays, the resulting array type determined by the type of the first array</td></tr><tr><td>array_slice(arr,start,end)</td><td>return the subarray of arr from the 0 based index start(inclusive) to end(exclusive), or <code>null</code>, if start is less than 0, greater than length of arr or less than end</td></tr><tr><td>array_to_string(arr,str)</td><td>joins all elements of arr by the delimiter specified by str</td></tr><tr><td>string_to_array(str1,str2)</td><td>splits str1 into an array on the delimiter specified by str2</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="apply-functions">Apply functions<a href="#apply-functions" class="hash-link" aria-label="Direct link to Apply functions" title="Direct link to Apply functions">​</a></h2><p>Apply functions allow for special &#x27;lambda&#x27; expressions to be defined and applied to array inputs to enable free-form transformations.</p><table><thead><tr><th>function</th><th>description</th></tr></thead><tbody><tr><td>map(lambda,arr)</td><td>applies a transform specified by a single argument lambda expression to all elements of arr, returning a new array</td></tr><tr><td>cartesian_map(lambda,arr1,arr2,...)</td><td>applies a transform specified by a multi argument lambda expression to all elements of the Cartesian product of all input arrays, returning a new array; the number of lambda arguments and array inputs must be the same</td></tr><tr><td>filter(lambda,arr)</td><td>filters arr by a single argument lambda, returning a new array with all matching elements, or null if no elements match</td></tr><tr><td>fold(lambda,arr,acc)</td><td>folds a 2 argument lambda across arr using acc as the initial input value. The first argument of the lambda is the array element and the second the accumulator, returning a single accumulated value.</td></tr><tr><td>cartesian_fold(lambda,arr1,arr2,...,acc)</td><td>folds a multi argument lambda across the Cartesian product of all input arrays using acc as the initial input value. The first arguments of the lambda are the array elements of each array and the last is the accumulator, returning a single accumulated value.</td></tr><tr><td>any(lambda,arr)</td><td>returns 1 if any element in the array matches the lambda expression, else 0</td></tr><tr><td>all(lambda,arr)</td><td>returns 1 if all elements in the array matches the lambda expression, else 0</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="lambda-expressions-syntax">Lambda expressions syntax<a href="#lambda-expressions-syntax" class="hash-link" aria-label="Direct link to Lambda expressions syntax" title="Direct link to Lambda expressions syntax">​</a></h3><p>Lambda expressions are a sort of function definition, where new identifiers can be defined and passed as input to the expression body</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">(identifier1 ...) -&gt; expr</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>e.g.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">(x, y) -&gt; x + y </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The identifier arguments of a lambda expression correspond to the elements of the array it is being applied to. For example:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">map((x) -&gt; x + 1, some_multi_value_column)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>will map each element of <code>some_multi_value_column</code> to the identifier <code>x</code> so that the lambda expression body can be evaluated for each <code>x</code>. The scoping rules are that lambda arguments will override identifiers which are defined externally from the lambda expression body. Using the same example:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">map((x) -&gt; x + 1, x)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>in this case, the <code>x</code> when evaluating <code>x + 1</code> is the lambda argument, thus an element of the multi-valued column <code>x</code>, rather than the column <code>x</code> itself.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="json-functions">JSON functions<a href="#json-functions" class="hash-link" aria-label="Direct link to JSON functions" title="Direct link to JSON functions">​</a></h2><p>JSON functions provide facilities to extract, transform, and create <code>COMPLEX&lt;json&gt;</code> values. </p><table><thead><tr><th>function</th><th>description</th></tr></thead><tbody><tr><td>json_value(expr, path<!-- -->[, type]<!-- -->)</td><td>Extract a Druid literal (<code>STRING</code>, <code>LONG</code>, <code>DOUBLE</code>) value from <code>expr</code> using JSONPath syntax of <code>path</code>. The optional <code>type</code> argument can be set to <code>&#x27;LONG&#x27;</code>,<code>&#x27;DOUBLE&#x27;</code> or <code>&#x27;STRING&#x27;</code> to cast values to that type.</td></tr><tr><td>json_query(expr, path)</td><td>Extract a <code>COMPLEX&lt;json&gt;</code> value from <code>expr</code> using JSONPath syntax of <code>path</code></td></tr><tr><td>json_object(expr1, expr2<!-- -->[, expr3, expr4 ...]<!-- -->)</td><td>Construct a <code>COMPLEX&lt;json&gt;</code> with alternating &#x27;key&#x27; and &#x27;value&#x27; arguments</td></tr><tr><td>parse_json(expr)</td><td>Deserialize a JSON <code>STRING</code> into a <code>COMPLEX&lt;json&gt;</code>. If the input is not a <code>STRING</code> or it is invalid JSON, this function will result in an error.</td></tr><tr><td>try_parse_json(expr)</td><td>Deserialize a JSON <code>STRING</code> into a <code>COMPLEX&lt;json&gt;</code>. If the input is not a <code>STRING</code> or it is invalid JSON, this function will result in a <code>NULL</code> value.</td></tr><tr><td>to_json_string(expr)</td><td>Convert <code>expr</code> into a JSON <code>STRING</code> value</td></tr><tr><td>json_keys(expr, path)</td><td>Get array of field names from <code>expr</code> at the specified JSONPath <code>path</code>, or null if the data does not exist or have any fields</td></tr><tr><td>json_paths(expr)</td><td>Get array of all JSONPath paths available from <code>expr</code></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="jsonpath-syntax">JSONPath syntax<a href="#jsonpath-syntax" class="hash-link" aria-label="Direct link to JSONPath syntax" title="Direct link to JSONPath syntax">​</a></h3><p>Druid supports a small, simplified subset of the <a href="https://github.com/json-path/JsonPath/blob/master/README.md" target="_blank" rel="noopener noreferrer">JSONPath syntax</a> operators, primarily limited to extracting individual values from nested data structures.</p><table><thead><tr><th>Operator</th><th>Description</th></tr></thead><tbody><tr><td><code>$</code></td><td>Root element. All JSONPath expressions start with this operator.</td></tr><tr><td><code>.&lt;name&gt;</code></td><td>Child element in dot notation.</td></tr><tr><td><code>[&#x27;&lt;name&gt;&#x27;]</code></td><td>Child element in bracket notation.</td></tr><tr><td><code>[&lt;number&gt;]</code></td><td>Array index.</td></tr></tbody></table><p>See <a href="/docs/latest/querying/sql-json-functions#jsonpath-syntax">SQL JSON documentation</a> for examples and <a href="/docs/latest/querying/nested-columns">Nested columns</a> for more information on ingesting and storing nested data.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="reduction-functions">Reduction functions<a href="#reduction-functions" class="hash-link" aria-label="Direct link to Reduction functions" title="Direct link to Reduction functions">​</a></h2><p>Reduction functions operate on zero or more expressions and return a single expression. If no expressions are passed as
arguments, then the result is <code>NULL</code>. The expressions must all be convertible to a common data type, which will be the
type of the result:</p><ul><li>If all arguments are <code>NULL</code>, the result is <code>NULL</code>. Otherwise, <code>NULL</code> arguments are ignored.</li><li>If the arguments comprise a mix of numbers and strings, the arguments are interpreted as strings.</li><li>If all arguments are integer numbers, the arguments are interpreted as longs.</li><li>If all arguments are numbers and at least one argument is a double, the arguments are interpreted as doubles. </li></ul><table><thead><tr><th>function</th><th>description</th></tr></thead><tbody><tr><td>greatest(<!-- -->[expr1, ...]<!-- -->)</td><td>Evaluates zero or more expressions and returns the maximum value based on comparisons as described above.</td></tr><tr><td>least(<!-- -->[expr1, ...]<!-- -->)</td><td>Evaluates zero or more expressions and returns the minimum value based on comparisons as described above.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="ip-address-functions">IP address functions<a href="#ip-address-functions" class="hash-link" aria-label="Direct link to IP address functions" title="Direct link to IP address functions">​</a></h2><p>For the IPv4 address functions, the <code>address</code> argument accepts either an IPv4 dotted-decimal string (e.g., &quot;192.168.0.1&quot;) or an IP address represented as a long (e.g., 3232235521). Format the <code>subnet</code> argument as an IPv4 address subnet in CIDR notation (e.g., &quot;192.168.0.0/16&quot;).</p><table><thead><tr><th>function</th><th>description</th></tr></thead><tbody><tr><td>ipv4_match(address, subnet)</td><td>Returns 1 if the <code>address</code> belongs to the <code>subnet</code> literal, else 0. If <code>address</code> is not a valid IPv4 address, then 0 is returned. This function is more efficient if <code>address</code> is a long instead of a string.</td></tr><tr><td>ipv4_parse(address)</td><td>Parses <code>address</code> into an IPv4 address stored as a long. Returns <code>address</code> if it is already a valid IPv4 integer address.  Returns null if <code>address</code> cannot be represented as an IPv4 address.</td></tr><tr><td>ipv4_stringify(address)</td><td>Converts <code>address</code> into an IPv4 address dotted-decimal string. Returns <code>address</code> if it is already a valid IPv4 dotted-decimal string. Returns null if <code>address</code> cannot be represented as an IPv4 address.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="other-functions">Other functions<a href="#other-functions" class="hash-link" aria-label="Direct link to Other functions" title="Direct link to Other functions">​</a></h2><table><thead><tr><th>function</th><th>description</th></tr></thead><tbody><tr><td>human_readable_binary_byte_format(value<!-- -->[, precision]<!-- -->)</td><td>Format a number in human-readable <a href="https://en.wikipedia.org/wiki/Binary_prefix" target="_blank" rel="noopener noreferrer">IEC</a> format. <code>precision</code> must be in the range of <!-- -->[0,3]<!-- --> (default: 2). For example:<li> human_readable_binary_byte_format(1048576) returns <code>1.00 MiB</code></li><li>human_readable_binary_byte_format(1048576, 3) returns <code>1.000 MiB</code></li></td></tr><tr><td>human_readable_decimal_byte_format(value<!-- -->[, precision]<!-- -->)</td><td>Format a number in human-readable <a href="https://en.wikipedia.org/wiki/Binary_prefix" target="_blank" rel="noopener noreferrer">SI</a> format. <code>precision</code> must be in the range of <!-- -->[0,3]<!-- --> (default: 2). For example:<li> human_readable_decimal_byte_format(1000000) returns <code>1.00 MB</code></li><li>human_readable_decimal_byte_format(1000000, 3) returns <code>1.000 MB</code></li></td></tr><tr><td>human_readable_decimal_format(value<!-- -->[, precision]<!-- -->)</td><td>Format a number in human-readable SI format. <code>precision</code> must be in the range of <!-- -->[0,3]<!-- --> (default: 2). For example:<li>human_readable_decimal_format(1000000) returns <code>1.00 M</code></li><li>human_readable_decimal_format(1000000, 3) returns <code>1.000 M</code></li></td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="vectorization-support">Vectorization support<a href="#vectorization-support" class="hash-link" aria-label="Direct link to Vectorization support" title="Direct link to Vectorization support">​</a></h2><p>A number of expressions support <a href="/docs/latest/querying/query-context#vectorization-parameters">&#x27;vectorized&#x27; query engines</a></p><p>Supported features:</p><ul><li>constants and identifiers are supported for any column type</li><li><code>cast</code> is supported for numeric and string types</li><li>math operators: <code>+</code>,<code>-</code>,<code>*</code>,<code>/</code>,<code>%</code>,<code>^</code> are supported for numeric types</li><li>logical operators: <code>!</code>, <code>&amp;&amp;</code>, <code>||</code>, are supported for string and numeric types (if <code>druid.expressions.useStrictBooleans=true</code>)</li><li>comparison operators: <code>=</code>, <code>!=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>&lt;</code>, <code>&lt;=</code> are supported for string and numeric types</li><li>math functions: <code>abs</code>, <code>acos</code>, <code>asin</code>, <code>atan</code>, <code>cbrt</code>, <code>ceil</code>, <code>cos</code>, <code>cosh</code>, <code>cot</code>, <code>exp</code>, <code>expm1</code>, <code>floor</code>, <code>getExponent</code>, <code>log</code>, <code>log10</code>, <code>log1p</code>, <code>nextUp</code>, <code>rint</code>, <code>signum</code>, <code>sin</code>, <code>sinh</code>, <code>sqrt</code>, <code>tan</code>, <code>tanh</code>, <code>toDegrees</code>, <code>toRadians</code>, <code>ulp</code>, <code>atan2</code>, <code>copySign</code>, <code>div</code>, <code>hypot</code>, <code>max</code>, <code>min</code>, <code>nextAfter</code>,  <code>pow</code>, <code>remainder</code>, <code>scalb</code> are supported for numeric types</li><li>time functions: <code>timestamp_floor</code> (with constant granularity argument) is supported for numeric types</li><li>boolean functions: <code>isnull</code>, <code>notnull</code> are supported for string and numeric types</li><li>conditional functions: <code>nvl</code> is supported for string and numeric types</li><li>string functions: the concatenation operator (<code>+</code>) and <code>concat</code> function are supported for string and numeric types</li><li>other: <code>parse_long</code> is supported for numeric and string types</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="logical-operator-modes">Logical operator modes<a href="#logical-operator-modes" class="hash-link" aria-label="Direct link to Logical operator modes" title="Direct link to Logical operator modes">​</a></h2><p>Prior to the 0.23 release of Apache Druid, boolean function expressions have inconsistent handling of true and false values, and the logical &#x27;and&#x27; and &#x27;or&#x27; operators behave in a manner that is incompatible with SQL, even if SQL compatible null handling mode (<code>druid.generic.useDefaultValueForNull=false</code>) is enabled. Logical operators also pass through their input values similar to many scripting languages, and treat <code>null</code> as false, which can result in some rather strange behavior. Other boolean operations, such as comparisons and equality, retain their input types (e.g. <code>DOUBLE</code> comparison would produce <code>1.0</code> for true and <code>0.0</code> for false), while many other boolean functions strictly produce <code>LONG</code> typed values of <code>1</code> for true and <code>0</code> for false. </p><p>After 0.23, while the inconsistent legacy behavior is still the default, it can be optionally be changed by setting <code>druid.expressions.useStrictBooleans=true</code>, so that these operations will allow correctly treating <code>null</code> values as &quot;unknown&quot; for SQL compatible behavior, and <em>all boolean output functions</em> will output &#x27;homogeneous&#x27; <code>LONG</code> typed boolean values of <code>1</code> for <code>true</code> and <code>0</code> for <code>false</code>. Additionally, </p><p>For the &quot;or&quot; operator:</p><ul><li><code>true || null</code>, <code>null || true</code>, -&gt; <code>1</code></li><li><code>false || null</code>, <code>null || false</code>, <code>null || null</code>-&gt; <code>null</code></li></ul><p>For the &quot;and&quot; operator:</p><ul><li><code>true &amp;&amp; null</code>, <code>null &amp;&amp; true</code>, <code>null &amp;&amp; null</code> -&gt; <code>null</code></li><li><code>false &amp;&amp; null</code>, <code>null &amp;&amp; false</code> -&gt; <code>0</code></li></ul><p>Druid currently still retains implicit conversion of <code>LONG</code>, <code>DOUBLE</code>, and <code>STRING</code> types into boolean values in both modes: </p><ul><li><code>LONG</code> or <code>DOUBLE</code> - any value greater than 0 is considered <code>true</code>, else <code>false</code></li><li><code>STRING</code> - the value <code>&#x27;true&#x27;</code> (case insensitive) is considered <code>true</code>, everything else is <code>false</code>. </li></ul><p>Legacy behavior:</p><ul><li><code>100 &amp;&amp; 11</code> -&gt; <code>11</code></li><li><code>0.7 || 0.3</code> -&gt; <code>0.3</code></li><li><code>100 &amp;&amp; 0</code> -&gt; <code>0</code></li><li><code>&#x27;troo&#x27; &amp;&amp; &#x27;true&#x27;</code> -&gt; <code>&#x27;troo&#x27;</code></li><li><code>&#x27;troo&#x27; || &#x27;true&#x27;</code> -&gt; <code>&#x27;true&#x27;</code></li></ul><p>SQL compatible behavior:</p><ul><li><code>100 &amp;&amp; 11</code> -&gt; <code>1</code></li><li><code>0.7 || 0.3</code> -&gt; <code>1</code></li><li><code>100 &amp;&amp; 0</code> -&gt; <code>0</code></li><li><code>&#x27;troo&#x27; &amp;&amp; &#x27;true&#x27;</code> -&gt; <code>0</code></li><li><code>&#x27;troo&#x27; || &#x27;true&#x27;</code> -&gt; <code>1</code></li></ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#general-functions" class="table-of-contents__link toc-highlight">General functions</a></li><li><a href="#string-functions" class="table-of-contents__link toc-highlight">String functions</a></li><li><a href="#time-functions" class="table-of-contents__link toc-highlight">Time functions</a></li><li><a href="#math-functions" class="table-of-contents__link toc-highlight">Math functions</a></li><li><a href="#array-functions" class="table-of-contents__link toc-highlight">Array functions</a></li><li><a href="#apply-functions" class="table-of-contents__link toc-highlight">Apply functions</a><ul><li><a href="#lambda-expressions-syntax" class="table-of-contents__link toc-highlight">Lambda expressions syntax</a></li></ul></li><li><a href="#json-functions" class="table-of-contents__link toc-highlight">JSON functions</a><ul><li><a href="#jsonpath-syntax" class="table-of-contents__link toc-highlight">JSONPath syntax</a></li></ul></li><li><a href="#reduction-functions" class="table-of-contents__link toc-highlight">Reduction functions</a></li><li><a href="#ip-address-functions" class="table-of-contents__link toc-highlight">IP address functions</a></li><li><a href="#other-functions" class="table-of-contents__link toc-highlight">Other functions</a></li><li><a href="#vectorization-support" class="table-of-contents__link toc-highlight">Vectorization support</a></li><li><a href="#logical-operator-modes" class="table-of-contents__link toc-highlight">Logical operator modes</a></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></div><div class="footer__copyright">Copyright © 2023 Apache Software Foundation. Except where otherwise noted, licensed under CC BY-SA 4.0. 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></div></footer></div>
<script src="/assets/js/runtime~main.19a75589.js"></script>
<script src="/assets/js/main.20dca3d5.js"></script>
</body>
</html>